12 月 14-16 日,第十三届中国数据库技术大会(DTCC 2022)在线上隆重召开。拓数派资助并参加了数据库盛会 DTCC,在会议中,拓数派 CTO 郭罡分享了《云原生数据库 PieCloudDB eMPP 架构设计与实现》的主题演讲。在演讲中,郭罡剖析了传统分布式 MPP 架构的痛点,介绍了云原生数据库 PieCloudDB 的 eMPP 架构的设计背景与重要性能组件。本文整顿自现场演讲内容。
相干PPT欢送拜访拓数派官网链接进行预览和下载。演讲视频欢送拜访B站链接。
传统分布式 MPP 架构痛点
MPP(Massive Parallel Processing,大规模并行处理),始终被誉为当今数据库的支流架构,被宽泛用于泛滥数据库产品中,包含 Greenplum、Teradata、Vertica 等。MPP 剖析型数据库针对剖析工作负载进行了大量优化,以满足用户聚合和解决大型数据集的需要。它会将工作并行的散布到多个服务器和节点上,并在实现计算后,将后果返回并汇总,从而实现对海量数据的剖析解决。
然而,传统分布式 MPP 架构存在很多瓶颈,咱们将客户的实在生产场景中遇到的问题进行演绎,总结出 5 个痛点:
- 不足弹性
传统数据仓库的计算和存储是严密耦合的,计算资源和存储资源按某一比例强绑定,因而用户在扩容时,必须同时扩容计算资源和存储资源,在扩容、运维、迁徙上都存在肯定的挑战。当企业遇到负载顶峰时刻或须要紧急失去某个报表后果时,传统数据仓库无奈及时扩资源,导致大数据系统无奈弹性、疾速的剖析业务数据,错失了充沛开掘数据价值所带来的商业机会。 - 老本昂扬
传统数据库价格昂扬的软硬件、开发运维人员的昂扬薪资须要企业进行微小的后期投入。在咱们与客户接触的过程中,常常发现客户的生产环境资源利用率,无论是存储或是计算资源往往不尽人意。随着存储和工作负载需要的日益增长,面临数据库的扩容和降级时,因为传统数据库架构存储和计算的严密耦合,往往须要企业破费微小的运维和工夫老本,且操作繁琐; - 木桶效应
传统 MPP 数据库架构存在” 木桶效应”,数据库集群整体执行速度取决于最” 短板” 节点的性能。因而,一个节点的体现往往会” 拖垮” 整个集群的性能,导致查问速度变慢。 尽管实践上能够针对这一状况进行优化,但往往都是” 治标不治本”。随着工夫的推移,业务的增长,企业往往须要在 1-2 年后对集群减少计算节点,此时,无论新的计算节点性能如何优异,集群总体性能都会受制于老的节点。因而实在生产环境中,咱们经常见到客户在须要扩容时,采取从新新建集群的形式。 - 数据孤岛
随着业务的倒退,数据量的减少,和信息化建设的需要,企业会为不同部门建设相应的业务信息化零碎。咱们在很多实在客户生产环境中,经常看到企业有成千盈百个集群,但这些集群的元数据往往都是一样的。这种状况下,很多元数据在不同集群间会存在不统一的版本信息。如果企业须要做跨集群的拜访,往往十分艰难,会造成数据孤岛的存在。 - 运维老本
对于传统 MPP 数据库,企业往往会须要装备运维人力,且对运维、开发人员要求高,须要相干人员把握简单的技术栈,技术的更新迭代迅速,需相干人员放弃踊跃的常识更新。相干人才市场较小,人才匮乏。昂扬的学习老本造成用户应用过程中性能差、故障率高、故障修复工夫长等问题;
正是因为传统分布式 MPP 架构的这些痛点,咱们认为企业急需一款全新的 eMPP 云原生数据库。
云解决了什么?
随着数据量和计算能力的爆发式增长,云计算技术的迅猛发展,根底软件尤其是数据库软件上云已大势所趋, 那么云为数据库软件解决了什么问题呢?
借助于云上分布式存储,数据库软件能够实现解耦存储;通过 KVM 等虚拟化技术,以及构建之上的 IaaS 零碎,数据库能够实现计算层的解耦,让用户能够做到按需启动虚拟机。在存储和计算解耦后,资源能够实现池化,按需应用。云计算让用户可能专一于应用,将运维等工作交给 IaaS/SaaS 厂商。
上云≠云原生
尽管数据库上云曾经是大势所趋,但上云并不等于云原生。业界常常会对上云和云原生两个概念有所混同, 咱们认为:如果仅仅是将数据库在云上进行部署,并不是真正的云原生。云原生须要满足以下几个条件:
- 计算和存储弹性:业界常常提到” 存算拆散”,在实现存算拆散后,存储资源和计算资源都要做到弹性伸缩,按需付费。但这只是实现计算和存储弹性的第一步,
- 多租户隔离: 云上存储资源和计算资源须要做到彼此隔离,保障数据安全。
- 智能化云原生平台: 一款云原生数据库,除了底层架构,一款云原生数据库的用户操作也须要是” 云原生” 的。智能化可视化平台能够简化用户的操作,让用户得以用云原生的思维操作数据库。
为什么抉择 PieCloudDB
基于这样的设计思路,全新的云原生数据库 PieCloudDB Database 诞生了。PieCloudDB 是一款全新的 eMPP 分布式云原生剖析型数据库,通过从新打造云上的数据库内核,冲破了 PC 时代计算平台的限度,实现云上存算拆散。在云上,计算资源可按需启动,对计算模型以更低成本提供存储和计算资源,帮忙企业的业务模型发现新的洞察或进步精准度,从而建设竞争壁垒。
PieCloudDB 重要特点如下:
eMPP
PieCloudDB Database 从新打造了全新的 eMPP 分布式架构,继承了传统 MPP 架构分布式、海量数据并行处理的劣势,解决了前文提到的 MPP 传统架构的痛点。
这里的”e” 是指 elastic,弹性。PieCloudDB 做到了计算资源的横向和纵向的弹性伸缩。这里的” 横向” 是指节点数的增多,而” 纵向” 是指虚拟机规格的晋升。除了计算资源上的弹性,PieCloudDB 还实现了第三个弹性维度:多集群。因为用户数据和元数据都是共享的,用户数据被存储在对象存储上,而元数据被分布式 KV 存储管理,PieCloudDB 做到了真正的 ”serverless” 无状态。
全面的 SQL 兼容度
PieCloudDB 高度兼容 SQL:2016 规范,齐全反对 SQL:1992 规范、大部分的 SQL:1999 和局部 SQL:2003 规范(次要反对其中的 OLAP 个性),反对包含窗函数、汇总、立方和各种其余表白性能。此外,PieCloudDB 实现了敌对的用户接口,齐全反对和认证规范数据库接口 (PostgreSQL、 SQL、ODBC、JDBC 等) 。
云原生,云中立
PieCloudDB 实现存算拆散,用户数据被存储在对象存储中,反对按需付费。PieCloudDB 实现了云中立,没有和任何一款云平台绑定,为用户提供更大的灵活性,能够按用户需要被部署在行业云、公有云、私有云、混合云等云平台上。 此外,PieCloudDB 也反对 HDFS,NAS 等文件系统。
齐备的事务反对
PieCloudDB 实现了齐备的事务反对,兼具数据仓库的规范 SQL、ACID、和数据湖的大规模异构数据存储等性能,并具备了 RR 和 RC 的隔离级别。
安全可靠
PieCloudDB 开发团队早在设计初期就将数据安全作为重要的设计指标,通过通明加密、可视化角色与权限治理、SQL 规范和规范数据库接口的兼容等多种平安技术全方位保障数据安全,实现了「Unbreakable」(坚不可破),做到了真正的安全可靠。此外,PieCloudDB 分布式对象存储多正本多可用区进一步保障数据安全,整个数据库只有一份数据,无效防止了数据不统一。
PieCloudDB 在整个架构设计上充分考虑到了各个节点的高可用,防止单点故障,用户应用上感觉更牢靠。
很快,PieCloudDB 将反对 Time Travel(工夫溯回)性能,用户借助该性能能够查问” 回收站” 数据,为用户的数据安全 “添砖加瓦”。
欠缺的生态
PieCloudDB 原生反对 PostgreSQL/Greenplum 生态组件,兼容包含 PostGIS、in Database AI 组件 MADlib、JSON、Text 等。PieCloudDB 对各种表面数据源联邦查问组件人造反对,实现了高性能的实时 ETL/ELT 性能,原生反对 Kafka 数据导入和查问,在 PieCloudDB 侧导入实现 exactly once 语义。
PieCloudDB 也在打造本人的生态体系,通过创立生态工具、建设合作伙伴生态网络、打造沉闷的技术和用户社区等动作,为用户带来更便捷的应用体验。
PieCloudDB:云原生数据库的设计与打造
PieCloudDB 的内核架构简介优雅,从上而下被分为元数据层、弹性计算层和共享存储层。内核次要组件如下:
元数据管理
PieCloudDB 的元数据以 key-value 的模式被存储在开源数据库 FoundationDB 中。FoundationDB 是一个开源的 NoSQL 的 KV 数据库,PieCloudDB 利用 FoundationDB Key 的天然排序实现索引。同时,基于 MVCC,PieCloudDB 也实现了 RR 和 RC 的事务隔离级别。
PieCloudDB 的多个集群(虚构数仓)共享一份元数据,是 PieCloudDB 得以实现存算拆散的很重要的一个起因。 PieCloudDB 借助 FoundationDB 的 KV 个性、可串行事务、watcher 机制等个性,将除元数据以及将包含锁、事务等在内的长期状态存储在了 FoundationDB 中。FoundationDB 具备高可用和备份复原设计,保障了元数据的可靠性和可用性。
为了防止元数据被存储在远端会造成 FoundationDB 集群累赘,防止网络提早,减速查问优化, PieCloudDB 以 Postgres 原生的元数据缓存概念为根底,优化重构实现了实用于多集群架构的元数据层全新的缓存阶段,无效缩小了拜访元数据服务器带来的网络通信开销和元数据服务器的负载。无效进步元数据拜访的速度,从而进步了数据库系统性能。
用户数据存储引擎
PieCloudDB 的用户数据以 PAX(行列混存)的数据格式被存储在对象存储中。在一个 page 中,数据按列存储,从而得以配以高效的压缩,节俭存储空间。同时,PieCloudDB 以 block 文件为一个存储单位。这同时也是一个 MVCC 的单位,即一个 block 对于一个事务的状态是可见与不可见二选一的,不存在中间状态。
此外,PieCloudDB database 的存储中存在大量辅助信息,可被用于计算优化,在设计之初,咱们充分考虑了高效和精准的统计信息收集、存储和计算成本、以及包含 SIMD,Cache Line,Data Skipping,预汇集等计算优化的实现等多个方面,冀望能打造一个优质的用户数据存储引擎。
很多用户可能会对” 将数据放在近程,是否会影响对 PieCloudDB 的性能” 产生疑难。PieCloudDB 在设计之初,充分考虑到了近程拜访数据性能和老本的均衡。为了解决这一问题,PieCloudDB 做了大量的工作:
- 数据和 / 或辅助信息缓存,同时一致性 Hash 缩小数据挪动。
- 读取优化: 例如并行、异步等,防止网络提早对性能造成影响
- 计算优化: PieCloudDB 实现了并将继续进行大量计算优化,包含汇集下推、Block Skipping、预计算等
- 简单的 OLAP 查问: 如果不是 IO 瓶颈,并不会受制于数据被存储在近程或本地。
计算引擎
PieCloudDB 实现了 MPP 弹性计算引擎,做到了用户的按需付费、租户隔离、高可用、高并发等性能。
此外,PieCloudDB 打造了基于 eMPP 架构的云原生分布式优化器,为海量数据集上的简单 OLAP 查问提供最优的查问打算。在优化器的打造时,PieCloudDB 针对分布式、简单 OLAP、和云原生场景做了大量的思考和设计,实现了包含多表连贯的最优程序、多阶段汇集、分区表的动态和动静裁剪、相干子查问的晋升转换、CTE 和递归 CTE 的优化等查问优化。
此外,PieCloudDB 还实现了大量的针对简单 OLAP 查问的高阶优化,以汇集下推为例,PieCloudDB 通过把汇集操作下推到连贯操作之前去执行,从而极大的缩小连贯操作须要解决的数据量,使得查问性能显著晋升。在某些场景下,能够失去百倍千倍的性能晋升。
以上面两个表 join 后汇集运算为例。失常状况下,解决程序是将两个表做完 join 后,通过 where 条件过滤,在做完 group 分组后再做汇集。但如果这么解决,两个表的 join 做汇集会波及很大的数据量。通过汇集下推后,汇集被下推至最上面的 a 表上,此时和 b 表做 join 的是曾经实现汇集操作的数据,数据量会被大大减少,从而大大提高查问性能。
SELECT a.i, SUM(a.j)
FROM agg_pushdown_t a, agg_pushdown_t b
WHERE a.i = b.i GROUP BY 1;
QUERY PLAN -------------------------------------------------------------Gather Motion 3:1 (slice1; segments: 3) -> Finalize HashAggregate Group Key: a.i -> Redistribute Motion 3:3 (slice2; segments: 3) Hash Key: a.i -> Hash Join Hash Cond: (b.i = a.i) -> Seq Scan on agg_pushdown_t b -> Hash -> Broadcast Motion 3:3 (slice3; segments: 3) -> Partial HashAggregate Group Key: a.i -> Seq Scan on agg_pushdown_t a
PieCloudDB 团队正在一直迭代产品,更多高阶计算性能将很快与用户见面:
- Block Skipping
PieCloudDB 将在下一版本中实现 Block Skipping 的优化机制,在数据库运行查问语句时,通过预计算每个块(block)中列汇集信息,在执行期间跳过非必要的数据块,缩小数据读取量进步查问性能。 - 预计算
PieCloudDB 将很快反对预计算性能。在查问的过程中,PieCloudDB 能够依据企业查问的特点事后计算一些重要的查问后果,从而防止在查问过程中的计算,进步查问效率。
更多计算引擎的工作也正在研发中,包含 SIMD,runtime filter,late materization 等,置信会给用户带来更多惊喜。
智能化云原生平台
作为一款云原生数据库,PieCloudDB 在设计智能化云原生平台之初,就心愿这款数据服务平台能够提供云原生的应用体验,升高用户、运维和治理的应用门槛。
面向用户,PieCloudDB 云原生平台通过简介清晰的 UI,清晰的性能疏导和明确的信息组织分层,为用户提供了丰盛的数据洞察能力,做到了开箱即用,让用户离数据分析更近,离繁琐的操作更远。
面向运维,PieCloudDB 云原生平台全面拥抱容器化技术,能够适配多种环境。已反对公有信创环境和多云环境,既实现公有环境离线部署,也可充分利用私有云技术设施。能够升高了部署门槛,做到数据库保护平台托管,让 PieCloudDB 在不同的基础设施都能施展实力。
面向治理,PieCloudDB 云原生平台反对疾速启动集群,随时能够关停,随时能够回收,联合集群操作记录,用户能够用最低的老本实现数据分析。通过可视化界面让治理更轻松,让数据分析运行更通明。
PieCloudDB 团队正在一直迭代产品,自 10 月 24 日推出社区版和企业版后,很快将推出新的版本,心愿能让用户专一于利用,打造牢靠、高效、简略、齐备的 SQL 数据平台。