深入 OceanBase——HTAP、LSM-Tree 与容灾架构

一篇搞懂 OceanBase 的技术内核

之前的文章我们介绍了 OceanBase 的基本概念。这篇我们深入几个核心技术点,看看它到底"厉害"在哪里。

LSM-Tree:写性能的秘密武器

传统数据库大多使用 B+Tree 作为存储结构,B+Tree 读性能好,但每次写入都可能触发页面分裂,写放大严重。

OceanBase 选择了 LSM-Tree(Log-Structured Merge-Tree)。它的思路是:

  1. 写入时:数据先追加到内存中的 MemTable(类似一个有序缓冲区),写一条日志(Redo Log),就返回成功。写入极快。
  2. 后台合并(Compaction):当 MemTable 写满后,OceanBase 会将它冻结并刷到磁盘,形成一个 SSTable(不可变的有序文件)。后台定期将多个小的 SSTable 合并成大的,同时清理过期数据。
  3. 读取时:先查 MemTable,再按从新到旧的顺序查 SSTable,用 Bloom Filter 加速跳过不相关的文件。

这种架构让 OceanBase 的写入吞吐量远高于传统 B+Tree 数据库,特别适合高并发写入场景。

增量数据与基线数据

OceanBase 把数据分为两层:

  • 增量数据(MemTable + 最近的转储文件):最新修改的数据,体积小,访问频繁。
  • 基线数据(Major SSTable):经过每日合并(Daily Major Compaction)后的完整数据集,体积大但结构规整。

每日合并是 OceanBase 的一个特色机制:每天凌晨,系统会把所有增量数据与基线数据做一次完整合并,生成新的基线。这既控制了增量数据的膨胀,也让全局查询性能保持稳定。

HTAP:一套引擎同时搞定交易和分析

HTAP(Hybrid Transactional/Analytical Processing)是近年数据库领域的热门方向。传统做法是交易用一套数据库(如 MySQL),分析用另一套(如 ClickHouse),中间靠 ETL 同步数据,延迟高、链路复杂。

OceanBase 的 HTAP 能力体现在:

  • 行存 + 列存:同一份数据可以同时以行存(适合点查和交易)和列存(适合聚合分析)两种格式存储。优化器根据查询类型自动选择最优路径。
  • 资源隔离:分析查询可以路由到专门的只读副本,不抢占交易负载的 CPU 和 IO。
  • 一份数据,零 ETL:不需要额外的数据同步链路,实时分析直接查同一套集群。

容灾架构:"三地五中心"

OceanBase 最具话题性的能力之一是支持城市级容灾。

它的多副本机制基于 Paxos 协议,可以灵活部署为多种架构:

|-------|--------------|-------------|
| 架构 | 说明 | 容灾能力 |
| 同城三机房 | 同一城市三个机房,三副本 | 任一机房故障自动切换 |
| 三地五中心 | 三个城市五个机房,五副本 | 任一城市故障自动切换 |
| 两地三中心 | 两个城市三个机房 | 主城市双机房+异地灾备 |

"三地五中心"是金融行业常用的最高等级容灾方案。即使一个城市整体不可用(自然灾害、大面积断电等),OceanBase 也能在剩余节点中自动选出新主,继续提供服务,且数据不丢不错。

分布式事务:两阶段提交 + 一阶段优化

分布式数据库绕不开分布式事务。OceanBase 的做法是:

  • 标准两阶段提交(2PC):跨分区事务先 Prepare,再 Commit,保证原子性。
  • 一阶段提交优化:如果事务只涉及一个分区(绝大多数情况),直接走一阶段提交,省去 Prepare 的网络开销,延迟大幅降低。
  • TSO(Timestamp Oracle):全局时间戳服务为事务分配单调递增的时间戳,保证全局事务的因果序。

这意味着大部分事务享受单机般的低延迟,只有真正跨分区的事务才付出分布式协调的代价。

小结

OceanBase 的技术栈可以用三个词概括:写快(LSM-Tree) 、能分析(HTAP) 、不怕挂(Paxos 多副本)。它不是对 MySQL 的简单改造,而是一个从存储引擎到事务模型都重新设计的分布式数据库。对于正在做数据库选型或架构升级的团队,值得认真评估。

相关推荐
knqiufan4 天前
MiniMax Code 接入 PowerContext:构建跨会话与跨 Agent 的项目上下文底座
ai·oceanbase·minimax·powercontext
最笨的羊羊4 天前
Oceanbase数据库系列之:向量数据库核心知识
数据库·oceanbase
星航夜空的帆舟4 天前
OceanBase源码架构总览
架构·oceanbase
星航夜空的帆舟4 天前
存储引擎上:Log Stream 与 Tablet 的元数据世界
oceanbase
星航夜空的帆舟4 天前
日志服务与 Palf:把 Multi-Paxos 摊开成一条可复制的日志
oceanbase
星航夜空的帆舟4 天前
OBServer 的进程模型与启动流程
oceanbase
星航夜空的帆舟4 天前
存储引擎下:MemTable、SSTable 与编码
oceanbase
灰原喜欢柯南15 天前
OceanBase 运维管理知识点——OCP 监控、诊断与变更控制
数据库·oceanbase