高压缩引擎(X-Engine)最佳实践
由于X-Engine分层存储的架构特点,该引擎特别适合某些业务负载特征的业务,本文介绍X-Engine的典型应用业务场景。
X-Engine的分层存储架构特别适合具有如下业务负载特征的业务:
数据访问具有鲜明的时间特征。例如大部分读取及修改操作集中在最近写入的数据上,而历史数据较少被访问。X-Engine通过将最新写入的数据缓存在内存中并通过高效数据结构进行索引,可以实现极高的性能,而较少访问的历史数据则保存在磁盘,提供稍逊的读写性能。
库表数据量特别大。传统InnoDB引擎迁移到X-Engine后,依据数据特征不同,存储空间可降低至10%~50%;迁移到X-Engine之后,很多业务可以免除分库分表的需求,使用单库即可承载近10 TB的数据存储服务。
作为中国领先的电子商务服务提供商,用户体量庞大,阿里内部有非常多的在线业务承受非常大的存储成本压力。接下来为您介绍阿里巴巴集团内部使用X-Engine解决业务需求的几个典型案例。
关于X-Engine的介绍请参见高压缩引擎(X-Engine)介绍。
钉钉聊天记录信息库
钉钉作为中国领先的企业IM工具,在中国有超过亿级别的用户。不同于传统的微信等用户级IM工具。 企业IM需要实现聊天记录的永久保存,并且提供多端漫游功能。在用户量持续爆炸性增长的前提下,聊天记录的永久保存给钉钉业务带来极大的成本压力,同时在数据爆炸性增长的前提下保证聊天记录的读写性能不降低也是一个极大的挑战。
在初期采用InnoDB引擎并面临存储的压力时,钉钉考虑了多种候选方案,例如HBase等NoSQL服务。但是企业IM对数据一致性有比较苛刻的需求,同时业务类型的多样化,也对诸如二级索引等数据库的功能有比较强的依赖。
在采用X-Engine之后,相同原始数据,所需的磁盘空间比使用InnoDB引擎减少了62%。同时继续保有了对事务以及二级索引等数据库特性的支持。业务代码不做任何修改即可以迁移到使用X-Engine引擎的集群上。
阿里图片空间信息库
阿里巴巴集团图片空间是淘宝智能图片中心面向商家提供的免费图片存储管理服务,由于淘宝、天猫主站上累积的用户图片数据量非常大,图片空间业务也面临非常巨大的存储空间和写入性能压力,尤其每年双11之前,商家大量更新商品库存保有单位SKU(Stock keeping Unit),此时数据会急剧增长。
由于图片空间业务存储的图片元信息大部分为文本内容,特别是一些URL属性,非常适合X-Engine引擎中使用的前缀压缩算法。再结合X-Engine中的紧凑数据页和通用压缩算法。迁移到X-Engine引擎之后的图片空间业务,所使用的磁盘空间只有使用InnoDB引擎的1/7。这意味着PB级别的空间节省。
在达到空间节省目标的同时,X-Engine引擎所能承载的TPS相对InnoDB没有降低,且响应时延也完全满足在线业务的要求。