《MatrixOne: HTAP 数据库中的 OLAP 设.pdf》由会员分享,可在线阅读,更多相关《MatrixOne: HTAP 数据库中的 OLAP 设.pdf(40页珍藏版)》请在三个皮匠报告上搜索。
1、DataFunSummitDataFunSummit#20232023MatrixOneMatrixOne:HTAPHTAP数据库数据库中的中的OLAPOLAP设计设计龙冉 矩阵起源 研发工程师MatrixOne 简介矩阵起源是一家数据库创业公司,致力于打造开源超融合异构数据库MatrixOne,MatrixOne是一款面向未来的超融合异构云原生数据库管理系统。通过全新设计和研发的统一分布式数据库引擎,能够同时灵活支持OLTP、OLAP、Streaming等不同工作负载的数据管理和应用,用户可以在公有云、自建数据中心和边缘节点上无缝部署和运行。Github:https:/ MatrixOne
2、整体整体架构架构MatrixOne OLAP MatrixOne OLAP 引擎引擎TPC-H TPC-H 测试测试结果结果目录目录 CONTENTCONTENTDataFunSummitDataFunSummit#202320230101MatrixOneMatrixOne整体架构整体架构OverviewFile serviceLog serviceData nodeComputation nodeHA keeperRead dataTAE(Transactional Analytical Engine)DataFunSummitDataFunSummit#202320230202MOMO的
3、的OLAPOLAP计算引擎计算引擎OLAP需要具备的SQL能力 多表join 子查询 窗口函数 CTE/Recursive CTE UDF 计算引擎构成ParserPlannerOptimizerExecutionAST TreeLogical NodePhysical OperatorLogical Node1.Bind(Algebrizer)2.子查询消除RBOCBOPipeline Build子查询展开 TPC-H Q2,4,11,16,17,18,20,21,22子查询展开 select s.name,e.coursefrom students s,exams ewhere s.id=
4、e.sid ande.grade=(select min(e2.grade)from exams e2where s.id=e2.sid)子查询展开(HyPer)展开前展开前展开后展开后子查询展开(MatrixOne)展开前展开前 select s.name,e.coursefrom students s,exams ewhere s.id=e.sid ande.grade=(select min(e2.grade)from exams e2where s.id=e2.sid)展开后展开后 select s.name,e.coursefrom students s,exams e,(selec
5、t sid,min(e2.grade)as min_grade from exams e2 group by e2.sid)e3where s.id=e.sid ande.grade=e3.min_grade and s.id=e3.sidOptimizer 减少IO 列裁剪 谓词下推 谓词推断:q7 q19 Runtime filter:q18Optimizer 减少计算 Join order:q2 q5 q7 q8 q9 q21 聚合下推/上拉:q13 q17 Groupjoin谓词推断(TPC-H Q19)Join order(改进的贪心法)Join order(改进的贪心法)确定事实表
6、与维度表Join order(改进的贪心法)确定事实表与维度表 各事实表与其维度表join成子树Join order(改进的贪心法)确定事实表与维度表 各事实表与其维度表join成子树 先与过滤性好的维度表joinJoin order(改进的贪心法)确定事实表与维度表 各事实表与其维度表join成子树 先与过滤性好的维度表join 子树之间用经典Join order算法Join order(改进的贪心法)TPC-H Q5lineitemsuppliercustomerregionordersnationTPC-H Q5lineitemsuppliercustomerregionordersna
7、tion谓词推断+Join orderlineitemsuppliercustomerregionordersnation谓词推断+Join orderlineitemsuppliercustomerregionordersnationExecution:PipelinePush模型基于不同的Operator组成流水线Pipeline自底向上Push调度,以数据为中心而非Operator为中心Logical Plan 后序遍历即可得到基础Pipeline结构Morsel-Driven Parallelism 以Task Queue为核心调度Pipeline,每个数据块的单位称为Morsel一个
8、任务执行结束,通知调度器将后续任务加入队列CPU空闲时,可以从其他CPU 偷取任务执行(Work Stealing)Execution:PipelineSELECT*FROM S JOIN R USING AJOIN T USING B;Execution:physical operatorsPipelineConnectorDispatchAggregateGroupLeftJoinMarkJoinSemiJoinSourceAntiJoinLoopJoinInnerJoinProjectionMergeMergeGroupMergeLimitMergeOffsetMergeOrderMer
9、geTopHashBuildRestrictDataFunSummitDataFunSummit#202320230303TPC-HTPC-H性能测试结果性能测试结果TPC-H 100GTPC-H 100GSFSFxsxs cold(0316)cold(0316)SFSFxsxs hot(0316)hot(0316)2023/6/8 eks2023/6/8 ekscoldcold29f1e8329f1e832023/6/8 eks2023/6/8 ekshothot29f1e8329f1e83Q1121067.81410.75Q24.9318.2981.75Q35.44.536.46210.7
10、3Q45.1517.59410.82Q56.46.113.8177.21Q60.490.541.7661.21Q74.44.110.85810.36Q86.2511.4285.86Q9121240.38537.1Q10109.420.38218.46Q112.51.93.7241.3Q123.12.812.295.39Q13171520.64720.83Q140.920.867.047.89Q152.71.63.9364.34Q163.53.26.5045.29Q173.93.63.4733.41Q18282516.41312.77Q195.73.58.0025.3Q203.22.92.314
11、2.55Q21121234.4631.92Q222.32.13.4873.8233.738233.738151.71 151.71 134.10 134.10 361.09 361.09 219.06 219.06 感谢观看感谢观看欢迎加入欢迎加入 MatrixOneMatrixOne Beta Beta ProgramProgram 用户体验计划用户体验计划MatrixOne Beta Program 是矩阵起源全新推出的,与客户、用户一起持续提升 MatrixOne 产品和性能体验优化的计划。加入 MatrixOne Beta ProgramStep1:扫描下方小程序码提交注册Step2:
12、MO架构师将会通过邮件的方式进行初步联系和沟通Step3:加入 Beta Program 社区,开始您和 MatrixOne 的旅程新功能内测权益新功能内测权益产品设计参与权益产品设计参与权益新功能本地环境优先测试权益新功能本地环境优先测试权益开发过程的直接发言权益开发过程的直接发言权益专家端到端专业支持权益专家端到端专业支持权益FEBMARAPRMAYJUNJULMatrixOne产品路线Beta Program2023年活动计划MOE v0.7MOC AlphaMOE v0.9线上研讨会Beta Program 发布Private Beta(仅邀请)Public Beta(公开招募)MO GA线下客户交流沙龙线下客户交流沙龙线下客户交流沙龙行业合作伙伴沙龙产品发布会行业合作伙伴沙龙MOE 加入加入 MatrixOneMatrixOne 社区群,社区群,获取获取 PPT PPT