OceanBase简要概述及存储引擎
NEWS | 2023-03-22 09:03
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,也称为minor freeze)。同时,系统会在每晚空闲时间自动合并(简称大冻结)。
OceanBase简而言之,为什么采用这种特殊的架构,是基于这样一个理论基础——虽然数据库本身的数据量越来越大,记录的数量也越来越多,但是每天增加、删除、修改的数据量并不大,只占整个数据库的很小比例。这种情况不仅适用于支付宝的支付数据,也适用于其他大部分数据库的实际应用,是OceanBase建立上述存储引擎的重要理论依据。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
千航国际 |
国际空运 |
国际海运 |
国际快递 |
跨境铁路 |
多式联运 |
起始地 |
|
目的地 |
45+ |
100 |
300 |
详情 |
深圳 |
→ |
迪拜 |
30 |
25 |
20 |
详情 |
广州 |
→ |
南非 |
26 |
22 |
16 |
详情 |
上海 |
→ |
巴西 |
37 |
28 |
23 |
详情 |
宁波 |
→ |
欧洲 |
37 |
27 |
23 |
详情 |
香港 |
→ |
南亚 |
30 |
27 |
25 |
详情 |