OceanBase数据库的基本概念

集群相关的概念

集群(Cluster)

OceanBase数据库集群由一个或多个Region组成,Region由一个或多个Zone组成,Zone由一个或多个节点组成,每个节点可有若干个Unit,每个Unit可有若干个日志流Logstream的Replica,每个Logstream可使用若干个Tablet。

地域(Region)

Region是指一个地域或城市,而一个Region可能包含一个或多个Zone。不同Region通常距离较远,而在OceanBase数据库中,一份数据可以被部署在多个Region中的不同副本上,以保证数据的高可用性和容错性。每个Region都是一个物理数据中心的地理区域,不同地域之间是完全隔离的,以确保系统在不同地域间具备最高程度的稳定性和容错能力。

分区(Zone)

Zone是一个逻辑概念,是对节点进行管理的容器,一般是具有相似容灾属性的一组OBServer节点的组合。

在OceanBase中,Zone是指一个数据中心或一个物理区域,它是一个逻辑上的概念,通常包含多个存储节点,这些节点在物理上可以分布在不同的机房、不同的机架或不同的服务器上。一个Zone可以包含多个数据中心(比如机房),但是一个数据中心只能属于一个Zone。

从物理层面来讲,一个Zone通常是一个独立的物理部署单元,可以是一个数据中心(IDC)或者云上的一个可用区,也可以是一个单独的机架(Rack)。通过将OceanBase集群部署于不同的Zone,实现单个Zone故障时的故障隔离及快速恢复。

在OceanBase中,Zone通常用于实现跨数据中心的数据容灾。OceanBase会将数据按照一定的规则分布到不同的Zone中,从而实现数据的冗余备份。当一个Zone发生故障时,系统可以自动切换到备用Zone中的数据来保证数据的可用性。

除了数据容灾,OceanBase的Zone还可以用于数据分片的容器。数据分片是一种将数据划分为多个分片,并将不同分片存储在不同的节点上的技术,可以提高系统的吞吐量和性能。在OceanBase中,可以将不同的Zone作为不同的分片的Primary Zone,从而实现分布式存储和处理数据。

⚠️ OceanBase中的Zone与我们常说的AZ的含义不完全一致。AZ指的是可用区(Availability Zone),是指在同一地理区域内,相互隔离的数据中心集群。可用区通常由相互独立的电力、网络和冷却系统组成,以确保高可用性和冗余性。

主可用区(Primary Zone)

Primary Zone指的是分区的主副本所在的Zone,可以为分区指定一个Zone的列表,当分区需要切主的时候,容灾策略会按照这个列表的顺序决定新主的偏好位置。

节点(Server|Node)

OceanBase数据库服务器。server是运行observer进程的物理机,一台物理机上可以部署一个或者多个OBServer。在OceanBase数据库内部,server由其IP地址和服务端口唯一标识。

OBServer进程

OceanBase数据库是单进程软件,进程名为observer。通常一台物理或者虚拟服务器运行一个observer进程,由IP和端口作为唯一标识,我们称之为节点,也可以用OBServer节点表示。observer进程作为OceanBase数据库最核心的组件,负责几乎所有数据库内核功能,包括SQL引擎、存储引擎和事务引擎。分布式的功能也同样在这个进程中,包括RPC通信、分区管理和负载均衡等。

总控服务(Root Service)

OceanBase数据库集群会有一个Root Service,其运行在某个OBServer节点上。当Root Service所在机器故障时,其余节点会选举出来新的Root Service。Root Service主要提供资源管理、容灾、负载均衡、schema管理等功能。

租户相关的概念

租户(Tenant)

OceanBase数据库通过租户实现资源隔离,采用单集群多租户的管理模式。OceanBase集群的一个租户相当于一个MySQL或者Oracle的实例。OceanBase数据库的租户之间的资源和数据都是隔离的。租户拥有一组计算和存储资源,提供一套完整独立的数据库服务。

OceanBase数据库上有系统租户和普通租户。系统租户下存放OceanBase数据库管理的各种内部元数据信息;普通租户下存放用户的各种数据和数据库元信息。

租户类似于传统数据库的数据库实例,租户通过资源池与资源关联,从而独占一定的资源配额,可以动态调整资源配额。在租户下可以创建Database、表、用户等数据库对象。

集群偏向于部署层面的物理概念,是Zone和节点的集合,Zone和节点具有部署地域(称为Region)等属性;而租户则偏向于资源层面的逻辑概念,是在物理节点上划分的资源单元,可以指定其资源规格,包括CPU、内存、日志盘空间、IOPS等。

资源规格(Unit Config)

资源规格规定了一个Unit需要使用的计算存储资源(包含内存、CPU和IO等)的规格,是一个资源配置信息。创建资源池时指定其资源规格,从而根据定义创建资源单元。

资源单元(Unit)

资源单元是租户在节点上的容器,描述租户在节点上的可用资源(CPU、MEMORY 等)。一个租户在一个节点只能同时存在一个Unit

OceanBase按照Unit来管理物理资源,是CPU、内存、存储空间、IOPS等物理资源的集合。Unit也是资源调度的基本单位,其具有节点、Zone、Region等位置属性,节点是服务器的抽象,Zone是机房的抽象,Region是地域的抽象,通过调整Unit的位置属性从而调整租户的部署方式。

资源池(Resource Pool)

一个租户拥有若干个资源池,这些资源池的集合描述了这个租户所能使用的所有资源。一个资源池由具有相同资源规格的若干个资源单元组成。一个资源池只能属于一个租户。每个Unit描述了位于一个server上的一组计算和存储资源,可以视为一个轻量级虚拟机,包括若干CPU资源、内存资源和磁盘资源等。

一个租户在同一个server上最多有一个Unit。实际上,从概念上讲,副本是存储在Unit之中,Unit是副本的容器。

每个Unit都归属于一个资源池,每个资源池由若干个Unit组成,资源池是资源分配的基本单位,同一个资源池内的各个Unit具有相同的资源规格,即该资源池内Unit的物理资源大小都相同。

日志相关的概念

副本(Replica)

为了数据安全和提供高可用的数据服务,每个日志流的数据在物理上存储多份,每一份叫做日志流的一个副本。每个副本,包括存储在磁盘上的Tablet的静态数据(SSTable)、存储在内存上的Tablet的增量数据(MemTable)、以及记录事务的日志三类主要的数据。根据存储数据种类的不同,副本有几种不同的类型,以支持不同业务在在数据安全、性能伸缩性、可用性、成本等之间的选择。

分片(Tablet)

OceanBase数据库V4.0.0版本引入了分片(Tablet)概念来表示实际的数据存储对象。它具备存储数据的能力,支持在机器之间迁移(Transfer),是数据均衡的最小单位。Tablet与分区一一对应,单分区表会创建一个Tablet,多分区表会为每个分区创建一个Tablet。索引表的每个分区也会对应一个Tablet,包括局部索引表和全局索引表。特别地,局部索引表的Tablet与主表Tablet会强制绑定,保证存储在一台机器上。

日志流(Log Stream)

日志流是由OceanBase数据库自动创建和管理的实体,它代表了一批数据的集合,包括若干Tablet和有序的Redo日志流。它通过Paxos协议实现了多副本日志同步,保证副本间数据的一致性,实现了数据的高可用。日志流副本支持在不同机器之间迁移(Migration)和复制(Replication),以达到机器管理和系统容灾的目的。

从数据存储的角度来看,日志流可以抽象为Tablet容器,支持添加和管理Tablet数据,允许Tablet在不同日志流之间转移(Transfer),以达到数据均衡和水平扩展的目的。

从事务的角度来看,日志流是事务的提交单位。事务修改在单个日志流内完成时可以采用一阶段原子提交;事务修改跨多个日志流时,采用OceanBase数据库优化的两阶段提交协议完成原子提交,日志流是分布式事务参与者。

clog(Commit Log)

OceanBase会将包括事务在内的所有对数据库状态的修改操作,以redo log的形式记录并通过Multi-Paxos一致性协议持久化在集群的多个副本之中。这样的一组redo log在OceanBase中称作clog。

clog按照日志流进行组织,每个日志流有自己的一组clog文件。同时,各个租户的clog文件是隔离的,每个租户可以设置本租户可以使用的clog空间大小。

clog既用于在数据库实例故障的场景下保证数据库的持久性和原子性,同时也用于备节点、物理备库、Change Data Capture等多个数据库功能实时获取数据库的状态变更操作。

slog(SSTable Log)

slog是节点为了维护本机基线数据一致性而使用的日志。

内存相关的概念

Sorted Strings Table(SSTable)

SSTable用于存储基线数据或转储数据,行数据有序存储。

增量数据表(MemTable)

MemTable是内存中增量修改记录的集合。

转储(Mini Compaction & Minor Compaction)

OceanBase数据库中的转储即Minor Compaction概念,可以理解和其他LSM-Tree架构数据库的Compaction概念类似,主要负责MemTable刷盘转成SSTable以及多个SSTable之间的Compaction策略选择以及动作。OceanBase数据库中采用的是leveled结合size tiered的Compaction策略,大致可以分为三层,其中L1和L2就是固定的leveled层次,L0层是size tiered,L0内部还会继续根据写放大系数以及SSTable个数进行内部Compaction动作。

小版本冻结(Minor Freeze)

分区在内存中的增量数据超过阈值时,冻结该分区当前活跃MemTable,不再接受新开启事务的写操作,新事务的写操作在该分区新的活跃MemTable中进行。

大版本冻结(Major Freeze)

集群中所有的节点在一个统一的快照点冻结当前的活跃MemTable,不再接受新开启事务的写操作,新事务的写操作在新的活跃MemTable中进行。

布隆过滤器(Bloom Filter)

布隆过滤器用于快速判断行在基线数据或转储数据是否存在,当结果为不存在时,可以减少磁盘IO和CPU消耗。

References
【1】https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002012832
【2】https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002012845
【3】https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002325135

<think>嗯,用户让我简要介绍一下OceanBase数据库基本概念和特点。首先,我需要确定用户对这个数据库的了解程度。可能用户是刚开始接触分布式数据库,或者想了解OceanBase与传统数据库的区别。 OceanBase是阿里巴巴开发的,这点很重要,应该提到。它是一个分布式关系型数据库,支持SQL和高可用性。用户可能想知道它的核心架构,比如分布式设计、高可用性、强一致性等特点。 接下来,要考虑用户的实际需求。他们可能是在评估数据库选项,或者需要处理高并发、海量数据的场景。比如金融、电商这些行业应用,应该举例说明OceanBase的适用场景。 用户可能还关心技术细节,比如Paxos协议、多租户架构、HTAP能力等。不过需要保持简洁,所以需要平衡技术术语和易懂的解释。此外,用户可能想知道与其他数据库(如MySQL、Oracle)相比的优势,比如兼容性、扩展性、成本等方面。 还要注意用户提到的“基本概念和特点”,所以需要分点列出,结构清晰。可能需要包括分布式架构、高可用、强一致性、水平扩展、HTAP、多租户、兼容性、低成本这些点。同时,每个点要简明扼要,避免过于冗长。 最后,用户可能希望了解实际应用案例,比如双11这样的场景,说明OceanBase处理高并发的能力。总结部分要突出其核心优势,帮助用户快速抓住重点。</think>以下是OceanBase数据库的核心概念与特点的清晰说明: ### 一、基本概念 1. **原生分布式架构** $$物理部署 = N \times (计算节点 + 存储节点) + Paxos协议$$ 采用Shared-Nothing架构,每个节点包含完整数据库功能,通过Paxos协议实现数据强一致 2. **多租户模式** 支持物理集群内创建多个逻辑租户,实现资源隔离与弹性分配 ```sql CREATE TENANT test_tenant RESOURCE_POOL_LIST = ('pool1'), ZONE_LIST = ('zone1','zone2','zone3'); ``` 3. **LSM-Tree存储引擎** 日志结构合并树实现高效数据写入,通过Compaction机制优化读取性能 --- ### 二、核心特点 #### 1. 高可用性 - **三副本强一致** 数据同步满足RPO=0,RTO<30秒 ![](https://via.placeholder.com/400x200?text=Paxos协议数据同步示意图) #### 2. 线性扩展能力 - 支持在线水平扩展 ```bash 增加节点 -> 数据自动resharding -> 负载均衡完成 ``` #### 3. HTAP融合引擎 ||OLTP|OLAP| |---|---|---| |事务处理|支持毫秒级响应|复杂查询优化| |典型场景|支付交易|用户行为分析| |资源隔离|通过资源组控制CPU/Mem|| #### 4. 高度兼容性 - 支持MySQL/Oracle模式 ```sql SET GLOBAL ob_compatibility_mode = 'ORACLE'; -- 切换兼容模式 ``` --- ### 三、典型应用场景 1. **金融级事务** 支付宝核心交易系统:支撑25.6万笔/秒支付峰值 2. **海量数据存储** 中国移动计费系统:管理超过500PB用户数据 3. **混合负载处理** 某电商平台:同时处理10万TPS订单交易与实时数据分析 --- ### 四、技术对比 | 维度 | OceanBase | 传统数据库 | |------------|----------------|----------------| |扩展方式 | 水平扩展 | 垂直扩展 | |最大节点数 | 1000+ | 16(典型) | |存储成本 | 压缩比5:1 | 压缩比2:1 | |部署模式 | 云原生 | 物理机部署 | --- 通过"三地五中心"部署架构,OceanBase在2021年双十一期间创造了4207万次/秒的数据库处理峰值,验证了其在高并发场景下的卓越性能。该数据库已通过TPC-C基准测试,以7.07亿tpmC的成绩保持世界纪录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值