国产数据库 OceanBase
---------------------------------------------------------------------------------------------------------------------------------
OceanBase 作为国产原生分布式数据库,在信创体系中以单机分布式一体化 + Shared-Nothing/Shared-Storage 双架构为核心,适配全栈国产软硬件,具备 HTAP 混合负载、强一致高可用、透明扩展与多租户隔离能力,是信创改造中核心系统迁移的优选方案oceanbase....。以下从架构分层、核心组件、信创适配与容灾能力展开详解。
一、整体架构概览
| 架构模式 | 核心特点 | 信创适配价值 |
|---|---|---|
| Shared-Nothing | 节点对等、本地存储、计算 / 存储 / 事务引擎一体化;支持跨 AZ / 跨地域多副本 | 适配通用 x86 / 国产 CPU 服务器,线性扩展,支撑核心交易系统 |
| Shared-Storage | 计算与日志分离(V4.4+ LogService),数据共享存储 | 适配对象存储 / 分布式存储,降低扩缩容成本,适配多云信创环境 |
| 单机分布式一体化 | 单机与分布式一键切换,主备 / 多副本模式动态调整 | 轻量化部署分支 / 非核心系统,平滑升级至分布式,统一技术栈 |
二、分层组件架构(自底向上)
1. 接入层(OBProxy)
- 兼容 MySQL 协议,支持读写分离、自动路由与故障转移,应用无需修改驱动即可接入oceanbase....。
- 信创价值:适配国产中间件(东方通 TongWeb、金蝶 Apusic),降低应用改造代价。
2. SQL 层
- 分布式 SQL 引擎:支持并行执行、向量化执行 2.0、行列混存智能选择,原生 HTAP 负载。
- 兼容性:双语法解析,兼容 MySQL/Oracle,适配信创迁移中存量 SQL 改写需求OceanBase。
3. 事务层
- 分布式事务:基于 Paxos 协议实现多副本强一致,支持 2PC / 分布式快照隔离 + 乐观锁,冲突回滚率显著降低。
- 一致性保障:RPO=0、RTO<30 秒,满足金融等核心系统信创高可用要求。
4. 存储层
- 混合存储引擎:Delta+LSM Tree(V4.3+),行存保障 TP 低延迟,列存加速 AP 查询,行列混存适配混合负载。
- 数据分片:按 Hash/Range 拆分 Tablet,支持动态负载均衡与热点迁移,提升资源利用率。
5. 复制与容灾层
- Paxos 协议多副本同步,支持 “三地五中心” 城市级容灾,跨 AZ / 跨地域部署,满足等保合规。
- V4.4+ LogService:日志与计算解耦,单副本计算节点也可跨 AZ 容灾,RPO=0oceanbase....。
6. 资源管理层
- 多租户隔离:CPU / 内存 / IO 资源组隔离,租户独立设置分布式策略,适配多业务混合部署OceanBase。
- 弹性调度:计算 / 存储独立扩展,新增节点无需迁移数据,支持在线扩容oceanbase....。
三、信创适配关键能力
- 硬件适配
- CPU:海光 7185/7280、鲲鹏 920、飞腾 2000 + 等完成互认oceanbase....。
- 整机:中科可控 H620、华为 TaiShan 200、长城擎天 DF720 等oceanbase....。
- 操作系统适配
- 麒麟 V4/V10、UOS V20 等国产 OS 深度兼容oceanbase....。
- 生态适配
- 中间件:东方通、金蝶等国产应用服务器完成适配互认oceanbase....。
- 备份 / 监控:兼容国产备份软件与运维平台,降低信创运维复杂度。
四、信创容灾与高可用
- 多副本部署:默认 3 副本,少数派故障不影响服务,自动切换。
- 部署拓扑:同城双机房 + 异地备集群、三地五中心,满足等保三级与金融级容灾要求。
- 故障恢复:节点 / 机房故障时 RTO<30 秒,数据零丢失,适配核心系统 7×24 可用需求。
五、信创迁移核心优势
- 平滑迁移:兼容 MySQL/Oracle,支持分库分表自动合并,降低迁移改造成本。
- 负载融合:一套引擎承载 TP+AP + 向量检索,减少信创技术栈复杂度(无需 OLTP+OLAP + 向量数据库多产品组合)。
- 成本优化:线性扩展 + 本地存储 / 共享存储灵活选择,适配信创预算约束。
- 自主可控:100% 自研,无开源依赖,规避供应链风险oceanbase....。
六、典型信创部署建议
- 核心交易系统:Shared-Nothing 3 副本跨 AZ 部署,Paxos 强一致,OBProxy 负载均衡,适配金融 / 政务核心场景。
- 分析型系统:Shared-Storage + 列存索引,向量化执行,适配数据仓库 / BI 信创改造。
- 分支 / 边缘系统:单机分布式一体化部署,与中心集群数据同步,统一技术栈,降低运维成本。
---------------------------------------------------------------------------------------------------------------------------------
数据库 HTAP 混合负载的实现原理
- OLTP:高并发、低延迟的短事务处理(如订单创建、账户转账)。
- OLAP:复杂、长时的分析查询(如报表统计、数据挖掘)。
一、 HTAP 的核心挑战
| 特性 | OLTP | OLAP |
|---|---|---|
| 查询类型 | 点查询、短事务(增删改查) | 复杂聚合、多表关联、全表扫描 |
| 并发量 | 极高(每秒数万到数十万请求) | 低(每秒数到数十请求) |
| 响应时间 | 毫秒级 | 秒级到分钟级 |
| 数据更新 | 频繁写入、实时性要求高 | 批量写入、对实时性要求不一 |
| 资源消耗 | 内存为主、CPU 利用率稳定 | CPU/IO 密集型、消耗资源波动大 |
二、 HTAP 的核心实现原理
1. 存储层:冷热数据分离 / 多副本存储
-
多副本架构(主流方案)
- 为同一份数据维护两份物理隔离的副本:
- 行存副本:针对 OLTP 优化,采用行式存储,支持高效的点查询、单行增删改,事务 ACID 特性强(如华为 GaussDB、阿里 PolarDB)。
- 列存副本:针对 OLAP 优化,采用列式存储,数据按列压缩存储,适合聚合查询和批量扫描,压缩比高(通常 10:1 以上),IO 效率高。
- 数据同步机制:行存副本的事务更新会通过日志同步(如 WAL)实时或准实时同步到列存副本,保证两份数据的一致性。同步方式分为两种:
- 实时同步:基于日志流的增量同步,延迟可控制在毫秒级,满足实时分析需求。
- 批量同步:定时合并增量数据,适合对实时性要求不高的场景,降低同步开销。
- 为同一份数据维护两份物理隔离的副本:
-
分区存储(轻量化方案)部分数据库(如 MySQL 8.0 的分区表 + 列式存储引擎)采用冷热数据分区:
- 热数据(近期活跃数据):行存,供 OLTP 访问。
- 冷数据(历史归档数据):列存,供 OLAP 查询。
优势是架构简单,缺点是实时分析能力弱,适合中小型系统。
2. 计算层:负载隔离与智能调度
-
资源隔离技术
- CPU 核绑定:将 OLTP 和 OLAP 的计算任务绑定到不同的 CPU 核心,避免上下文切换和资源争抢(如 GaussDB 的 NUMA 亲和性调度)。
- 内存隔离:为 OLTP 和 OLAP 分配独立的内存池,OLTP 的缓冲池(Buffer Pool)和 OLAP 的查询内存池互不干扰。
- 优先级调度:设置任务优先级,OLTP 事务优先级高于 OLAP 查询,当系统负载过高时,可暂停或降级 OLAP 任务,保障 OLTP 的低延迟。
-
智能查询优化
- 负载识别:数据库自动识别 SQL 的负载类型(OLTP/OLAP),并路由到对应的存储副本和计算资源。
- 例如:
SELECT * FROM order WHERE id=100→ 路由到行存副本,走索引查询。 - 例如:
SELECT sum(amount) FROM order GROUP BY date→ 路由到列存副本,走批量扫描。
- 例如:
- 查询重写与下推:针对 OLAP 查询,将聚合、过滤等操作下推到存储层执行,减少数据传输量;针对 OLTP 查询,优化索引和事务路径,降低锁冲突。
- 负载识别:数据库自动识别 SQL 的负载类型(OLTP/OLAP),并路由到对应的存储副本和计算资源。
3. 事务层:ACID 特性的兼容与平衡
-
强一致性保障(实时 HTAP)采用快照隔离(Snapshot Isolation) 或MVCC(多版本并发控制),OLAP 查询读取的是数据的快照,不会阻塞 OLTP 的写入操作,同时保证查询结果的一致性。例如:行存副本的事务提交后,生成新的版本快照,列存副本同步后基于快照执行分析查询,避免脏读。
-
最终一致性(准实时 HTAP)对于实时性要求不高的场景,可采用异步同步,OLAP 查询允许读取到 “略有延迟” 的数据,换取更高的系统吞吐量。例如:电商的日销量统计,允许延迟 5 分钟,此时 OLAP 查询无需等待实时同步,提升查询效率。
三、 典型 HTAP 数据库的技术方案对比
| 数据库产品 | 存储架构 | 核心技术特点 |
|---|---|---|
| 华为 GaussDB | 行存 + 列存双副本,实时同步 | 基于鲲鹏芯片的 NUMA 优化,CPU / 内存严格隔离 |
| 阿里 PolarDB | 共享存储 + 多计算节点 | OLTP 和 OLAP 节点共享数据,通过计算节点隔离负载 |
| 人大金仓 KingbaseES | 行列混合存储 + 分区表 | 支持冷热数据自动迁移,适合政企信创场景 |
| 达梦 DM8 | 行存 + 列存双引擎 | 支持国产芯片和操作系统,适配信创改造需求 |
| PostgreSQL Citus | 分布式分区 + 列式存储扩展 | 开源方案,适合中小型 HTAP 系统 |
四、 HTAP 的适用场景与局限性
适用场景
- 实时数据分析:如金融风控(实时查询用户交易行为)、电商实时报表(实时监控销量)。
- 简化架构:降低传统 “OLTP+ETL+OLAP” 架构的复杂度,减少数据同步成本。
- 信创改造项目:国产 HTAP 数据库(如达梦、人大金仓)可一站式替代国外的分离式架构,符合国产化要求。
局限性
- 极致性能场景不适用:如果 OLTP 并发量极高(如每秒百万级)或 OLAP 查询极复杂(如 PB 级数据挖掘),分离式架构仍是最优选择。
- 硬件成本较高:双副本存储和资源隔离需要更多的硬件资源(CPU、内存、存储),比单一负载数据库的投入更高。
五、 总结
- 通过行存 / 列存双副本解决存储层的负载冲突;
- 通过 CPU / 内存隔离和优先级调度解决计算层的资源抢占;
- 通过 MVCC / 快照隔离解决事务层的一致性问题。
---------------------------------------------------------------------------------------------------------------------------------
日志同步(以 WAL 为核心)的原理及介绍
一、 WAL 的核心定义与设计思想
1. 核心定义
- 数据库在执行数据修改操作(增 / 删 / 改)时,会先将操作的逻辑内容(如 “修改表
t_user中id=1的name为test”)写入日志文件,再修改内存中的数据页。 - 只有当日志写入磁盘并持久化后,才会将内存中的数据页异步刷写到磁盘的数据文件中。
2. 设计思想
- 随机写→顺序写:数据页的修改是随机 IO(数据页在磁盘上分散存储),而日志文件是追加写入,属于顺序 IO,顺序 IO 的性能远高于随机 IO。
- 故障恢复保障:如果数据库崩溃,重启时可以通过未刷写数据页的 WAL 日志,重建崩溃前的修改操作,保证数据不丢失。
二、 WAL 的核心工作流程
1. 事务执行阶段
UPDATE/INSERT/DELETE)时:- 数据库先在内存中创建事务日志缓冲区(WAL Buffer)。
- 将事务的操作指令(逻辑日志)写入 WAL Buffer,日志内容包含:
- 事务 ID:标记所属事务。
- 操作类型:增 / 删 / 改。
- 数据位置:表 ID、数据页号、行偏移。
- 旧值 / 新值:用于崩溃恢复时的回滚或重做。
- 同时修改内存中的数据页(Buffer Pool),此时数据页处于 “脏页” 状态(内存与磁盘数据不一致)。
2. 日志写入阶段(核心:WAL 的 “预写” 特性)
COMMIT(提交)时,数据库会触发 WAL 刷盘操作,这是事务持久化的关键:- 调用操作系统的
fsync()函数,将 WAL Buffer 中的日志内容强制写入磁盘的 WAL 日志文件。 - 只有当
fsync()返回成功(日志已落盘),数据库才会向客户端返回事务提交成功的响应。 - 这个过程的核心原则是:日志持久化优先于数据持久化。
3. 数据刷盘阶段(异步操作)
- 后台刷盘线程:数据库会启动专门的后台线程,定期扫描 Buffer Pool 中的脏页,将满足条件的脏页(如脏页数量达到阈值、脏页存在时间超过阈值)批量刷写到磁盘。
- 检查点(Checkpoint)机制:
- Checkpoint 会触发一次全量的脏页刷盘,同时记录当前的 WAL 日志位置(Checkpoint LSN)。
- LSN(Log Sequence Number)是日志的唯一序列号,标记日志的写入顺序,用于故障恢复时的定位。
4. 日志清理阶段
- 只有当日志对应的脏页已经刷盘,且该日志不再用于主从同步 / HTAP 副本同步时,日志才会被清理或归档。
- 清理方式分为两种:
- 循环覆盖:如 MySQL 的
innodb_redo_log,采用固定大小的环形日志文件,当写满后覆盖最旧的有效日志。 - 归档清理:如 PostgreSQL,将无效日志归档到独立的归档目录,再删除原日志文件。
- 循环覆盖:如 MySQL 的
三、 日志同步在 HTAP 中的应用原理
1. 实时同步(毫秒级延迟)
- OLTP 的行存副本执行事务时,生成 WAL 日志并持久化。
- 列存副本启动日志拉取线程,实时监听行存副本的 WAL 日志流。
- 列存副本拉取到新的 WAL 日志后,重放日志:将日志中的修改操作转换为列存格式,更新列存副本的数据。
- 基于MVCC(多版本并发控制),列存副本的分析查询读取的是日志重放后的快照数据,不阻塞行存副本的 OLTP 操作。
2. 准实时同步(秒 / 分钟级延迟)
- 行存副本的 WAL 日志先累积到一定大小 / 时间阈值。
- 通过批量日志传输的方式,将日志包发送到列存副本。
- 列存副本批量重放日志,降低频繁同步的网络和计算开销。
3. 快照 + 增量同步(混合模式)
- 先对行存副本的数据做一次全量快照备份,并将快照加载到列存副本。
- 然后从快照对应的 LSN 位置开始,拉取后续的增量 WAL 日志进行重放。
- 最终实现列存副本与行存副本的数据完全一致。
四、 主流数据库的 WAL 差异对比
| 数据库 | WAL 日志名称 | 核心特性 | 同步适配场景 |
|---|---|---|---|
| MySQL | Redo Log | 环形日志,循环覆盖,仅记录物理修改 | 主从复制、简单 HTAP 增量同步 |
| PostgreSQL | WAL Log | 支持逻辑日志 / 物理日志,可归档,功能丰富 | 主从同步、HTAP 实时同步 |
| 达梦 DM8 | 重做日志 | 兼容 Oracle 风格,支持逻辑重放,适配信创 | HTAP 双引擎(行存 + 列存)同步 |
| 华为 GaussDB | WAL Log | 支持行列存日志分离,NUMA 架构优化 | 企业级 HTAP 实时同步 |
五、 WAL 的优势与局限性
1. 优势
- 数据可靠性:崩溃后可通过 WAL 恢复未刷盘的脏页,避免数据丢失。
- 性能提升:将随机写数据页转换为顺序写日志,大幅提升事务写入性能。
- 一致性保障:是 HTAP 副本、主从复制等场景的核心同步载体。
2. 局限性
- 磁盘开销:需要额外存储日志文件,高并发写入时日志 IO 可能成为瓶颈。
- 重放开销:HTAP 列存副本重放日志时,若转换逻辑复杂,会消耗一定的计算资源。
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------

浙公网安备 33010602011771号