oceanbase基础概念和语法介绍

OceanBase 是由蚂蚁集团自主研发的分布式关系型数据库,兼容 MySQL 和 Oracle 模式,具备高可用、强一致性、水平扩展、HTAP(混合事务/分析处理)等能力。以下是其核心基础概念与常用语法介绍。


一、OceanBase 核心架构与基础概念

1. 分布式架构

  • 多副本强一致:数据自动分片(Partition),每个分片在多个节点(OBServer)上存有副本(通常 3 副本),通过 Paxos 协议保证强一致性。
  • 无共享(Shared-Nothing):每个节点独立存储和计算,避免单点瓶颈。
  • 自动负载均衡:数据和流量可动态迁移,实现弹性扩缩容。

2. 关键组件

组件 说明
OBServer 数据库服务进程,负责 SQL 执行、存储引擎、事务处理
RootService 集群管理服务(自动选主),负责负载均衡、副本调度、DDL 管理
OCP(OceanBase Cloud Platform) 运维管理平台(Web UI),用于监控、备份、告警等
ODP(OceanBase Database Proxy) 代理层,客户端连接 ODP,由其路由到具体 OBServer

3. 租户(Tenant)

  • 逻辑隔离单元 :类似"数据库实例",一个集群可创建多个租户(如 mysql_tenant, oracle_tenant)。
  • 资源隔离:每个租户分配 CPU、内存、磁盘资源(通过 Resource Unit 控制)。
  • 模式选择:创建租户时指定兼容模式(MySQL / Oracle)。

4. 分区(Partition)

  • 表数据按分区规则(如 HASH、RANGE、KEY)拆分到多个 Partition。
  • 每个 Partition 有多个副本(Leader + Follower),Leader 处理读写,Follower 只读或同步。

5. LS(Log Stream) & Tablet

  • LS(日志流):事务日志的最小单位,一个 LS 包含多个 Tablet。
  • Tablet:存储的最小物理单元(类似传统数据库的"段"),是副本调度的基本单位。

二、OceanBase 兼容模式

OceanBase 支持两种 SQL 模式:

特性 MySQL 模式 Oracle 模式
默认端口 2881 2881
标识符大小写 不敏感(默认转小写) 敏感(双引号保留大小写)
字符串引号 单引号 ' 单引号 '
分页语法 LIMIT offset, size ROWNUMFETCH FIRST
自增列 AUTO_INCREMENT SEQUENCE + TRIGGER
日期函数 NOW(), CURDATE() SYSDATE, CURRENT_DATE

💡 创建租户时指定模式:

sql 复制代码
CREATE TENANT mysql_tenant 
RESOURCE_POOL_LIST = ('pool1'), 
PRIMARY_ZONE = 'zone1', 
LOCALITY = 'F@zone1,F@zone2,F@zone3',
COMMENT 'MySQL mode tenant';

三、常用 SQL 语法(以 MySQL 模式为例)

1. 建表与分区

sql 复制代码
-- 普通表(自动分区)
CREATE TABLE users (
  id BIGINT PRIMARY KEY,
  name VARCHAR(50),
  create_time DATETIME
);

-- 显式 HASH 分区(按 id 分 8 个分区)
CREATE TABLE orders (
  order_id BIGINT,
  user_id BIGINT,
  amount DECIMAL(10,2)
) PARTITION BY HASH(user_id) PARTITIONS 8;

-- RANGE 分区
CREATE TABLE logs (
  log_id BIGINT,
  log_date DATE
) PARTITION BY RANGE COLUMNS(log_date) (
  PARTITION p2023 VALUES LESS THAN ('2024-01-01'),
  PARTITION p2024 VALUES LESS THAN ('2025-01-01')
);

2. 插入与查询

sql 复制代码
-- 插入数据
INSERT INTO users (id, name, create_time) 
VALUES (1, 'Alice', NOW());

-- 查询(支持 MySQL 语法)
SELECT * FROM users WHERE id = 1 LIMIT 1;

-- 分布式 JOIN(自动优化)
SELECT u.name, o.amount 
FROM users u JOIN orders o ON u.id = o.user_id;

3. 事务控制

sql 复制代码
-- 显式事务(强一致性)
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
COMMIT;

4. 系统视图(监控用)

sql 复制代码
-- 查看当前租户分区信息
SELECT * FROM oceanbase.DBA_OB_TABLE_LOCATIONS;

-- 查看会话
SHOW PROCESSLIST;

-- 查看资源使用
SELECT * FROM GV$OB_SERVERS;  -- 所有节点状态

四、特色功能语法

1. 全局索引(Global Index)

sql 复制代码
-- 在非分区键上创建全局索引
CREATE INDEX idx_order_amount ON orders(amount) GLOBAL;

2. 闪回查询(Flashback Query)

sql 复制代码
-- 查询 5 分钟前的数据(依赖 clog 保留时间)
SELECT * FROM users AS OF TIMESTAMP (NOW() - INTERVAL 5 MINUTE) 
WHERE id = 1;

3. 多模(JSON 支持)

sql 复制代码
-- JSON 类型(MySQL 模式)
CREATE TABLE products (
  id BIGINT,
  info JSON
);

INSERT INTO products VALUES (1, '{"color": "red", "size": "M"}');
SELECT info->'$.color' FROM products;

五、运维常用命令(通过 ODP 或直连)

场景 命令
查看集群状态 SHOW DATABASES;oceanbase 库中有集群元数据
切换租户 USE your_tenant_name;
查看执行计划 EXPLAIN SELECT ...;
查看变量 SHOW VARIABLES LIKE '%timeout%';
设置会话参数 SET ob_query_timeout = 10000000; (单位微秒)

六、与 MySQL 的主要差异

功能 OceanBase(MySQL 模式) MySQL
自增列 支持,但性能较差(建议用序列) 原生高效支持
外键 ❌ 不支持 ✅ 支持
存储过程 ✅ 支持(MySQL 模式) ✅ 支持
触发器 ✅ 支持 ✅ 支持
全文索引 ❌ 不支持 ✅ 支持
临时表 ❌ 不支持 ✅ 支持
分区类型 HASH/RANGE/LIST/KEY 更丰富(如 COLUMNS)

📌 最佳实践

  • 避免大事务(默认超时 10s)
  • 主键设计尽量单调递增(避免热点)
  • OLAP 查询走 只读副本独立分析型租户

七、快速体验

  1. 部署 :使用 OceanBase Docker 镜像 快速启动。

  2. 连接

    bash 复制代码
    mysql -h127.0.0.1 -P2881 -uroot@sys -p -c -A
  3. 创建租户 & 数据库

    sql 复制代码
    CREATE TENANT test_tenant resource_pool_list=('test_pool');
    CREATE DATABASE test_db;
    USE test_db;

✅ 总结

关键点 说明
定位 分布式 HTAP 数据库,替代 MySQL/Oracle
核心优势 强一致性、水平扩展、金融级高可用
使用门槛 兼容 MySQL/Oracle,但需注意限制(如无外键)
适用场景 高并发交易系统、海量数据存储、混合负载

官方文档:https://www.oceanbase.com/docs

开源版本:OceanBase CE(社区版)免费可用。

掌握以上概念和语法,即可开始在 OceanBase 上开发和部署应用!

相关推荐
OceanBase数据库官方博客1 天前
主流关系型数据库系统缺陷实证研究——OceanBase 校企联合研究
数据库·oceanbase·分布式数据库
OceanBase数据库官方博客1 天前
客户案例|美的以OceanBase为基构建云中立数字化基座破局多云孤岛
数据库·oceanbase·分布式数据库
OceanBase数据库官方博客1 天前
基于分层协作多智能体的数据库参数调优——OceanBase 校企研究
数据库·oceanbase·分布式数据库
OceanBase数据库3 天前
滔搏基于OceanBase实现 15TB到0.9TB“无痛切换”与“系统瘦身”
oceanbase·分布式数据库
OceanBase数据库4 天前
基于分层协作多智能体的数据库参数调优——OceanBase 校企研究
oceanbase·分布式数据库
OceanBase数据库4 天前
美的以OceanBase为基构建云中立数字化基座破局多云孤岛
oceanbase·分布式数据库
OceanBase数据库5 天前
印尼头部私营征信机构基于OceanBase实现核心数据库现代化升级
oceanbase·分布式数据库
OceanBase数据库官方博客6 天前
深度解读 OceanBase 多模一体化能力
数据库·ai·oceanbase·分布式数据库
赵渝强老师9 天前
【赵渝强老师】国产金仓数据库的数据库对象
数据库·postgresql·oracle·oceanbase·国产数据库
OceanBase数据库官方博客10 天前
OceanBase 一体机实现极简运维 10:1数据压缩降成本
oceanbase·分布式数据库