OceanBase 数据库存储的读写分离的架构

网站编辑2022-10-14 14:14:19644

  OceanBase 数据库采用了一种读写分离的架构,把数据分为基线数据和增量数据。其中增量数据放在内存里(MemTable),基线数据放在SSD盘(SSTable)。对数据的修改都是增量数据,只写内存。所以DML是完全的内存操作,性能非常高。读的时候,数据可能会在内存里有更新过的版本,在持久化存储里有基线版本,需要把两个版本进行合并,获得一个最新版本。同时在内存实现了Block Cache和Row cache,来避免对基线数据的随机读。


  当内存的增量数据达到一定规模的时候,会触发增量数据和基线数据的合并,把增量数据落盘。同时每天晚上的空闲时刻,系统也会自动每日合并。
  OceanBase本质上是一个基线加增量的存储引擎,跟关系数据库差别很大,同时也借鉴了部分传统关系数据库存储引擎的优点。
  传统数据库把数据分成很多页面,OceanBase也借鉴了传统数据库的思想,把数据分成很多2MB为单位的宏块。合并时采用增量合并的方式,OceanBase的合并代价相比LevelDB和RocksDB都会低很多。另外,OceanBase通过轮转合并的机制把正常服务和合并时间错开,使得合并操作对正常用户请求完全没有干扰。
  由于OceanBase采用基线加增量的设计,一部分数据在基线,一部分在增量,原理上每次查询都是既要读基线,也要读增量。为此,OceanBase做了很多的优化,尤其是针对单行的优化。OceanBase内部除了对数据块进行缓存之外,也会对行进行缓存,行缓存会极大加速对单行的查询性能。对于不存在行的“空查”,我们会构建布隆过滤器,并对布隆过滤器进行缓存。OLTP业务大部分操作为小查询,通过小查询优化,OceanBase避免了传统数据库解析整个数据块的开销,达到了接近内存数据库的性能。另外,由于基线是只读数据,而且内部采用连续存储的方式,OceanBase可以采用比较激进的压缩算法,既能做到高压缩比,又不影响查询性能,大大降低了成本。
  以上就是关于“OceanBase 数据库存储的读写分离的架构”的相关介绍,如果亲们还有什么不清楚的地方,可以直接咨询我们的在线客服!

最新推荐

右侧广告图1
  • 对象存储OSS

    阿里云对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。

    ¥171.99/年

    包年75折

  • 标准OSS存储包

    适合图片/音视频等多媒体数据存储,数据实时处理,海量存储无上限

    ¥89.00/年

  • 云原生数据仓库 百炼

    企业级能力完备,极具性价比,兼容 PG/Greenplum 开源生态及 Oracle/TD 语法生态; 自研云原生存算分离架构,具备秒级弹性和数据共享等国内领先的产品能力; 具备高吞吐的实时数据加工及分析能力,打造全 SQL 体验的一站式实时数仓

    ¥993.00/月

    1年8.5折 不限数量

右侧广告图2