每个表由若干行记录组成,每一行有相同的预先定义的列。用户通过 SQL 语句对表进行增、删、查、改等操作。通常,表的若干列会组成一个主键,主键在整个表的数据集合内唯一。

    分区是物理数据库设计技术,它的操作对象是表。实现分区的表,我们称之为分区表。

    表格组。每个表都可能有自己所属的表格组。

    TableGroup 是一个逻辑概念,它和物理数据文件没有关联关系,Table Group 只影响表分区的调度方法,OceanBase 数据库会优先把属于同一个 Table Group 的相同分区号的分区,调度到同一台节点上,以减少跨节点分布式事务。

    通过定义 TableGroup,用户可以控制一组表在物理存储上的临近关系。对于包含分区表的 TableGroup,它由若干个 Partition Group 组成。称 TableGroup 的每个分区表中下标相同的一组分区为 Partition Group。属于同一个 Partition Group 的所有 Partition,系统会通过自动调度使它们位于同一台 OBServer 服务器上,且这些分区副本的 leader 也位于一台 OBServer 上。除了用来定义“临近”关系,分区表本身隐含有“分片”的作用,要求系统在调度时,还会把同一个TableGroup 的不同 Partition Group 尽量在多个可用的机器间分散来开,以支持水平自动扩展。同时 Partition Group 是负载均衡和leader切换等操作的最小执行单元。

    对于属于一个 TableGroup 的不同 Partition Group,TableGroup 的概念无法定义和表达 Partition Group 之间的临近关系;也就是说,用户无法控制一个分区表的多个分区间是否聚集在一起。相反,RS 会让他们尽可能分散开。