随着业务发展和时间积累,业务系统的数据库存储着较大规模的数据,而这些数据访问频率是不同的,通常访问频率高的热数据是少量,比较多的冷数据访问频率并不高,甚至有些冷数据只需要只读。如果这些冷数据都存储在联机事务处理OLTP(On-Line Transaction Processing)数据库引擎中,如MySQL InnoDB引擎,会在成本、安全、性能等问题上带来一些挑战,常见做法是将系统中的冷数据存储在归档数据库中。此时,一个高压缩比、性能稳定可靠、完全兼容MySQL的数据库引擎会是最佳选择,阿里云RDS MySQL X-Engine就是符合此类需求的产品。
阿里云 RDS MySQL最大存储只支持32TB,那如何存储50T的数据呢?本文将帮助阿里云用户开发者们了解RDS X-Engine的以下特性:
-
相对于MySQL InnoDB引擎,X-Engine有50%左右的压缩率,RDS最大32TB存储的规格下,可以存64TB InnoDB引擎的数据。
-
相对于MySQL InnoDB引擎,只写场景大约提升了20%的性能,只读和读写混合场景性能略差。
-
完全兼容MySQL,并和MySQL有相同的生态。
1、X-Engine是什么
X-Engine是阿里云数据库产品事业部自研的联机事务处理OLTP(On-Line Transaction Processing)数据库存储引擎,完全兼容MySQL数据库。
X-Engine使用了LSM-Tree技术。LSM-Tree将数据进行分层存储,严格的顺序append-only写入磁盘,所以极大提高了数据库写入能力。在对海量数据的存储和检索场景下,近几年流行的NoSQL通常采用了此技术,比如Apache顶级开源数据库项目HBase、Cassandra,又如Google和Facebook分别开源的数据库存储引擎LevelDB、RocksDB。
阿里对LSM-Tree进行了大量的重构设计:
-
热数据层和数据更新使用内存存储,通过内存数据库技术(Lock-Free index structure/append only)提高事务处理的性能。
-
流水线事务处理机制,把事务处理的几个阶段并行起来,极大提升了吞吐。
</