10月24日程序员节,拓数派(Openpie)发布了云原生数据库PieCloudDB 。PieCloudDB 以云计算架构为设计基础, 实现云上存算分离,打造了“元数据-计算-存储”分离三层架构。
传统MPP数据库的元数据与用户数据是紧密耦合的,元数据与用户数据解耦合是PieCloudDB 作为一款云原生数据库的重要特征。PieCloudDB 在架构上创建了独立的元数据服务层,保证了元数据的高可用性和独立伸缩性。
本文整理自拓数派(OpenPie)2022产品发布会的演讲,将为大家着重介绍PieCloudDB Database的元数据管理。
PieCloudDB数据库的两个重要设计目标是多集群和高可用。多集群是指在一个数据集上,用户可以启动多个集群,进行数据的增删查改操作。在这个过程中,需要保证数据的ACID特性,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。高可用是指在损失一个或多个节点的情况下,集群能够继续提供服务。这两个设计目标都要求数据库具备多个主节点的特性,也就是在多集群的情况下每个集群拥有多个coordinator,每个coordinator 都具有执行数据库所有功能的能力,包括 DML 和 DDL。
mStore:PieCloudDB上的Catalog服务
PieCloudDB实现了两个基本模块:一是实现一个分布式的数据存储模块,这个模块需要实现多级并发访问,并实现多版本在内的所有存储特性;二是实现分布式的锁。这个新的分布式云数据库的存储被称为mStore,我们选择FoundationDB作为mStore的存储介质。
FoundationDB是一款由苹果公司开源的分布式的Key-Value 存储,经过大量商业验证,具有良好的扩展性和完备的事务一致性。mStore的数据存储方式以元组为单位存储在KV中,使用tuple id作为key,并使用和堆表相同的机制实现MVCC。
PieCloudDB是一款OLAP(分析型)数据库,但对于元数据的访问高度近似于OLTP的模式,因此我们需要实现索引。我们将参与索引的字段编译成二进制 key的一部分,这样就可以利用FoundationDB Key的排序特性实现与B-tree特性类似的索引。在这个索引的加持下,用户就可以高效而且低成本的访问元数据。
从下图上可以看到,在索引由多个字段组成的情况下,PieCloudDB database将每个字段按照顺序编译成定长的二进制key,然后由这些二进制Key组成索引的key-value中的key,让索引中key的排序与index保持一致。从而实现了与B-tree 类似的功能。
这种排序方式要求我们将所有的key编译成定长的key。如果Index Key是变长的 需要将其转化为定长的key。此时,Index会混入一些多余的数据,通过re-check即可将其去除掉,从而实现一个与原有Postgres B-tree index 完全相同的Index。
基于FoundationDB的分布式锁
PieCloudDB 元数据的多级并发访问功能使用等待的方式来实现多用户并发访问。这种模式的好处是,在大负载和长事务的情况下可以避免回滚。由于PieCloudDB为多主模式,即多个主节点会分布在多台物理机上,导致原本以内存为基础的锁变得不可用。因此,PieCloudDB 设计并实现了新的分布式锁。分布式锁以key-value的形式存储在FoundationDB中,使用FoundationDB的事务来保证锁操作的原子性,并使用watcher机制来实现锁的等待和唤醒。
PieCloudDB Database的元数据层为计算集群提供了统一的元数据管理服务,保证了计算集群的一致性,实现了对使用资源的有效管理。此外,PieCloudDB 智能化云原生平台为用户提供可视化界面,降低用户的管理门槛,帮助用户更便捷的使用PieCloudDB database。
关于PieCloudDB
PieCloudDB是一款全新eMPP分布式技术云原生分析型数据库。通过重新打造云上的数据库内核,突破了PC时代计算平台的限制,实现云上存算分离。旨在为企业提供包含实时处理、秒级扩缩容、弹性计算、集成数据分析等强大功能的云上数据存储和计算引擎。在云上,计算资源可按需启动,对计算模型以更低成本提供指数级的存储和计算资源,帮助企业的业务模型发现新洞察或者提高精准度,从而建立竞争壁垒。目前,PieCloudDB在金融,医疗,汽车及制造等行业积累了一批种子用户,产品备受业界及用户的高度关注及认可。
标签:OpenPie,Database,实现,PieCloudDB,数据库,key,数据,分布式 From: https://blog.51cto.com/u_16396625/8654057