1、前言
目前典型在线业务的结构化关系型数据,往往存在冷热数据、查询时效的特征差异,业务层面出于降低数据存储成本的考虑,往往采用单独的数据表进行手动归档等传统方案。
然而,对于如大数据量、低频访问的冷数据场景,用户可能希望基于更低成本的对象存储完成归档降本,云原生数据库也应该拥有面向不同云存储兼容的能力。
本文主要介绍PolarDB MySQL基于自研存储引擎X-Engine以及冷热温分离技术实现数据全生命周期降本管理。
2、业务挑战
大多数在线业务关系型数据的读写特征,往往均是最新产生的热数据会被更频繁地读写,历史数据会随着时间的推移逐步低频被访问,在线业务与数据库需要重点考虑以下几个问题:
1、提供数据高压缩能力,直接降低数据存储成本
2、有效识别冷数据并便捷归档至廉价存储介质
3、归档后的冷数据存在较低频次的读写操作诉求
3、PolarDB MySQL冷热温分离概述
PolarDB MySQL在线热数据基于InooDB引擎存储于分布式共享存储PolarStore中,满足在线业务大规模高并发的读写请求。
针对落盘后的数据,经时间推移,数据读写负载已逐步降低,但还会遇到中低频次的读写请求。如半年内的交易订单信息,
PolarDB将这类特种的数据称之为温数据,将诸如像历史订单库、物流快递面单、IM聊天历史记录等数据称之为冷数据,其特点为数据体量大,读写频次较低。
从整体数据生命周期(Data lifecycle)视角,如何有效地将在线业务的温数据、冷数据进行有效的识别、归档以降低成本费用,并提供顺滑的读写DML操作,
是PolarDB MySQL需要重点设计并考虑的。PolarDB MySQL基于自研的X-Engine引擎以及冷数据归档能力,可高效支撑热温冷数据分离,实现数据全生命周期的有效管理。
3.1、PolarDB MySQL高压缩引擎X-Engine
为应对如上数据归档、存储降本方面的挑战和诉求,PolarDB通过阿里巴巴自研的基于LSM-Tree架构的存储引擎X-Engine提供了强大的数据压缩能力,满足了归档数据库低存储成本的要求。
通过LSM-Tree(Log-Structured Merge-Tree)层次化架构与Zstandard(ZSTD)压缩算法实现了更高的数据压缩率,对比使用InnoDB作为热数据的存储引擎,X-Engine最高可节省70%的存储空间。
通过合并X-Engine的事务WAL日志流和InnoDB的Redo日志流,实现了一套日志流和传输通道同时服务于InnoDB引擎和X-Engine两套引擎,
将X-Engine的IO模块对接到PolarDB InnoDB所使用的用户态文件系统PFS上,实现了InnoDB与X-Engine共享同一个分布式块设备。
至此PolarDB进入双引擎时代,基于InooDB引擎完成在线热数据的高并发、高吞吐的读写操作,并基于X-Engine引擎针对PolarStore中的中低频次读写负载的温数据实现压缩降本。
3.2、PolarDB MySQL X-Engine架构详解
PolarDB MySQL X-Engine引擎使用了LSM-Tree作为分层存储的架构基础,并进行了重新设计:
● 热数据层和数据更新使用内存存储,通过内存数据库技术(Lock-Free index structure/append only)提高事务处理的性能。
● 流水线事务处理机制,把事务处理的几个阶段并行起来,极大提升了吞吐。
● 访问频度低的数据逐渐淘汰或是合并到持久化的存储层次中,并结合多层次的存储设备(NVM/SSD/HDD)进行存储。
● 对性能影响比较大的Compaction过程做了大量优化:
● 拆分数据存储粒度,利用数据更新热点较为集中的特征,尽可能的在合并过程中复用数据。
● 精细化控制LSM的形状,减少I/O和计算代价,有效缓解了合并过程中的空间增大。
● 同时使用更细粒度的访问控制和缓存机制,优化读的性能。
3.3、PolarDB MySQL 冷数据归档
存储在PolarStore上的热数据及温数据,按时间推移逐步会变成冷数据,PolarDB MySQL支持将需要进行冷存归档的InnoDB、X-Engine引擎存储的热温数据以
CSV、ORC、IBD格式手动及自动归档至对象存储OSS中,以达到按数据生命周期全局管理,实现数据热温冷分离,并降低存储成本的目的。
PolarDB MySQL支持将冷数据归档为CSV或ORC格式并存储在OSS上,并提供查询能力。对于Partiton分区表
,PolarDB MySQL同时还支持在读写RW节点上创建DLM策略来自动归档冷数据,提高整体冷数据归档效率。
与归档为CSV和ORC格式文件不同,IBD格式是在InnoDB存储引擎下直接应用OSS对象存储,无需修改数据表的引擎,
通过归档DDL语句即可将IBD格式文件的存储位置从PolarStore迁移至OSS。归档完成后,PolarStore中的IBD数据会被自动删除,
存储费用会随存储空间容量的降低而减少。归档至OSS的IBD文件仍具有DML能力。
且IBD格式的文件保留了原有的索引结构,因此归档后的IBD格式的文件仍具备原有索引能力。
4、结语
通过PolarDB MySQL的冷热温分离技术以及原生自研的X-Engine高压缩引擎,可全方位便捷地管理数据全生命周期,大幅降低数据存储降本。
未来PolarDB MySQL冷热温分离特性将继续深层次结合X-Engine引擎在实现高压缩的情况下,逐步完成智能温冷数据识别及自动老化归档等特性,帮助业务更高效的完成冷数据归档及存储成本优化。