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 上开发和部署应用!

相关推荐
少年攻城狮3 天前
OceanBase系列---【oracle模式的存在即更新,不存在即新增的merge into用法】
数据库·oracle·oceanbase
GottdesKrieges3 天前
通过obd升级OceanBase数据库
数据库·oracle·oceanbase
TiDB 社区干货传送门3 天前
【附操作指南】从 Oceanbase 增量数据同步到 TiDB
linux·服务器·数据库·tidb·oceanbase
x10n95 天前
OceanBase 参数对比工具 附源码
数据库·vscode·oceanbase·腾讯云ai代码助手
云贝教育-郑老师8 天前
【OceanBase OBCE V3.0认证】
数据库·oceanbase
风123456789~13 天前
【OceanBase专栏】脚本调用OB过程实验
数据库·oceanbase
咨询QQ1808095114 天前
LCC - S无线电传输系统移相闭环控制仿真探索
oceanbase
风123456789~14 天前
【OceanBase专栏】OB不同模式自增的实现
数据库·笔记·oceanbase
穿林鸟14 天前
阿里龙蜥OS 8.6离线安装单机版OceanBase 4.3(社区版)
oceanbase