浅谈OceanBase数据结构

简介:

OceanBase数据分为基线数据和增量数据两个部分,基线数据分布在多台ChunkServer上,增量数据全部存放在一台UpdateServer上。如下图所示,系统中有5个子表,每个子表有3个副本,所有的子表分布到4台ChunkServer 上。RootSever中维护了每个子表所在的ChunkServer的位置信息,UpdateServer存储了这5个子表的增量更新。
OceanBase数据结构

不考虑数据复制,各模块的数据结构如下:

基线数据的数据结构

  • 每个表格按照主键组成一棵分布式B+树,主键由若干列组成;
  • 每个叶子节点包含表格一个前开后闭的主键范围(rk1,rk2]内的数据;
  • 每个叶子节点称为一个子表(tablet),包含一个或者多个SSTable;
  • 每个SSTable内部按主键范围有序划分为多个块(block)并内建块索引(block index);
  • 每个块的大小通常在4~64KB之间并内建块内的行索引;
  • 数据压缩以块为单位,压缩算法由用户指定并可随时变更;
  • 叶子节点可能合并或者分裂;
  • 所有叶子节点基本上是均匀的,随机地分布在多台ChunkServer机器上;
  • 通常情况下每个叶子节点有2-3个副本;
  • 叶子节点是负载平衡和任务调度的基本单元;
  • 支持布隆过滤器的过滤。

增量数据的数据结构

  • 增量数据按照时间从旧到新划分为多个版本;
  • 最新版本的数据为一棵内存中的B+树,称为活跃MemTable;
  • 用户的修改操作写入活跃MemTable,到达一定大小后,原有的活跃MemTable将被冻结,并开启新的活跃MemTable接受修改操作;
  • 冻结的MemTable 将以SSTable的形式转储到SSD中持久化;
  • 每个5STable内部按主键范围有序划分为多个块并内建块索引,每个块的大小通常为4~8KB并内建块内行索引,一般不压缩;
  • UpldateScver支持主备,增量数据通常为2个副本,每个副本支持RAID1存储。
目录
相关文章
|
1月前
|
SQL 存储 大数据
数据仓库(10)数仓拉链表开发实例
拉链表是数据仓库中特别重要的一种方式,它可以保留数据历史变化的过程,这里分享一下拉链表具体的开发过程。 维护历史状态,以及最新状态数据的一种表,拉链表根据拉链粒度的不同,实际上相当于快照,只不过做了优化,去除了一部分不变的记录,通过拉链表可以很方便的还原出拉链时点的客户记录。
165 13
数据仓库(10)数仓拉链表开发实例
|
2月前
|
存储 NoSQL 关系型数据库
面试题14: 关系型数据库和非关系型数据库的区别
面试题14: 关系型数据库和非关系型数据库的区别
|
8月前
|
SQL 存储 关系型数据库
探索关系型数据库:构建有序的数据世界
在数字化时代,数据以前所未有的速度增长和演变。关系型数据库作为数据管理的关键工具,为组织和个人提供了有效存储、检索和处理数据的方法。本文将带您深入了解关系型数据库的定义、原理和应用,以及它在今天的重要性。
91 0
|
4月前
|
存储 NoSQL 分布式数据库
分布式NoSQL列存储数据库Hbase_高级思想(八)
分布式NoSQL列存储数据库Hbase_高级思想(八)
41 0
|
存储 数据采集 数据管理
数据仓库和数据库的区别是什么?底层原理是什么?
数据仓库和数据库的区别是什么?底层原理是什么?
220 0
|
存储 NoSQL 关系型数据库
PostgreSQL中的变长数据结构Varlena
在本文是PostgreSQL学习系列---基础数据类型的第二篇,对PG中的Varlena类型进行了介绍,内容还会随着学习进行不断补充~
1304 0
|
存储 SQL 算法
《OceanBase 存储引擎结构》下 | 学习笔记
快速学习《OceanBase 存储引擎结构》下
420 0
《OceanBase 存储引擎结构》下 | 学习笔记
|
存储 关系型数据库 数据库
【数据库专题】一文搞懂 B+树凭什么成为关系型数据库索引的主流数据结构
【数据库专题】一文搞懂 B+树凭什么成为关系型数据库索引的主流数据结构
【数据库专题】一文搞懂 B+树凭什么成为关系型数据库索引的主流数据结构
|
SQL NoSQL 安全
数据库面试题【十、【非关系型数据库】和【关系型数据库】的【区别】与【优势比较】】
数据库面试题【十、【非关系型数据库】和【关系型数据库】的【区别】与【优势比较】】
183 0
|
SQL 存储 NoSQL
数据库面试题【八、关系型数据库和非关系型数据库区别】
数据库面试题【八、关系型数据库和非关系型数据库区别】
288 0

热门文章

最新文章