VLDB 2024论文解读丨GaussDB:盘算-内存-存储三层池化解耦的多主云原生数据 ...

打印 上一主题 下一主题

主题 873|帖子 873|积分 2619

华为《GaussDB: A Cloud-Native Multi-Primary Database with Compute-Memory-Storage Disaggregation》论文被国际数据库顶会VLDB 2024收录,该论文创新性提出了GaussDB云原生数据库的三层池化解耦架构,以及实现多节点透明多写的核心技能。通过三层池化解耦技能,明显提升了云数据库弹性能力;通过分布式内存缓冲池、热温冷数据分层自适应读写、本地亲和性读写、数据智能路由与汇聚、细粒度页面级Lamport LSN等技能,提升了数据库的透明多写性能;通过内存和磁盘双查抄点、Past Image就近页面规复等机制,实现节点故障秒级规复(RTO<6s),存活节点持续运行,业务不停止;提出盘算层无状态设计机制,实现了秒级盘算节点弹性伸缩,提出了基于Bucket的细粒度一致性哈希算法,实现内存节点在线弹性扩展。

下面对论文举行全方位解读,揭开GaussDB云原生数据库的面纱。

配景介绍

新应用场景持续涌现、业务负载快速增加,叠加新硬件技能的不停突破,成为推动数据库架构演进厘革的重要推力。OLTP关系型数据库自问世以来,先后出现了主备架构、shared-disk多主架构、shared-nothing分布式架构和云原生存算分离主备架构。怎样在云情况下充实发挥先进硬件优势,突破现有架构吞吐扩展能力瓶颈,成为近些年工业界和学术界研究的热点,云原生三层解耦多写数据库正是在这样的配景下产生的。

核心技能解读


高性能

以D*和O*为代表的传统shared-disk多主架构,支持多节点透明多写,具备肯定的吞吐扩展能力,在很长一段时间乐成的支撑了企业关键业务负载。但其限制也很显着,起首D*和O*多写架构依赖专有硬件,弹性伸缩能力差,TCO较高,用户易被Lock in,在云盘算和通用服务器大行其道的配景下,越来越多的用户盼望多写架构能够运行于开放平台之上。另外,D*和O*的多节点并发事务状态多采用中央化模式设计,导致其扩展线性比较低,在重业务负载情况下,资源的扩展并不能带来对等的性能收益,导致其业务承载能力受到限制。
为继承D*和O*透明多写能力,同时充实利用云平台资源弹性和RDMA高速网络等先进硬件技能,当前业界头部数据库厂商均积极研究云原生多写架构。近期,某云厂商推出的云原生多主数据库,采用盘算-内存-存储三层解耦的云原生架构设计,基于中央化组件实现多节点透明多写,是该方向架构演进的一个突破。但从其发表论文的测试数据来看,32节点TPCC吞吐为910万tpmC,而华为GaussDB云原生数据库在雷同32节点可达3000+万tpmC的吞吐能力,支持128节点(16384鲲鹏核心)摆设,能够支撑PB级OLTP业务规模,目前已在华为内部支撑实际业务生产。
存在上述性能差距的原因,笔者以为有如下几点:
第一,国内云厂商多写数据库的页面跨节点修改,采用进程级LLSN实现WAL记录的保序,而GaussDB云原生数据库采用细粒度页面级Lamport LSN保序,进程内无全局冲突点,在多核/众核情况下扩展性更强,能够更好的发挥硬件算力。
第二,GaussDB云原生采用页面亲和性设计,脏页面无需回写共享内存,而该云厂商数据库采用中央式全量脏页面管理机制,事务产生的脏页面均须回写共享内存,造成大量页面在网络间频繁传递。


GaussDB云原生数据库架构图

GaussDB云原生数据库在节点亲和性算法设计方面,除了分布式缓冲池的页面属主和读授权机制外,Undo段和FSM算法也充实考虑了节点亲和性设计,将节点间的网络交互降至最低,确保极致性能。
在Undo segment的节点亲和性设计上,从undo tablespace分配空间,多节点共享undo tablespace,而每个盘算节点利用分布式锁机制亲和性分配Undo segment,每个Undo segment同一时候只能被一个盘算节点绑定。


Undo segment亲和性分配机制图

在FSM空闲空间管理节点亲和性算法上,针对Heap FSM采用主动分区机制优化表数据插入分配页面算法,淘汰节点间冲突;针对索引空页面管理,采用主动分区机制优化索引查找空页面算法,淘汰节点间冲突。


空闲空间管理亲和性分配机制



高可用

在高可用方面,GaussDB云原生数据库的节点故障能够做到6s内规复,且对其他正常节点无影响,而别的厂商需要30s以上。可用性存在上述差异的根本原因在于,该云厂商摆设在共享内存层支撑多写的核心组件存在单点题目,保存其上的全量脏页面、锁、事务状态等信息,在故障时需要全量规复,特殊是全局Buffer Pool,需要从共享存储的查抄点依次规复,较为耗时。与之相对比,GaussDB云原生围绕高可用做了大量创新:
起首,共享内存无脏页状态设计,仅内存节点故障时无需规复WAL;
其次,盘算节点采用Past-Image设计,盘算节点故障可从最近Image规复,规复时间大幅淘汰;
最后,GaussDB云原生业界首创双check-point设计,盘算节点故障从内存查抄点规复,只有盘算节点和共享内存节点同时故障时,才从共享存储的查抄点规复WAL。


双check-point设计机制



高弹性

在弹性扩展方面,GaussDB采用盘算-内存-存储三层池化解耦设计,支持分层独立弹性伸缩,对应用透明。盘算层将全局锁和页面属主目录(POD,Page Owner Directory)等状态下沉至共享内存层,本地仅保留数据页面,盘算层增删节点无需状态信息迁移,实现秒级弹性伸缩;共享内存层采用POD方式管理缓冲池页面属主关系,POD基于一致性Hash均匀分布在共享内存层,增删节点仅迁移少量Bucket,内存层秒级弹性,应用无感知。


分层弹性伸缩


论文总结

GaussDB云原生数据库,打造盘算/内存/存储三层池化架构,实现多节点透明多写、分层弹性伸缩、秒级快速规复、秒级节点扩展能力,为用户带来最大代价。GaussDB持续创新,打造新型竞争力,为世界提供更优选择。
接待小同伴吗交流~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农民

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表