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