OceanBase背后的存储引擎巨头曝光
OceanBase是阿里巴巴和蚂蚁金服自主研发的通用分布式关系数据库,定位为商业企业数据库。OceanBase可以提供财务级的可靠性。目前主要应用于金融行业,也适用于非金融行业。它利用普通PC服务器构成数据库集群,结合传统关系数据库和分布式架构的优势,具有良好的线性伸缩性。
在底层分布式发动机中,OceanBase完成了Paxos的大部分协议和多副本特征,具有可用性和容灾能力,无愧于“永远在线”数据库系统的美称,能够完美支持多站、多站、容灾等可扩展布局。
OceanBase是一个具有独特读写分离架构和SSD高效存储引擎的准内存数据库系统,为用户带来超高性能感受。
OceanBase定位于云数据库中。通过在数据库中实现多租户隔离,一个集群可以为多租户服务,租户完全隔离,互不影响。
目前OceanBase完全适合MySQL,用户可以零成本地从MySQL转移到OceanBase,同时OceanBase完成了数据库中的分区表和二次分区功能,完全可以替代MySQL中常用的数据库和表划分方案。
OceanBase的存储引擎
本质上,OceanBase是一种基线增量的存储引擎,与关系数据库大不相同。存储机制是LSM(日志结构合并树),这也是大多数NoSQL使用的存储机制。OceanBase选择读写分离结构,将数据分为基线数据和增量数据,其中增量数据存储在内存中(MemTable)在SSD硬盘中存储基线数据。(SSTable)中间。尽管没有刻意设计,OceanBase的确比传统数据库更适合短期突发流量场景,如双十一、秒杀、优惠券销售等:
大量用户在短时间内涌入,短时间内业务流量大,数据库系统压力大。
一段时间后(几秒、几分钟或半小时等)。),业务流量迅速或明显下降。
OceanBase是“基线数据(硬盘)”如图所示,修改增量(内存)的结构。
整个数据库依靠硬盘(通常是SSD),所有的数据修改都是增量数据,只写在内存中,新增、删除、更改的数据(更改增量)都在内存中,所以DML是一个完整的内存操作,性能非常高。基线数据存储在硬盘上,所以OceanBase可以看作是一个准内存数据库。这样做的好处是:
内存中写的事务(除了必须下载的事务日志),所以性能有了很大的提高。
没有随机写入硬盘,随机读取硬盘不受干扰,高峰期系统性能明显提升;对于传统数据库来说,业务高峰期一般是大量随机写盘(脏页刷)的高峰期,大量随机写盘会消耗大量的IO,尤其是考虑到SSD的放大,对读写性能影响很大。
只阅读基线数据,缓存简单,效果提高。
在获取数据时,数据可能会在内存中更新,并在永久存储中包含基线版本。为了获得最新版本,有必要合并两个版本。同时,在内存中实现块缓存和行缓存,防止基线数据的随机读取。当内存中的增量数据达到一定规模时,会触发增量数据和基线数据的合并,将增量数据转储(称为dump,也称为minorfreeze)。同时,系统会在业余时间自动合并(简称大冻结)。
简而言之,OceanBase选择这种特殊结构的原因是基于这样一个理论基础——虽然数据库本身的数据量越来越大,记录的数量也越来越多,但是每天增加、删除、修改的数据量并不大,只占整个数据库的一小部分。这种情况不仅适用于支付宝支付数据,也适用于其他大多数数据库的实际应用,是OceanBase建立上述存储引擎的重要理论基础。