OpenPie 拓数派

数仓虚拟化技术:PieCloudDB Database 通过中国信通院 2023 「可信数据库」性能评测的强力支撑

2023-07-13

“可信数据库”是国内首个数据库的评测体系,被业界广泛认可为产品能力重要的衡量标准之一。PieCloudDB Database 在该评测中展现出卓越的数据处理速度、稳定性和可扩展性,为用户提供了强大的数据分析和查询能力。


6 月 15 ~ 16 日,中国信通院 2023 上半年“可信数据库”评测专家评审会圆满结束,经过现场测试、产品资料审核、测试报告审核、质询与答疑、集中评议等多个评审环节,共计 28 家企业的 33 款产品通过本次评审。拓数派首款数据计算引擎 PieCloudDB 云原生虚拟数仓凭借优异的能力表现通过评测,获得分布式分析型数据库性能测试证书。



云原生虚拟数仓 PieCloudDB 的性能创新之路


PieCloudDB 的卓越性能源于其创新的架构和先进的技术设计。PieCloudDB 实现了云上的存算分离、数仓虚拟化以及高性能的存储和计算能力,为用户提供了高效、可靠的海量数据处理、快速查询和分析的解决方案。


对于一款云原生虚拟数仓产品而言,性能是产品成功与否的一项非常重要的指标。PieCloudDB 团队开发了很多创新性技术,使得 PieCloudDB 不但具有云原生产品的灵活性和高可扩展性,而且在数据分析性能上也毫不逊色。


1 存储优化


PieCloudDB 在云上将元数据与用户数据分离,用户数据存放在公有云平台提供的对象存储(例如AWS S3),这样可以极大降低用户的数据存储成本。但是 S3 等对象存储存在局限性,例如读取数据的网络延时较大,不支持文件的随机读写等等。PieCloudDB 针对对象存储的优缺点重新设计了存储引擎简墨(JANM)。简墨的名字出自于“竹简墨书”,纵向的竹片被横向的连接起来,形成竹简,形象地说明了 PieCloudDB 行列混存的存储模式。简墨的独特设计既能利用 S3 的优势又通过一些措施克服了访问延迟和随机读写的劣势。


PieCloudDB 团队针对 OLAP 场景和云原生场景的特点对简墨进行了大量的优化。例如在数据块级别进行统计信息收集,在查询时可以利用统计信息实现 Data Skipping 和查询优化;针对 SUM、COUNT 等聚集函数进行预计算等;优化存储格式以实现透明数据加密(TDE)、高效数据压缩、Cache 友好等特性。


除了以上特性之外,简墨在设计过程中也充分考虑了如何利用现代 CPU 和 GPU 的架构特点,进一步支持 SIMD、SIMT 指令集来数据访问提高效率。


2 数据访问优化


简墨可以说是一款云原生数据存储引擎,对公有云平台的对象存储进行了大量的优化。但是在数据访问过程中,网络延迟一直是一个无法忽视的因素。如何提高数据的访问速度,这也是 PieCloudDB 架构设计过程中解决的一个重要问题。


PieCloudDB 针对数据访问加速做了大量的工作:


2.1 数据缓存


使用缓存是加速数据访问的常用措施,PieCloudDB 实现了本地缓存,更加高效的分布式缓存也在规划中;此外,PieCloudDB 还针对数据的访问频率对缓存实现了“冷”、“温”、“热”的分级管理。 


2.2 使用一致性哈希算法提高缓存命中率


PieCloudDB 实现了本地缓存,因此可能会发生跨节点读取缓存数据情况,为了避免跨节点的缓存读写,PieCloudDB 实现了一致性 Hash 存储缓存文件,提高缓冲的命中率。


2.3 使用 Data Skipping 精确加载数据


Data Skipping(Block Skipping)可以跟进预先计算数据统计信息从而判断数据块中是否有需要的数据,从而跳过不包含所需数据的数据块。


2.4 S3 访问通用优化


并行化读取数据、预读取数据、异步读取数据等。


3 强大的查询优化器


如果说高效的数据访问是硬币的一面,那么强大的查询优化器则是硬币的另一面。对于一款云原生数仓产品来说,强大的查询优化器也是产品成功的一个重要方面。如何把用户复杂的 OLAP 场景的复杂 SQL 转换成高效的查询计划,是查询优化器的首要任务。


PieCloudDB 团队打造了分布式查询优化器”达奇”,对用户的 SQL 查询进行全链路优化。PieCloudDB 查询优化的处理过程一般被分为四个阶段:预处理阶段,扫描/连接优化阶段,扫描/连接之外的优化阶段,后处理阶段。


3.1 预处理阶段


在预处理阶段,化器「达奇」会通过逻辑上的等价变化,将查询树转换为更加简单高效的等式,除了常见的谓词下推之外,达奇优化器添加了大量的 SQL 语句改写,例如:


  • 把 IN, EXISTS 等类型的子查询转换为半连接
  • 把 FROM 关键字后面的子查询提升为 JOIN
  • 把外连接(OUTER JOIN)转换为内连接(INNER JOIN)/反连接(ANTI JOIN)
  • 分发约束条件
  • 构建等价类
  • 收集外连接信息
  • 消除无用连接
  • 简化表达式


3.2 扫描连接阶段


在这一阶段,优化器「达奇」的处理主要可以分为两步。首先会为基表生成扫描路径,并计算扫描路径的代价和结果集大小,从而获得后面连接操作的代价。第二个步骤中,「达奇」会搜索整个连接顺序空间,为连接操作生成最优的连接路径。这一步骤的复杂度非常高,PieCloudDB 采用了动态规划和遗传算法两个算法来进行处理,并根据 GUC 值进行算法选择。如果查询语句中涉及外连接,考虑到外连接对连接顺序的限制,无法像内连接那样随意切换连接顺序,会加大这一步骤的复杂度。


3.3 扫描/连接之外的优化阶段


这一阶段,「达奇」会先处理 GROUP BY、聚集、窗口函数、DISTINCT,再对集合操作进行处理,最后再处理 ORDER BY。以上的每一步操作都会产生一个或多个路径,「达奇」会对这些路径根据代价大小进行筛选,并为筛选出的路径添加 LockRows,Limit,ModifyTable。


3.4 后处理阶段


经过前面三个阶段,「达奇」已经生成了一个大概的查询计划。在后处理阶段,「达奇」会把选出的最优路径转换为查询计划,并对最优计划进行一些调整。


值得一提的是,拓数派凭借在云原生虚拟数仓的突出成果和优异表现,参与了于 2023 可信数据库发展大会上发布的《数据库发展研究报告(2023)》的编写工作,并成功入选了《中国数据库产业图谱(2023)》。



数据库是复杂的系统软件,分布式数据库则更是让软件的复杂性“更上一层楼”,因此构建高效的分布式云原生数据库可以说是难上加难。PieCloudDB 获得的成绩充分说明了业界对 PieCloudDB 性能的认可。



相关博文

暂无相关推荐