Zone(Availabilty Zone,区,可用性区)
一个 OceanBase 集群,由若干个 Zone 组成。Zone 的含义是可用性区,通常指一个机房(数据中心,IDC)。为了数据的安全和高可用性,一般会把数据的多个副本分布在多个 Zone 上。这样,对于OB来说,可以实现单个 Zone 的故障不影响数据库服务。一个 Zone 包括若干物理服务器。Zone 是 AvailabilityZone 的简写。
Server(OBServer,OB服务器)
Server 是一个 OB 的服务进程,一般独占一台物理服务器。所以,通常也用 observer 指代其所在的物理机。在 OB内部,server 由其IP地址和服务端口唯一标识。
租户
OceanBase 通过租户实现资源隔离,采用“单集群多租户”的管理模式。在一个 OceanBase 数据库集群之中,可以提供多个数据库服务的实例,每个数据库服务的实例不感知其他实例的存在。这些不同的实例,每一个叫做一个租户。租户拥有一组计算和存储资源,提供一套完整独立的数据库服务。OceanBase 上有系统租户和用户租户。系统租户下存放 OceanBase 数据库管理的各种内部元数据信息;用户租户下存放用户的各种数据和数据库元信息。
资源池(Resource Pool)
一个租户拥有若干个资源池,这些资源池的集合描述了这个租户所能使用的所有资源。一个资源池由具有相同资源规格(Unit Config)的若干个 UNIT(资源单元)组成。一个资源池只能属于一个租户。每个 UNIT 描述了位于一个Server 上的一组计算和存储资源,可以视为一个轻量级虚拟机,包括若干 CPU 资源,内存资源,磁盘资源等。一个租户在同一个 Server 上最多有一个 UNIT。实际上,从概念上讲,副本是存储在 UNIT 之中,UNIT 是副本的容器。
数据库(Database)
数据库是按数据结构来组织、存储和管理数据的仓库。数据库下包括若干表、索引,以及数据库对象的元数据信息。
表(Table)
最基本的数据库对象,OB 的表都是关系表。每个表由若干行记录组成,每一行有相同的预先定义的列。用户通过SQL 语句对表进行增、删、查、改等操作。通常,表的若干列会组成一个主键,主键在整个表的数据集合内唯一。
分区(Partition)
分区是物理数据库设计技术,它的操作对象是表。实现分区的表,我们称之为分区表。表分布在多个分区上。当一个表很大的时候,可以水平拆分为若干个分区,每个分区包含表的若干行记录。根据行数据到分区的映射关系不同,分为 hash 分区、range 分区(按范围)、key分区等。每一个分区,还可以用不同的维度再分为若干分区,叫做二级分区。例如,交易记录表,按照用户 ID 分为若干 hash 分区,每个一级hash分区再按照交易时间分为若干二级 range 分区。
TableGroup
表格组。每个表都可能有自己所属的表格组。TableGroup 是一个逻辑概念,它和物理数据文件没有关联关系,TableGroup 只影响表分区的调度方法,OceanBase 会优先把属于同一个 TableGroup 的相同分区号的调度,调度到同一台节点上,以减少跨节点分布式事务。
OBProxy
OceanBase1.0 云版本中,应用访问数据库使用 MySQL 多种语言的客户端来访问 OceanBase,OceanBase 以服务的形式提供给应用访问。OBProxy 就是满足此种需求,方便应用使用不同语言的 MySQL 客户端访问 OceanBase,它接收客户端的应用请求,并转发给 OBServer,然后 OBServer 将数据返回给 OBProxy, OBProxy 将数据转发给应用客户端。