PolarDB诞生5周年,已经成为较为成功的商业数据库,线上运行核数突破500000核,拥有全球80+可用区。
PolarDB是基于 MySQL 与 PG 的升级版数据库,因此对 MySQL 与PG 实现了完全兼容。另外,PolarDB注重于云原生数据库的发展,因此在云原生方面做了很多研究,我们每年都会在顶会发表论文,将研究成果与大家共同分享。
上图为PolarDB的最新架构图,依然坚持了模块化建设的路径。
PolarDB在存算分离以及物理复制方面已经非常成熟,因此逐渐开始往另一层次发展,今年我们发布了很多新的节点,包括HTAP节点、X-engine节点、多写节点、AI节点等。很多节点可以进行自由搭配和转换,以适配客户需要的应用场景。也实现了Scale Out与Scale Up两个方向的弹性伸缩。
PolarDB是共享资源的数据库,对资源硬件非常关注。我们充分利用新硬件实现软硬一体化,将硬件的红利分享给用户。
今年,PolarDB实现了两个硬件的升级。其一为Smart-SSD ,它是基于FPGA 的SSD存储。通过Smart-SSD进行数据的压缩后可实现2.0-3.0的压缩比。左下角的性能图显示,使用Smart-SSD后,相比于线上的云盘保持着非常大的优势。同时,因为我们可以做数据压缩,使用户成本降低60%。所以我们有机会将存储售价降低50%,让利给用户。
另一个硬件升级是将RDMA网络升级到100G,通过RDMA实现了PolarDB的高性能全局强一致性,能够使各类节点更稳固,能够搭建更大的架构供更丰富的场景使用。也保证了不管在哪个节点或节点之间存在多少latency,都可以成功地读到写入。
通过RDMA的升级,性能提高了近63倍。
PolarDB HTAP新推出了In-Memory Column Index功能。物理复制将数据从一个节点复制到另外一个节点时,实现了行列转换,将行存的数据转换为列存。
通过执行算子与执行器对列存性能进行了分析,如右图所示,效果显著。
行存方面,PolarDB发布了ePQ并行查询新特性。其中e代表弹性,ePQ可以实现节点之间的并行查询。
左图为4个32节点的并行查询,结果显示整体执行时间较MySQL提升60多倍,单条执行时间最大提升150倍。右侧为对60亿+大表的分组聚集,执行时间小于60s,而实现并行查询之前,耗时约8h。
PolarDB正式商业化发布“库表级多写”。
在分库分表的场景下,可以对一个节点、多个表进行scaling。每个表有一个主节点,一个节点管理多个库、表,库表级多写的优势在于可以共享shared-everything架构,每个节点都可以看见所有数据,因此,增加节点或减少节点时无需对数据进行迁移,拥有极佳的弹性能力,可轻松对节点做增减,无需进行数据的重复迁移。
另外,它实现了多主互备,每个节点都是另外节点的备节点,备节点也可以成为主节点,提高了备节点的利用率。
另外,我们实现了行级多写的灰度发布。利用Polar Fusion实现了事务、锁、缓存信息的全局协调。
上图为阿里云PolarDB与友商的对比,PolarDB多写在冲突写和无冲突写场景下均具有非常大的优势。
PolarDB即将支持全球就近写,可以在全球范围内,通过并行的物理复制技术,实现两秒以内的延迟。能够支持表级别的就近写,数据会进行双向同步,保证数据的全局一致性。
X-Engine基于LSM架构,能够保证非常高的压缩率。可以将X-Engine与 InnoDB并行插入,数据可以在两个引擎之间自动流动。因此,用户可以针对数据的冷热自行分配数据在何处。
使用X-Engine进行压缩后,淘宝图片库实现了近6倍的压缩,淘宝交易订单压缩近3倍,性能方面相较于标准集群版略有不足但是相近。
PolarDB的Serverless不仅支持纵向、单节点地弹,也支持横向、跨节点地弹,实现了极致弹性,包括热备节点、断点续传、连接保持等。
上图可以看出,PolarDB Serverless能够根据压力自动增加PCU数量,从而自动提升QPS。压力停止后,PCU逐渐降低。单节点规格达到上限后,可通过自动增加只读接节点来应对突发压力,提升性能。
PolarDB一直在性能方面进行持续优化。通过云原生架构全路径的深度优化、高性能存储的引擎优化以及高性能索引PolarIndex大幅提高了性能。
DDL方面我们也在持续改进。并行DDL使得建索引的速度提升15-20倍。同时,我们正在实现Multiversion Dictionary,可实现InstantDDL,无需实现全表的重建,通过Dictionary的改变即可生效。
PolarDB在典型行业的最佳实践
贾新华
阿里云数据库事业部资深产品专家
游戏行业痛点与PolarDB的实践:
版更期间备份时间大于1小时,以及玩家经常丢失装备,需要快速找回。而PolarDB支持秒级备份以及库表级、行级的闪回,可以大幅缩短版更时间,从小时级降低至分钟级;
游戏设备越来越充足,装备信息越来越多,导致大部分字段长度可能超过1 M,非常影响更新性能。通过PolarDB对BLOG字段实现专项优化,装备更新性能提升5倍;
游戏活动较为频繁,而活动会导致负载快速变化。PolarDB支持多主架构,能够大幅缩短缩短滚服合服时间,实现分钟级快速的响应;
游戏往往全球发行,导致部分玩家登录速度过慢。而PolarDB的GDN能够实现业务就近访问,使效率提升40%以上。
零售行业往往有供应链、销售以及运营分析,系统均独立构建且系统之间的构建较复杂。可以通过PolarDB的IMCI特性,免去复杂架构,实现实时分析,无ETL、更稳定。
SaaS行业租户多且租户量会快速变化,PolarDB提供的Serverless能力可以根据实际使用来分配资源,使成本降低约60%。另外,SaaS场景下多租户之间会共用资源,导致互相影响,PolarDB提供了多主架构,实现了租户资源的严格隔离。
另外,零售行业会存在百万级的DDL,而PolarDB提供了高性能的 DDL ,包括秒级DDL、并行DDL等,可在海量表的情况下实现DDL时性能无抖动、业务无堵塞。
泛政府行业也存在几个关键痛点:
首先,需要自研数据库,而PolarDB数据库代码自研率超80%,可满足各种合规方面的要求,使供应链更安全;同时,升级传统商业数据库较为复杂,风险不可控,而PolarDB提供了高度兼容Oracle的能力,能够使成本显著降下,此外,PolarDB提供了一系列工具链与方法论,使升级过程可控、可管理;其次,泛政府行业合规要求同城、异地容灾,而PolarDB提供了两地三中心容灾,既可以实现同城的高可用,也可以实现异地的高可用;另外,泛政府行业正在做数据大集中,要求高扩展,而PolarDB单机可扩展100T共享存储以及32计算节点,可以免去分库分表,实现业务无侵入。