OceanBase 源码解读(十三):一号表

2024年 5月 7日 88.0k 0

OceanBase 源码解读(十三):一号表-1

本文作者:镇楠,OceanBase 内核研发工程师,对于分布式集群中副本位置信息的管理方法有着丰富的理解。

OceanBase 有一套独特的元数据管理方式,它的一个设计目标是:所有的信息都保存在表里(甚至包括配置项),系统表的表模式也不能 Hardcode,且一切是自包含的,没有外部依赖。这样一个明显的好处是在大规模集群管理时极大便利运维人员,但这也使得元数据有某些循环依赖需要解开。用户表的元数据存储在系统表,系统表的元数据存储在核心表,核心表的元数据存储在系统租户的一号表。一号表就是开天辟地的那一个,THE ONE。

RootService(简称RS)即总控服务,负责整个 OceanBase 集群的资源调度、资源分配、数据分布信息管理以及 Schema 管理等功能。而 RS 不是独立的进程,是启动在 __all_core_table 的 Leader 上的一组服务。要想学习 RS 的相关代码,就需要先弄懂 __all_core_table。

__all_core_table 是什么?

从最基础的角度看,__all_core_table 是一张 key-value 结构的表,表号为1,是整个集群启动时生成的第一张表,它内部存储了 RS 启动需要的一些信息。由于 RS 的启动、RS 提供的服务,都需要依赖 __all_core_table,使得 __all_core_table 成为了 RS 整个服务的基础、RS 一切的起点。

1、 __all_core_table 的 schema

__all_core_table 是 key-yalue 结构的,它的 schema 硬编码在 int ObInnerTableSchema::all_core_table_schema(ObTableSchema &table_schema) 中,可以在ob_inner_table_schema_def.py 中查看其 schema 具体内容。(其中 gm_columns 为隐藏列,自动生成时间,可忽略。)

__all_core_table 的 rowkey 包含三个:table_name、row_id、column_name ,每组 key 对应一个column_value。可以理解为将正常的二维关系表拆分成一维进行存储。

OceanBase 源码解读(十三):一号表-2

2、 __all_core_table 的内容

OceanBase 源码解读(十三):一号表-3

OceanBase 源码解读(十三):一号表-4

(*上图分别为 GROUP BY table_name 和 table_name = '__all_table_v2' 对应内容)

__all_core_table 保存了启动 RS 所需的必要信息,其中重要的核心表包括:

1)__all_root_table:location cache 模块的核心表,记录了系统表和 __all_tenant_meta_table(租户级,用于记录用户表位置的一张核心表)的位置。__all_root_table 的位置信息,记录在 __all_core_table中;其 schema 信息记录在 __all_table_v2 和__all_column 中。

2)__all_table_v2(__all_table 已废弃)、__all_column、__all_ddl_operation:schema 模块的核心表,由该3张表按层级展开,记录所有表的 schema 信息。(*这些表的 schema 被记录在 __all_column 和 __all_table_v2 中)

————————————————

(未完待续)

附录:前十二篇可参考:

1、OceanBase 数据库源码解读(一)引言

2、OceanBase 数据库源码解读(二)目录结构

3、OceanBase 源码解读(三)SQL 的一生

4、OceanBase 源码解读(四)分区的一生

5、OceanBase 源码解读(五)事务的一生

6、OceanBase 源码解读(六)租户的一生

7、OceanBase源码解读(七)带你看透虚拟表

8、OceanBase源码解读(八)OceanBase 高性能执行引擎

9、OceanBase源码解读(九)TableAPI 和 OceanBase 多模型

10、OceanBase 源码解读(十)分布式事务

11、OceanBase 源码解读(十一):表达式和函数

12、OceanBase 源码解读(十二):事务日志的提交和回放

最后的最后,您有任何疑问都可以通过以下方式联系到我们~

联系我们

欢迎广大 OceanBase 爱好者、用户和客户随时与我们联系、反馈,方式如下:

社区版官网论坛

社区版项目网站提 Issue

钉钉群:33254054

OceanBase 源码解读(十三):一号表-5

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论