全部产品
云市场

产品架构

更新时间:2019-09-18 13:14:50

OceanBase设计为一个Share-Nothing的架构,所以它是没有任何的共享存储结构的。至少需要部署三个以上的Zone,数据在每个Zone都存储一份。OceanBase的整个设计里面没有任何的单点,每个Zone有多个ObServer节点,这就从架构上解决了高可靠高可用的问题。

  • 各个节点之间完全对等,各自有各自的SQL引擎和存储引擎。存储引擎只能访问本地数据,而SQL引擎可以访问到全局Schema,并生成分布式的查询计划。查询执行器可以访问各个节点的存储引擎,并在各个节点间做数据的分发和收集,完成分布式计划的执行,并把结果返回给用户。
  • 其中一个节点还会额外担负起RootService服务,RootService同样会有多个备分布在各个Zone。主RootService和所有ObServer之间维持租约,当ObServer出现故障时,主RootService能够检测到并执行故障恢复操作。RootService是ObServer进程的一个功能模块,每台ObServer都具备RootService功能。RootService的功能主要包括:服务器与Zone管理、分区管理、每日合并控制、系统自举、DDL操作等等。
OceanBase的架构图如下所示 :

ob struct

相关概念:

1. Zone(Availabilty Zone,区,可用区)

Zone是AvailabilityZone的简写。一个OceanBase集群,由若干个Zone组成。Zone的含义是可用区,通常指一个机房(数据中心,IDC)。为了数据的安全和高可用性,一般会把数据的多个副本分布在多个Zone上。这样,对于OceanBase来说,可以实现单个Zone的故障不影响数据库服务。一个Zone包括若干物理服务器。

2. OBServer(OceanBase服务器)

OBServer是一个OceanBase的服务进程,一般独占一台物理服务器。所以,通常也用OBServer指代其所在的物理机。在OceanBase内部,server由其IP地址和服务端口唯一标识。

3.表(Table)

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

4.分区(Partition)

分区是物理数据库设计技术,它的操作对象是表。实现分区的表,我们称之为分区表。表分布在多个分区上。当一个表很大的时候,可以水平拆分为若干个分区,每个分区包含表的若干行记录。根据行数据到分区的映射关系不同,分为hash分区,range分区(按范围),key分区等。每一个分区,还可以用不同的维度再分为若干分区,叫做二级分区。例如,交易记录表,按照用户ID分为若干hash分区,每个一级hash分区再按照交易时间分为若干二级range分区。