OceanBase 系统中包含两大类的租户:系统租户和普通租户。

    系统租户是系统内置的,有三个主要的功能:

    • 具备集群管理功能的用户的容器

    和系统租户相对应的是普通租户,普通租户可以被看作是一个数据库实例,它由系统租户根据需要(比如说为了某个业务的需要)创建出来。在创建租户的时候,除了指定租户名字以外,最重要的是指定它占用的资源情况。普通租户具备一个实例所应该具有的所有特性:

    • 可以创建自己的用户

    • 数据库实例所具备的其他特性

    多租户隔离有不同的实现方式,这些实现方式的效果是类似的。OceanBase 数据库采用的是在数据库内部实现一个 SQL 虚拟机,这种方案的好处是 DB 内把很多业务统一管理,把整个管理机制做得对用户特别透明。另外隔离的开销比较低,单台服务器可以服务更多的租户,降低云服务的整体成本。租户隔离分为三个部分:CPU、IO 还有内存,网络目前还不是瓶颈,不做隔离。

    OceanBase 数据库是分布式系统,多租户除了单机层面怎么做隔离,还涉及到在多机层面如何做调度。OceanBase 数据库的负载均衡分为两个层面:第一个层面是租户负载均衡,即把每个租户的资源容器分布到很多台 OBServer 上面去。第二个层面是分区负载均衡,如果租户只在一台服务器,第二个层面是没有必要的。如果租户在多台服务器上,需要把这个租户的分区均匀地分布到它的资源容器中。OceanBase 数据库内部会尽量使得小租户只在一台服务器上,避免分布式事务。当租户需要的资源逐步增加时,OceanBase 数据库也能做到自动扩展,对用户是透明的。