查看: 1682|回复: 4

X-Engine 如何精准地冷热分离

[复制链接]

665

主题

1234

帖子

6575

积分

xdtech

Rank: 5Rank: 5

积分
6575
发表于 2020-11-12 15:54:35 | 显示全部楼层 |阅读模式

[color=rgba(0, 0, 0, 0.8)]X-Engine如何通过分析负载的访问特征来对数据实现精准的冷热分离,搭配混合存储架构实现自动归档冷数据,为用户提供极致的性价比。

[color=rgba(0, 0, 0, 0.8)]

[color=rgba(0, 0, 0, 0.8)]作者 | 张腾 王剑英 蔡鑫

[color=rgba(0, 0, 0, 0.8)]01

[color=rgba(0, 0, 0, 0.8)]X-Engine 简介

[color=rgba(0, 0, 0, 0.8)]X-Engine 是阿里云数据库团队自研的存储引擎,不仅支撑阿里集团淘宝天猫、钉钉等核心业务,也在公有云上大规模售卖。X-Engine借鉴了LSM-tree的设计思想,同时在存储成本方面比InnoDB有3-5倍的优势。

[color=rgba(0, 0, 0, 0.8)]X-Engine持久化层采用三层LSM-tree(L0/L1/L2)的组织结构,内存表采用skiplist作为索引组织,所有写入操作都直接插入内存表,和使用update-in-place更新方式相比,减少了随机IO。同时,X-Engine借助compaction这一后台操作对磁盘上的数据进行合并,删除冗余数据,保证了读取效率和空间效率。关于X-Engine的整体架构和相关优化可以参见 X-Engine: MySQL RDS的新存储引擎

[color=rgba(0, 0, 0, 0.8)]层次化的存储结构决定了数据的放置对X-Engine的性能和成本影响深远。X-Engine的设计初衷也是希望磁盘上的热数据尽量停留在L0和L1层,一方面是缩短热数据的读取路径,另一方面也尽量减少L1层和L2层合并带来的读写放大问题。

[color=rgba(0, 0, 0, 0.8)]由于OLTP型业务对访问延迟非常敏感,云厂商一般采用本地SSD或者ESSD云盘作为存储介质,实际上,对于流水型业务(交易、物流、即时通讯等),大部分数据在生成之后访问频次会逐渐降低,甚至不再被访问, 对于这些冷数据,如果和热数据一样存储在NVMe SSD等高速存储介质上,是对存储资源的浪费 。本文主要阐述了X-Engine如何通过分析负载的访问特征来对数据实现精准的冷热分离,搭配混合存储架构实现自动归档冷数据,为用户提供极致的性价比。


回复

使用道具 举报

665

主题

1234

帖子

6575

积分

xdtech

Rank: 5Rank: 5

积分
6575
 楼主| 发表于 2020-11-12 15:55:06 | 显示全部楼层
02

性能与成本能否兼得?

不同的存储介质对应不同的服务能力和价格,阿里云ECS目前提供多种存储介质的选择,有ESSD云盘,高效云盘,也有支持本地SSD和本地HDD的机型,选用云盘的弹性能力更好,而本地盘容量一般和机型绑定。以云盘为例,最高级别的ESSD (PL3) 的价格是高效云盘的10倍左右,但是IOPS能力是高效云盘的40倍。高效云盘中使用了少量SSD做写入缓存,如果是本地HDD盘,价格和性能差异更加明显。

我们可以简单地把数据库服务的成本划分为计算节点 (CPU + Memory) 和存储节点 (Storage) 的成本,按照阿里云上目前的价格,以16core 64g,4T存储容量的配比,在ECS上自建数据库服务的成本如下图所示。我们可以看到即使对于最便宜的高效云盘,存储费用(橙色部分)也占据了接近50%的TCO,而基于ESSD PL3自建的数据库服务,存储成本占比接近90%。对于有持久化需求的业务,这部分的TCO每年都会存在,并且会随着数据的增长不断增加。

追求系统的极致性能固然重要,但是 以更高的性价比 提供可靠的服务对于阿里云的众多中小企业客户有时更有意义。 X-Engine在不断优化系统性能、保证用户SLA的前提下,也在持续推进降低用户的存储成本 ,把数据根据冷热程度放在该放的地方,将存储介质的性价比发挥到极致。

回到“成本和性能可否兼得”的问题,答案在于我们能否准确地识别归档业务,并能提前预测出归档的数据,将这些数据放置在低廉的存储介质以最大化存储成本的收益。这里面的难点在于,我们如何将复杂的访问模式和数据的热度建立联系,捕捉到影响数据热度最主要的特征,准确地召回冷数据。

03

从阿里的业务需求谈起

在阿里的很多业务中,写操作和点查占绝大部分比例,这点也和最近学术界的研究不谋而合。实际上,LSM-tree的很多优化也是围绕着写入和点查来进行的,对于写入压力巨大的业务,即使LSM-tree和B+-tree相比在存储空间方面有明显优势,数据增长也会带来巨大的成本增长。

对于OLTP类型的业务,访问延时非常敏感,这也是为什么大多数数据库采用本地SSD或者ESSD作为存储介质。实际上,对于插入量巨大的业务,很多都属于归档型业务,比如电商数据(订单、物流、支付)、即时通信(IM)以及UGC[5]等业务。对于这类业务,有的数据在很长的时间窗口都会被访问,但是对于大部分数据都只有很短的生命周期。

我们给出了一个真实业务某一天插入的数据在未来3个月的总体访问频次曲线图(上图),同时也给出了这些数据的生命周期(即从数据插入到最后一次访问经过的时间,下图)。虽然总体上数据的访问频次在40天之后降到了很低的水位,但是不同数据的访问周期差别很大,有的数据在90天之后仍有访问,有的数据在插入后迅速冷却。数据的生命周期分布本质上体现了用户复杂的访问逻辑以及动态的业务运营规则,当然背后也隐藏着压缩存储成本的巨大空间。
回复

使用道具 举报

665

主题

1234

帖子

6575

积分

xdtech

Rank: 5Rank: 5

积分
6575
 楼主| 发表于 2020-11-12 15:55:47 | 显示全部楼层
04

混合存储,冷热分离技术的试金石

LSM-tree的分层结构配合混合存储介质是非常自然的事情,从DRAM到NVMe SSD再到SATA HDD,存储介质也体现着层次性的性能和成本gap,和LSM-tree分层的思想不谋而合。每一层存储介质该存储怎样的数据,是workload和存储技术的演进共同决定的。

数据库的“5分钟黄金法则” (每隔五分钟就要访问的数据应该放置在内存中)自1987年提出后,每隔10年就会重新学术界就会重新审视这一法则,在2017年的revisit中,由于内存的价格降低,容量提升,DRAM和HDD的五分钟法则已经转变为5个小时,即如果持久化层采用HDD,那么每隔5个小时需要访问的数据需要存储在内存中,对于在线业务,HDD存储的应该是非常冷的数据(extremely cold)。在VLDB2016提出的存储介质层次图中,HDD就已经处于在线业务的Capacity层,只有绝对的冷数据才应该放置在这一层次,否则会带来严重的性能损失。

实际上,LSM-tree on 混合存储并不是一个新鲜的概念,RocksDB和Cassadra都支持多种存储介质,但是对于选择什么样的数据放置在冷层没有进行深入的探讨。在SOCC2018中,Mutant尝试挑选最近一段时间访问频次较低的SSTable合并至冷层,但是SSTable中的数据是按照key order进行排序。

在实际的业务中,每一条记录的生命周期更多由用户的访问频次和业务逻辑决定,key order相近的记录访问频率相近这一假设在短期的时间窗口来看可能成立,但将时间周期拉长后,记录的热度很难由最近的访问模式决定。如果按照SSTable粒度划分冷热,很可能会出现没有绝对变冷的数据在冷层和热层之间频繁迁移,严重影响系统性能。

我们通过智能压测服务(ClouDBench)调节速率回放3天真实业务负载,实验采用的ECS机型为ecs.d2s (20C88G),搭配两种存储介质 local HDD 和 ESSD PL3,L0、L1放置在ESSD上,L2放置在local HDD上,如果仍然按照时序写入的顺序挑选SSTable合并至L2层,我们可以看到业务的延迟有两倍以上的增加,并且由于HDD IOPS能力有限,如果不能精准识别冷数据,HDD IO压力很容易达到瓶颈,导致latecny飙升,这对OLTP数据库显然是不能接受的。

我们希望能够通过精准的冷热识别将混合存储的潜力发挥到极致,做到成本和性能兼得。
回复

使用道具 举报

665

主题

1234

帖子

6575

积分

xdtech

Rank: 5Rank: 5

积分
6575
 楼主| 发表于 2020-11-12 15:56:15 | 显示全部楼层
05

Auto Archive

基于机器学习的冷数据自动归档

X-Engine提供自动归档冷数据的能力,通过分析日志信息,对适合冷热分离的业务自动进行冷数据归档,是业内第一个能够支持行级别数据自动归档的存储引擎。X-Engine混合存储版本支持多种混合存储介质,L0以及L1层推荐配置ESSD或者local SSD保证热数据的访问性能,L2层推荐配置高效云盘或者local HDD,归档后冷数据节省的存储成本更加明显。

不同于LRU等传统的cache替换置换策略,预测归档数据时间窗口更长,也需要考虑更多的特征:

访问频次,以一定时间窗口进行聚合,这部分特征反映了数据访问热度变化;

SQL日志的语义信息,以电商交易业务为例,订单表的访问模式就直接放映了用户的购物行为。对于虚拟订单的充值,一条记录在创建后可能就不会再被访问了,对于实物交易的订单,由于涉及到物流配送,签收,甚至还会涉及到退货等售后环节,数据的生命周期呈现出非常复杂的分布,再加上双十一、双十二等大促活动时对于发货、收货等规则的调整,同一个负载的数据生命周期分布也会出现变化,通过简单的规则很难识别出那些数据是冷数据,但是通过对SQL访问的字段进行编码作为特征,对于同一个业务而言,更新、读取某些字段和记录生命周期的不同阶段关系密切,可以较为精准地刻画一条记录的生命周期;

时间戳相关的特征,类似插入时间,最后一次更新的时间,也对数据的生命周期有指导意义;

将这些特征进行组合,利用机器学习的手段,我们在不同业务上都得到了不错的效果(冷数据的召回率和准确率都维持在90%以上),通过在业务低谷时期触发cold compaction,将每天预测的冷数据合并至冷层,我们可以最小化冷数据迁移对正常业务的影响。

06

实验

我们在多个真实业务上验证了Auto Archive的效果,通过preload一定时间的真实数据,通过算法将冷数据识别并自动归档到冷存储,压测阶段调节速率回放3天的真实业务流量,观测系统的性能表现。为了公平起见,baseline同样按照extent粒度挑选相同数据量合并至冷存储上,我们给出了baseline on essd, baseline on hybrid storage, auto archive on hybrid storage的性能表现。

评测通过ECS自建数据库,ECS机型使用ecs.d2s,20 core 88GB 内存,对于混合存储,L0和L1使用ESSD PL3,L2层使用local HDD作为存储介质。

在真实业务的流量回放中,Auto Archive的延迟和纯ESSD相比增加20%~30%左右,作为对比,如果无法精准识别冷数据,由于HDD IOPS能力有限,如果承接了较大的压力,会成为系统性能的瓶颈,因此使用简单时序策略的冷数据迁移策略,延迟和纯ESSD相比增加2到4倍,这对于TP型业务是无法接受的。

接下来,我们会探索迁移学习和联邦学习在智能冷热识别上的应用,利用阿里巴巴丰富的业务生态,不断增强模型的性能和迁移能力。

07

结语

冷热分离技术深刻影响着数据库的性价比,被工业界和学术界持续关注。X-Engine团队和北京大学、阿里达摩院智能数据库团队合作的另一项冷热分离相关工 Leaper: A Learned Prefetcher For Cache Invalidation In LSM-Tree Based Storage Engines 已经被VLDB’20 research track接收,后续会有相关文章进行解读。

根据福布斯2018年的报告,全球每天新增的数据量在2.5 EB字节[14],并且90%的数据是最近两年产生的,说明数据增长的速度也是非常迅速的。对于TP型业务,数据的冷热程度和用户的访问频次以及schema信息之间有着复杂的联系,如果我们可以借助统计和机器学习算法提前预测出冷数据,并进行自动迁移归档,会获得巨大的存储成本收益。X-Engine将会密切关注存储介质和工业负载特征的演进,提供给用户最稳定、性价比最高的数据库服务。
回复

使用道具 举报

665

主题

1234

帖子

6575

积分

xdtech

Rank: 5Rank: 5

积分
6575
 楼主| 发表于 2020-11-12 15:56:32 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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