10月24日程序员节,拓数派(Openpie)发布了云原生数据库PieCloudDB 。PieCloudDB 以云计算架构为设计基础, 实现云上存算分离,打造了“元数据-计算-存储”分离三层架构。 在计算层,PieCloudDB 设计了高效的查询优化器和执行器,实现了预计算、聚集下推等多种查询优化策略,保证查询的高效运行,减少用户等待时间。此外,PieCloudDB 的分区表技术可以通过一些策略把大表分拆成若干个小表,分区表可以使得查询的性能大幅提升。
本文整理自拓数派「OpenPie」2022发布会的演讲,将为大家着重介绍PieCloudDB Database 的优化器模块。
PieCloudDB 优化器是一个基于eMPP架构的云原生分布式优化器,可以为海量数据集上的复杂OLAP查询提供最优的查询计划。 它的特点可以用三个关键词来概括:
- 分布式优化器
- 处理复杂OLAP查询
- 云原生优化器
分布式优化器
首先我们来看一下第一点:分布式优化器。PieCloudDB 是一款分布式数据库,在进行优化器设计时也充分考虑了PieCloudDB 分布式架构的特点, 为分布式架构下的查询语句生成分布式的查询计划。这些分布式的查询计划,会被进一步分为多个更小的计划单元。这些计划单元被分发到不同的计算节点中并行执行,计算节点之间通过网络高速互联,从而利用分布式的优势以最好的性能产生最终结果。
处理复杂OLAP查询
第二个关键词是处理复杂OLAP查询。 PieClouldDB 作为一款能够处理PB级海量数据的分析型数据库,其优化器擅长处理复杂的分析型查询,主要但不限于以下几点:
- 搜索多表连接的最优顺序
当查询中有多个表进行连接时,搜索其最优的连接顺序是一个公认的NP-hard问题。
PieCloudDB优化器利用动态规划算法和有效的分枝裁剪技术,自底向上逐层构建出多表连接的最终结果,可以在有限时间内找到最优的连接顺序。
- 多阶段聚集
聚集函数是分析型查询中常见的操作。PieCloudDB优化器根据分布式的特点,会产生多阶段的聚集,每个阶段的聚集操作都可以在多个计算节点之间并行计算,达到最好的性能。
- 分区表的静态裁剪和动态裁剪
分区表是分析型查询中常见的表结构,PieCloudDB优化器可以利用分区规则,在静态产生查询阶段裁剪掉不需要的分区,同时在动态执行阶段,动态裁剪掉不需要的分区,从而可以有效的减少数据的扫描和计算
- 相关子查询的提升转换
PieCloudDB优化器会最大限度的把子查询提升转换为连接操作,而对于连接操作,PieCloudDB优化器有大量的优化技术,从而把低效的子查询以高效的方式处理。
- 通用表表达式(Common Table Expression,CTE)的优化
对于通用表表达式(Common Table Expression,CTE)和递归CTE,PieCloudDB优化器可以使其在不同进程间共享结果,使得分布式下的CTE语句可以高效执行。
云原生优化器
PieCloudDB作为一款云原生数据库,其优化器也是一款专为云平台打造的云原生优化器。PieCloudDB 优化器针对云环境的特性,提供了更多高阶的优化,包括聚集下推、预计算、文件剪裁等。
- 聚集下推
聚集下推是指通过把聚集操作下推到连接操作之前去执行,可以极大的减少连接操作需要处理的数据量,使得查询性能显著提升。根据我们的测试,在很多场景下,聚集下推会取得百倍或千倍的性能提升
- 预计算
预计算。根据对象存储的特性,为每一个数据块预先计算好块内数据的聚集值。通过把聚集操作下推到对数据表的扫描之上,可以直接利用数据块内预计算的结果,这样就避免了对数据块内所有数据的扫描操作以及块内数据的聚集计算操作,可以极大的提高查询的性能。
- 文件裁剪
文件裁剪。利用每个数据块内预计算的结果,结合查询语句中的过滤条件,可以提前过滤掉不符合条件的数据块,从而减少对数据的扫描和后续的计算。
如果有一款好的优化器,一个分析型数据库产品就成功了一半。PieCloudDB Database将在优化器模块不断前行,为用户提供更多优化功能,提升分析性能。
关于PieCloudDB
PieCloudDB是一款全新eMPP分布式技术云原生分析型数据库。通过重新打造云上的数据库内核,突破了PC时代计算平台的限制,实现云上存算分离。旨在为企业提供包含实时处理、秒级扩缩容、弹性计算、集成数据分析等强大功能的云上数据存储和计算引擎。在云上,计算资源可按需启动,对计算模型以更低成本提供指数级的存储和计算资源,帮助企业的业务模型发现新洞察或者提高精准度,从而建立竞争壁垒。目前,PieCloudDB在金融,医疗,汽车及制造等行业积累了一批种子用户,产品备受业界及用户的高度关注及认可。
标签:OpenPie,Database,PieCloudDB,聚集,下推,查询,优化,分布式 From: https://blog.51cto.com/u_16396625/8654061