暂无图片
暂无图片
13
暂无图片
暂无图片
暂无图片

OceanBase数据存储概述

OceanBase 2022-10-09
1758

在 OceanBase 数据库的存储视角看,存储结构里最上层是 Partition Group,对应一个分区组,很多时候我们也将其简称为 PG。PG 是一个为了取得极限性能而抽象出来的一个概念。我们知道在一个用户的事务中,可能会操作很多张不同的表,在 OceanBase 数据库的分布式架构下,很难保证这些不同的表在相同的服务器上,那么这就势必会带来分布式事务,而分布式事务是依赖两阶段提交的,会有更大的开销;如果这些不同的表都在相同的服务器上,我们就有可能对这个事务做一阶段优化,以取得更好的性能。但大多数情况下,对表的位置其实是没有办法保证的。对于互联网下的很多应用,我们发现业务都会根据 User Id 做表的分区,并且多张表的分区规则都是相同的,对于这些表我们提供了语法来构建 Table Group,对于 Table Group 中的相应分区我们称之为 Partition Group,OceanBase 数据库会保证同一个 Partition Group 中的多个 Partition 始终绑定在一起,那么对于同一个 Partition Group 的事务操作就会被优化为单机事务,以取得更好的性能。

在一个 Partition Group 中可能包含多个 Partition,注意这些 Partition 的分区键和分区规则要完全相同。Partition Group 是 OceanBase 数据库的 Leader 选举和迁移复制的最小单位。Partition 就是表的一个分区,和 Oracle/MySQL 对于分区的定义基本相同。表的分区规则可能有很多种,例如 Hash 分区、Range 分区、List 分区甚至二级分区等等,但对于存储层来说,并不关心以上分区规则,都一视同仁为 Partition。

在 OceanBase 数据库中, 对于用户表支持创建局部索引,局部索引的特征就是在存储上会和主表绑定在同一个 partition 内部存储,主表和每个索引在内部会存储在各自独立的Table Store 内,在每一个Table Store 中会包含多个 SSTable 和 MEMTable。MEMTable 存储于内存,存储动态数据,提供读写操作;SSTable 存储于磁盘,存储静态数据并且只读。

2

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论