10 月 24 日对于程序员是个很特别的日子,对拓数派(Openpie)所有的员工来说也是令人激动人心的一天。在这一天,拓数派发布了云原生数据库 PieCloudDB 社区版与商业版。 PieCloudDB 历经 1 年多的研发,对数据库内核几乎所有的模块都进行了大量的代码改动,以云计算架构为设计基础,全面摆脱 PC 架构束缚,实现存算分离,做到了” 真正” 的弹性。此外还搭建了生态工具以及云原生平台,研发工程量巨大。本文整理自拓数派 CTO 郭罡在拓数派 2022 发布会的演讲,将为大家着重介绍 PieCloudDB 的产品总览。
MPP(Massive Parallel Processing,大规模并行处理),一直被誉为当今数据库的主流架构,被广泛用于众多数据库产品中,包括 Greenplum、Teradata、Vertica 等。 MPP 数据库集群有可扩展性、高可用性、高性能等众多优势。MPP 数据库的诞生解决了单个 SQL 数据库无法存放海量数据,很难在一台物理机器上完成分析需求的难题。但传统 MPP 数据架构也存在一些痛点:
传统 MPP 数据库的计算与存储是紧密耦合的。用户在负载高峰时,常常需要快速运行一个分析结果,此时往往需要更多的计算资源,而传统 MPP 数据库的架构无法通过扩容(或者扩容成本高昂)来实现,缺乏弹性。
传统 MPP 数据库架构存在” 木桶效应”。数据库整体执行速度取决于最” 短板” 单机(Straggler)的性能,此外单机故障会” 拖垮” 整个数据库的性能,导致查询速度变慢。典型的案例就是,一个集群在运行一段时间后需要扩容时,新的扩容节点更快,但是由于木桶效应,新的机器资源并没有全部用上。
数据库用户一般都会采用固定的集群数来满足弹性的业务需求,因此大多数情况下集群都会选择” 超配”,以满足可能出现的业务” 峰值”。我们经常发现客户的集群的资源利用率很低。这些集群也会给用户带来高昂的成本。
随着业务的发展,数据量的增加,和信息化建设的需求,企业会为不同部门建设相应的业务信息化系统。MPP 集群是彼此独立的,不管是元数据还是用户的数据都是孤立隔离开的。很多传统 MPP 数据库会采用联邦查询的方式来访问彼此隔离的数据。但联邦查询常常会存在性能问题,跨集群的写入也不友好。数据联邦并不是一个好的解决方案。
由于传统 MPP 数据库架构存储和计算的紧密耦合,往往需要企业花费巨大的运维和时间成本。繁琐的操作也会引入一些额外的运维成本,包括系统运维、数据库运维等。
PieCloudDB 团队 打造的 eMPP 架构能够完美解决这些问题。eMPP 的含义是 elastic MPP( elastic Massive Parallel Processing,弹性大规模并行计算),指弹性的计算资源资源,可以支持计算横向和纵向的极速伸缩。eMPP 架构使 PieCloudDB 用户数据和元数据共享,并具有 MPP 的所有优势,包括分布式计算,海量数据并行处理等。
讨论云原生之前,先来了解一下” 云”。云平台能为数据库提供两大优势:云上的分布式存储和云上的虚拟化技术。
云上的存储容量理论上是无限的。借助云上的分布式存储,用户无需考虑因存储容量而需要的扩容和缩容操作。借助云上的虚拟化技术以及基于这种技术的 IaaS 产品,PieCloudDB 做到了解耦计算,从而实现了资源的池化,使得用户能够按需使用存储或者计算资源。
如今,随着云计算技术的发展,基础软件,尤其是数据库产品,不管是国内或是国外,上云已经是大势所趋。数据库上云后,用户可以专注于使用,将运维工作交给云厂商。
上云并不等于云原生。“云原生” 是由 PaaS 云第一股 Pivotal 公司提出的概念。一款云原生数据库需要满足三个条件:存算分离弹性计算、多租户和智能化云原生平台。产品需要能够支持存储资源和计算资源的分离,能够快速的进行资源弹性伸缩,每个租户可以根据需求弹性扩展计算和存储资源。此外,云原生数据库需要提供给用户一个智能化的云原生平台,让用户能用云原生的方式来使用产品。PieCloudDB 作为一款云原生数据库满足了上述的所有优势。
PieCloudDB 是一款 eMPP 云原生分布式数据库,具备了 MPP 所有的优势,还具备了传统 MPP 数据库所没有的真正的” 弹性”。弹性是云原生的一个基本属性,但我们的目标不限于此,我们希望将 PieCloudDB 打造成一个为用户带来优质体验的实时大数据平台。
PieCloudDB 突破了 PC 时代计算平台的限制,重新打造云上的数据库内核,对几乎所有的内核模块做了大量创新。PieCloudDB 内核团队具有强大的数据库内核代码构建能力和经验,突破式创新了 eMPP(elastic Massive Parallel Processing)分布式技术。
PieCloudDB 的架构图非常的简洁优雅。中间的虚拟数仓是弹性计算层。元数据和用户的数据是可以共享的。
PieCloudDB 核心团队在基础软件领域工作十余年,有着丰富的企业级客户经验。面对纷繁复杂的数据库市场,PieCloudDB 团队一直在思考什么才是一款好的数据库产品。PieCloudDB 团队总结多年的经验,总结出一款好的基础软件,特别是数据库产品需要包括四个特性,这也是 PieCloudDB 在产品设计过程中所遵循的原则。
第一个特性可以被拆解为两个方面:安全和可靠。“安全” 包括数据存储和访问安全。在数据存储方面,PieCloudDB 采用一系列的数据安全加密技术,来确保用户数据的安全性。而访问安全方面,PieCloudDB 在权限控制和网络安全上也为用户提供了众多特性。此外,研发团队在 PieCloudDB 的代码实现上,也非常注意安全编程,尽量避免漏洞。
“可靠” 是指产品的稳定。一款优秀的数据库产品需要为上层应用提供稳定的服务,即使出现故障,也需要做到用户无感知,不会影响用户的日常业务,更不会出现数据损坏或丢失之类严重的场景。
第二个特性是使用简单。这一特性是从用户的角度来设计产品,避免让用户用” 极客” 的思维来使用产品,做到开箱即用简单上手。作为一款云原生产品,我们的操作平台也是云原生的,用可视化的界面来帮助用户更便捷的使用 PieCloudDB。
PieCloudDB 需要能够提供丰富的功能。大数据的底层趋势是使用 SQL,PieCloudDB 完全支持 ACID 事务,高度兼容 SQL:2016 标准,完全支持 SQL:1992 标准、大部分的 SQL:1999 和部分 SQL:2003 标准(主要支持其中的 OLAP 特性),支持包括窗函数、聚集、数据立方体等重要功能。此外还具有友好的用户接口,包括 ODBC、JDBC、Websql 等。PieCloudDB 将对相关生态组件和工具支持齐全,目前 PieCloudDB 完美兼容 PostgreSQL 生态,很多 PostgreSQL 生态应用能够轻松接入 PieCloudDB 系统。
PieCloudDB 为了用户的使用体验,已经进行了大量的性能优化。有些优化可以提供数量级别的性能提升。在后面的版本中,PieCloudDB 将在未来的版本中不断迭代,为用户带来更极致的性能。
在 PieCloudDB 社区版与商业版发布后,我们将持续迭代,不断创新,为用户带来更多的价值。