杭州拓数派科技倒退有限公司(OpenPie)的旗舰产品 PieCloudDB Database 是一款云原生分布式虚构数仓。PieCloudDB 通过多种创新性技术将物理数仓整合到云原生数据计算平台。PieCloudDB 能够动态创建虚构数仓,按需灵便计算,从而突破数据孤岛,撑持更大模型所需的数据和计算。
PieCloudDB 于 2022 年 10 月 24 日公布 1.0 版本,实现计算和存储拆散,实现了弹性计算与弹性存储,做到了计算和存储均可按需付费,并实现了多租户隔离。2023 年 3 月 14 日,拓数派正式公布了 PieCloudDB 的云上云版本,云上云版本目前构建在阿里云上,并将很快扩大到其余云平台。云上云版将满足用户多样化的数据分析需要,打造公共云数仓服务最佳实际。
PieCloudDB 目前已有四个产品版本,别离是:
- 云上云(CoC)版本(收费试用)
- 社区版(收费下载)
- 企业版
- 一体机版本
PieCloudDB 云上云版为企业构建坚如磐石的虚构数仓,以云资源最优化配置实现有限数据计算可能。PieCloudDB 企业版与社区版可为企业提供全新基于云数仓数字化解决方案,助力企业建设以数据资产为外围的竞争壁垒;PieCloudDB 国产软硬件一体机,采纳 eMPP 专利技术实现存算拆散,适配信创环境,为甲方企业升高运维老本,节俭开发工夫。
PieCloudDB 拓数派研发团队之所以会抉择云原生作为次要赛道,次要出于多方面的考量。首先,在传统的 MPP 数据库的客户环境中,往往存在一个独特的痛点,那就是:数据孤岛。客户的生产环境中 MPP 数据库集群数量过多,即便采纳数据联邦等解决形式,也可能会导致数据一致性性问题,还会对存储空间造成肯定的节约。第二,数据作为新的生产因素须要流通起来才会产生更大的价值。为了解决这些痛点问题,PieCloudDB 通过实现存算拆散的架构,将数据存储在共享存储(S3,HDFS,NAS)中,将元数据信息存储在共享 NoSQL 数据库 FoundationDB 中,实现了存储资源和计算资源的独立弹性伸缩,从而可能在维持高性能的同时,更加灵便的进行扩缩容,帮忙用户降本增效。
上面咱们来回顾一下 PieCloudDB 的诞生之路。PieCloudDB 从新打造 PostgreSQL 实现存算拆散。之所以没有从数据库底层进行从新设计研发,是因为所谓”术业有专攻”,就像制作跑车的并不会亲自生产车轮一样,协调上面的轮子来跑的更快更稳才是咱们所专一的。而数据库底层组件就像车轮一样,PieCloudDB 在 PostgreSQL 的根底上做了大量革新与优化,实现分布式与存算拆散,充分利用 PostgreSQL 源源不断的创新能力和资源,联合拓数派研发团队的创新能力,针对分布式、OLAP 及云原生场景进行了大量极致优化,成就了这款云原生虚构数仓 PieCloudDB。
1. PieCloudDB 的诞生之路
咱们次要是从四个方面来进行设计和打造 PieCloudDB 的:元数据管理、数据存储、数据拜访减速、分布式化。
1.1 元数据管理
为了突破数据孤岛,PieCloudDB 设计了存储计算拆散的计划。在这种设计方案下,用户可能启动了多个虚构数仓来操纵同一份数据,因而可能会产生一个虚构数仓在更新数据而另一个虚构数仓在读取数据的状况。为了保障在多个虚构数仓(multi – coordinator)状况下数据的一致性,咱们设计了元数据服务,把元数据和用户数据以及虚构数仓解耦合。元数据服务使得同一组织下不同租户的元数据是共享的,用以实现分布式事务和分布式锁。
PieCloudDB 的元数据服务基于 FoundationDB 实现,PieCloudDB 通过借助 FoundationDB 的串行化事务模仿轻量级锁性能,并通过实现分布式锁来保证数据的一致性。
因为 PieCloudDB 的元数据被存储在 FoundationDB 中,每个散发器都会去读取 FoundataionDB 中的元数据,会对 FoundationDB 造成肯定的压力。因而 PieCloudDB 的元数据管理通过缓存的设计、以及将不会改的元数据事后长久化存储,来缩小对 NoSQL 数据库的拜访。
1.2 数据存储与简墨(JANM)的诞生
因为 PostgreSQL 的 HEAP 是一款 OLTP 行存引擎,对剖析型场景(OLAP)并不敌对,因而 PieCloudDB 为了被打造成一款 OLAP 云原生数据库,须要针对 OLAP 和云原生场景进行大量优化和改良。
PieCloudDB 作为一款云原生虚构数仓,在设计存储引擎时须要思考撑持云平台的便宜对象存储同时也要反对高性能查问,在实现过程中,PieCloudDB 须要可能兼容 S3 存储,并须要保障高效的拜访性能。S3 等对象存储的劣势是使用方便价格低廉,毛病是拜访时网络延绝对迟较大并且文件的随机拜访性能较差等。
针对 S3 的这些特点,PieCloudDB 打造了独创的存储引擎简墨(JANM)。简墨的名字出自于“竹简墨书”,纵向的竹片被横向的链接起来,造成竹简,形象地阐明了 PieCloudDB 行列混存的存储模式。简墨的独特设计既能利用 S3 的劣势又通过一些措施克服了拜访提早和随机读写的劣势。作为数据库的存储引擎,简墨保障了一个 S3 文件内所有的数据 MVCC 可见性统一。为了进步查问销量,简墨采取了很多优化措施:例如收集统计数据被独自存储在 KV 存储中,在查问时用于实现 Data Skipping,针对 SUM、COUNT 等汇集计算的预汇集等查问优化。此外,简墨也实现了包含 TDE(通明数据加密)、数据压缩、反对大字段列(Large – size column)、内存 Arrow Format、、Cache 敌对等个性。简墨的数据块大小设定为 16M,这样能够防止产生很多小文件从而加大元数据的治理难度,也无效的防止了执行 UPDATE/DELETE 时产生的文件随机的读写操作。
此外为了充分利用古代硬件的性能,PieCloudDB 的存储引擎设计时还思考了为古代 CPU 和 GPU 的高速缓存拜访进行了设计,并且对数据的局部性进行了进一步优化以反对 SIMD、SIMT 和并行计算。
在存储引擎的选型过程中,研发团队也曾调研过 Parquet 等开源存储格局。最终团队决定打造本人的存储格局,而不间接应用 Parquet 等开源存储格局,次要出于以下几点起因:
- 不须要存储 Schema:Parquet 等很多存储格局自带 Schema,而 PieCloudDB 对 Schema 的存储需要较小;
- 原生 Postgres 感知的存储格局:能够在防止读取存储数据时,须要去做一些额定的反序列化等工作;
- 灵便可控:在实现相似 TOAST 的性能时,不会受约束,可操作性更强,更加灵便可控。
尽管没有间接应用 Parquet 等开源存储格局,但为了保障用户的数据存储格局的灵活性,PieCloudDB 反对通过 Foreign Data Wrapper 性能拜访这些存储格局。
1.3 数据拜访减速
PieCloudDB 的存储引擎简墨反对 S3 等对象存储。因为 S3 存储自身会存在一些局限性,包含带宽提早、对随机写不敌对。针对这些瓶颈,PieCloudDB 做了大量优化,以进步数据的访问速度,使得存储不再是查问执行过程中的瓶颈:
- 缓存:应用缓存是减速数据拜访的罕用措施,PieCloudDB 实现了本地缓存,更加高效的分布式缓存也在布局中;此外,PieCloudDB 还针对数据的拜访频率对缓存实现了“冷”、“温”、“热”的分级管理。
- 一致性哈希缓存文件:PieCloudDB 实现了本地缓存,因而可能会产生跨节点读取缓存数据状况,为了防止跨节点的缓存读写,PieCloudDB 实现了一致性 Hash 存储缓存文件,进步缓冲的命中率。
- Data Skipping:为了实现更好的查问性能,PieCloudDB 做了大量查问优化性能,Data Skipping(Block Skipping)能够跟进事后计算数据统计信息从而判断数据块中是否有须要的数据,从而跳过不蕴含所需数据的数据块;
- S3 拜访通用优化:并行化、预读、异步、MPP 引擎“Steal”等。
1.4 PieCloudDB 的分布式化
PieCloudDB 实现了分布式化引擎。元数据只在 Coordinator 上拜访 FoundationDB,缩小了对 FoundationDB 的拜访次数,防止对其造成过大的压力。而执行器数据次要由散发器精准高效 Dispatch,并针对散发器进行了大量优化。
在实现这四步的打造后,PieCloudDB 诞生了。接着,咱们为了在维持稳定性的同时,让 PieCloudDB 领有更加优异的查问性能,对元数据管理系统进行了继续的性能优化,反对了汇集下推、预计算、Block Skipping 等性能。并实现了海量数据批改与加强、初步备份性能、VACUUM 加强、统计数据主动收集更新等优化。
2. 道阻且长,行则将至
PieCloudDB 还在一直成长,下一步,咱们将持续打磨 PieCloudDB 内核,在元数据存储、用户存储以及计算引擎方面一直迭代,并让优化器对 OLAP 场景更加敌对。
- 元数据存储
在元数据存储方面,首先咱们将深度优化缓存,通过高效的缓存零碎进一步的大幅缩小对 FoundationDB 的拜访。其次实现元数据将于状态解耦,让无需牢靠存储的状态不必被存储在 FoundationDB 中。再次并通过肯定的重构,形象更多解耦,升高复杂度,进步稳定性。 - 用户数据存储
针对用户数据存储,将依据计算需要优先级提供包含 dict page、bloom filter 等更多功能,并在分布式缓存和调度等方面进行优化。 - 计算引擎
计算引擎将是 PieCloudDB 下一步迭代的重点。首先咱们打算实现 SIMD 执行器和各种计算优化。接着,咱们会实现 Pipeline 引擎,充分发挥多核 cpu 计算能力,进步 cpu 利用率,让单台节点的性能被充分利用,进一步降本增效。咱们会在第三步实现计算引擎资源调度隔离,让 PieCloudDB 成为一个数据计算的“操作系统”与基石,这将是 PieCloudDB 的长期指标。
这就是 PieCloudDB 的诞生之路,欢送大家返回官网试用 PieCloudDB 云上云版。也期待大家退出咱们的技术社区,与咱们携手同行!