OceanBase 0.4 自举时库表创建过程

本文详细介绍了OceanBase 0.4版本中库表创建的过程,包括从Schema配置文件到通过SQL创建表的转变。重点讲解了Schema配置文件格式,内部元数据表的建立,以及自举时的流程,如核心三表和Sys表的创建时序。此外,还探讨了列定义、联表关系配置和表信息的细节。
摘要由CSDN通过智能技术生成

OceanBase 0.4 自举时库表创建过程

传说,在OceanBase 0.4之前,表结构定义,包括系统内部元数据表,都从Schema文件中读取。0.4版本之后,通过SQL语句创建表结构(《OceanBase 0.4.2 SQL 参考指南》《OceanBase 0.5 SQL 参考指南》)。

在开源的OceanBase 0.4版本(OB唯一开源版本)的RootServer代码中,是可以看到从文件中读取Schema配置的代码段,在src/rootserver/ob_root_server2.cpp:340: ()

else if (!local_schema_manager_->parse_from_file(config_.schema_filename, config))
{
    TBSYS_LOG(ERROR, "parse schema error chema file is %s ", config_.schema_filename.str());
    res = false;
}

其中,config_.schema_filename的默认值是”etc/schema.ini“,但,这个文件安装以后的内容很简单(源码构建时由src/rootserver/schema.ini拷贝至${prefix}/etc/schema.ini):

[app_name]
name=obtest         # edit the app name when you deploy OceanBase for the first time
max_table_id=2000    # do not edit

说明,从0.4版本开始,至少应用的库表Schema结构定义不再从配置文件中读取,而是通过SQL来定义。

Schema配置文件格式

通过一个示例来大致了解Schema配置文件格式:

[app_name]       
name=collect
max_table_id=1003

[collect_item_id]      
table_id=1001
table_type=2
column_info=1,16,item_name,varchar,20
column_info=1,17,new_price,int
rowkey=item_name
rowkey_max_length=9
max_column_id=17

[collect_info]
table_id=1002
table_type=2
colume_info=1,16,uid,int
column_info=1,17,item_name,varchar,20
column_info=1,18,item_price,int
column_info=1,19,collect_time,create_time
rowkey=uid,item_name
join=[item_name$item_name]%collect_item_id:item_name$item_name,item_price$new_price
rowkey_max_length=17
max_column_id=19

应用的信息

[app_name]
name=collect
max_table_id=1003

应用的信息都写在 app_name 这个section 中. 目前主要有两个配置项:

  • name 用来配置应用的名称, 是一个长度不超过128位的字符串.
  • max_table_id 用来记录当前已经使用的最大的table_id.
    在OceanBase中, 每个表都由table_id唯一标识, 且table_id不可以被重复使用. max_table_id 这个配置项, 主要是为了方便 schema 生成程序记录已经使用过的table_id.

代码入口:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值