深入 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 的简单改造,而是一个从存储引擎到事务模型都重新设计的分布式数据库。对于正在做数据库选型或架构升级的团队,值得认真评估。

相关推荐
隔窗听雨眠19 小时前
从存储引擎到执行计划:OceanBase高效运维的调优逻辑与工程实践
运维·oceanbase
隔窗听雨眠6 天前
从预测数据分布到设定阈值:OceanBase自动分区桌面版体验实录
oceanbase
shunwahma6 天前
MySQL 替代选型,为什么首选 OceanBase 集中式?
数据库·mysql·oceanbase
运维小斌9 天前
麒麟 V10 部署 OceanBase:故障速查与验收清单
linux·数据库·oceanbase·麒麟
云贝贝贝9 天前
白天稳如狗半夜就抖:OceanBase 合并转储把读写延迟顶了上去
数据库·sql·oceanbase
库库的数据库笔记9 天前
国产信创数据库的MySQL兼容性深度对比解析
大数据·数据库·mysql·oceanbase·政务
NineData11 天前
MySQL 迁移到 OceanBase 怎么做?NineData 全量迁移、CDC 实时同步与数据校验指南
数据库·mysql·oceanbase
运维小斌13 天前
麒麟 V10 ARM64 离线部署 OceanBase:8 步实施手册
linux·数据库·oceanbase·麒麟
OceanBase数据库官方博客17 天前
OceanBase 亮相亚马逊云科技峰会分享全球化实践(技术解析与实践)
科技·oceanbase
OceanBase数据库官方博客18 天前
被 VLDB 2027接收OceanBase 最新论文让数据库基(技术解析与实践)
数据库·人工智能·oceanbase