国产数据库 OceanBase

---------------------------------------------------------------------------------------------------------------------------------

OceanBase 作为国产原生分布式数据库,在信创体系中以单机分布式一体化 + Shared-Nothing/Shared-Storage 双架构为核心,适配全栈国产软硬件,具备 HTAP 混合负载、强一致高可用、透明扩展与多租户隔离能力,是信创改造中核心系统迁移的优选方案oceanbase....。以下从架构分层、核心组件、信创适配与容灾能力展开详解。

 

 

一、整体架构概览

 
OceanBase 采用无中心对等节点设计,支持 Shared-Nothing(SN)与 Shared-Storage(SS)两种部署模式,适配从单机到超大规模集群的平滑演进,且兼容 MySQL/Oracle 语法,对应用透明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....。
 

 

三、信创适配关键能力

 
  1. 硬件适配
    • CPU:海光 7185/7280、鲲鹏 920、飞腾 2000 + 等完成互认oceanbase....。
    • 整机:中科可控 H620、华为 TaiShan 200、长城擎天 DF720 等oceanbase....。
     
  2. 操作系统适配
    • 麒麟 V4/V10、UOS V20 等国产 OS 深度兼容oceanbase....。
     
  3. 生态适配
    • 中间件:东方通、金蝶等国产应用服务器完成适配互认oceanbase....。
    • 备份 / 监控:兼容国产备份软件与运维平台,降低信创运维复杂度。
     
 

 

四、信创容灾与高可用

 
  • 多副本部署:默认 3 副本,少数派故障不影响服务,自动切换。
  • 部署拓扑:同城双机房 + 异地备集群、三地五中心,满足等保三级与金融级容灾要求。
  • 故障恢复:节点 / 机房故障时 RTO<30 秒,数据零丢失,适配核心系统 7×24 可用需求。
 

 

五、信创迁移核心优势

 
  1. 平滑迁移:兼容 MySQL/Oracle,支持分库分表自动合并,降低迁移改造成本。
  2. 负载融合:一套引擎承载 TP+AP + 向量检索,减少信创技术栈复杂度(无需 OLTP+OLAP + 向量数据库多产品组合)。
  3. 成本优化:线性扩展 + 本地存储 / 共享存储灵活选择,适配信创预算约束。
  4. 自主可控:100% 自研,无开源依赖,规避供应链风险oceanbase....。
 

 

六、典型信创部署建议

 
  1. 核心交易系统:Shared-Nothing 3 副本跨 AZ 部署,Paxos 强一致,OBProxy 负载均衡,适配金融 / 政务核心场景。
  2. 分析型系统:Shared-Storage + 列存索引,向量化执行,适配数据仓库 / BI 信创改造。
  3. 分支 / 边缘系统:单机分布式一体化部署,与中心集群数据同步,统一技术栈,降低运维成本。
 
需要我补充一份信创迁移实施清单(含环境适配步骤、SQL 兼容性校验项、数据迁移工具选型与回滚预案)

---------------------------------------------------------------------------------------------------------------------------------

数据库 HTAP 混合负载的实现原理

 
HTAP(Hybrid Transactional/Analytical Processing),即混合事务 / 分析处理,核心目标是让一套数据库系统同时高效支撑两种负载:
 
  • OLTP:高并发、低延迟的短事务处理(如订单创建、账户转账)。
  • OLAP:复杂、长时的分析查询(如报表统计、数据挖掘)。
 
传统架构中 OLTP 与 OLAP 是分离的(如 MySQL+ClickHouse),HTAP 的核心原理是打破两者的资源隔离壁垒,通过架构设计和优化技术,实现一套引擎同时满足两类负载的需求。
 

一、 HTAP 的核心挑战

 
OLTP 和 OLAP 的负载特性天然冲突,这是 HTAP 需要解决的核心矛盾:
 
特性OLTPOLAP
查询类型 点查询、短事务(增删改查) 复杂聚合、多表关联、全表扫描
并发量 极高(每秒数万到数十万请求) 低(每秒数到数十请求)
响应时间 毫秒级 秒级到分钟级
数据更新 频繁写入、实时性要求高 批量写入、对实时性要求不一
资源消耗 内存为主、CPU 利用率稳定 CPU/IO 密集型、消耗资源波动大
 
如果直接在 OLTP 数据库上跑 OLAP 查询,会导致事务响应延迟飙升;反之在 OLAP 数据库上跑 OLTP,会因高并发写入引发性能雪崩。
 

二、 HTAP 的核心实现原理

 
不同 HTAP 数据库的技术路径略有差异,但核心原理可归纳为 “存储分离 + 计算协同 + 数据同步” 三大模块。
 

1. 存储层:冷热数据分离 / 多副本存储

 
存储是 HTAP 的基石,核心思路是让不同负载访问不同的存储副本或数据分区,避免资源竞争。
 
  • 多副本架构(主流方案)
     
    • 为同一份数据维护两份物理隔离的副本:
      1. 行存副本:针对 OLTP 优化,采用行式存储,支持高效的点查询、单行增删改,事务 ACID 特性强(如华为 GaussDB、阿里 PolarDB)。
      2. 列存副本:针对 OLAP 优化,采用列式存储,数据按列压缩存储,适合聚合查询和批量扫描,压缩比高(通常 10:1 以上),IO 效率高。
       
    • 数据同步机制:行存副本的事务更新会通过日志同步(如 WAL)实时或准实时同步到列存副本,保证两份数据的一致性。同步方式分为两种:
      • 实时同步:基于日志流的增量同步,延迟可控制在毫秒级,满足实时分析需求。
      • 批量同步:定时合并增量数据,适合对实时性要求不高的场景,降低同步开销。
       
     
  • 分区存储(轻量化方案)
     
    部分数据库(如 MySQL 8.0 的分区表 + 列式存储引擎)采用冷热数据分区:
     
    • 热数据(近期活跃数据):行存,供 OLTP 访问。
    • 冷数据(历史归档数据):列存,供 OLAP 查询。
       
      优势是架构简单,缺点是实时分析能力弱,适合中小型系统。
     
 

2. 计算层:负载隔离与智能调度

 
计算层的核心是避免 OLTP 和 OLAP 的计算资源抢占,通过资源隔离和查询优化实现混合负载的高效处理。
 
  • 资源隔离技术
     
    • 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 查询,优化索引和事务路径,降低锁冲突。
     
 

3. 事务层:ACID 特性的兼容与平衡

 
OLTP 要求严格的 ACID,而 OLAP 通常对事务一致性要求较低(允许最终一致),HTAP 需要在两者之间做平衡。
 
  • 强一致性保障(实时 HTAP)
     
    采用快照隔离(Snapshot Isolation) 或MVCC(多版本并发控制),OLAP 查询读取的是数据的快照,不会阻塞 OLTP 的写入操作,同时保证查询结果的一致性。
     
    例如:行存副本的事务提交后,生成新的版本快照,列存副本同步后基于快照执行分析查询,避免脏读。
     
  • 最终一致性(准实时 HTAP)
     
    对于实时性要求不高的场景,可采用异步同步,OLAP 查询允许读取到 “略有延迟” 的数据,换取更高的系统吞吐量。
     
    例如:电商的日销量统计,允许延迟 5 分钟,此时 OLAP 查询无需等待实时同步,提升查询效率。
     
 

三、 典型 HTAP 数据库的技术方案对比

 
数据库产品存储架构核心技术特点
华为 GaussDB 行存 + 列存双副本,实时同步 基于鲲鹏芯片的 NUMA 优化,CPU / 内存严格隔离
阿里 PolarDB 共享存储 + 多计算节点 OLTP 和 OLAP 节点共享数据,通过计算节点隔离负载
人大金仓 KingbaseES 行列混合存储 + 分区表 支持冷热数据自动迁移,适合政企信创场景
达梦 DM8 行存 + 列存双引擎 支持国产芯片和操作系统,适配信创改造需求
PostgreSQL Citus 分布式分区 + 列式存储扩展 开源方案,适合中小型 HTAP 系统
 

四、 HTAP 的适用场景与局限性

 

适用场景

 
  1. 实时数据分析:如金融风控(实时查询用户交易行为)、电商实时报表(实时监控销量)。
  2. 简化架构:降低传统 “OLTP+ETL+OLAP” 架构的复杂度,减少数据同步成本。
  3. 信创改造项目:国产 HTAP 数据库(如达梦、人大金仓)可一站式替代国外的分离式架构,符合国产化要求。
 

局限性

 
  1. 极致性能场景不适用:如果 OLTP 并发量极高(如每秒百万级)或 OLAP 查询极复杂(如 PB 级数据挖掘),分离式架构仍是最优选择。
  2. 硬件成本较高:双副本存储和资源隔离需要更多的硬件资源(CPU、内存、存储),比单一负载数据库的投入更高。
 

五、 总结

 
HTAP 的核心原理是 “存储分层 + 计算隔离 + 数据同步”:
 
  1. 通过行存 / 列存双副本解决存储层的负载冲突;
  2. 通过 CPU / 内存隔离和优先级调度解决计算层的资源抢占;
  3. 通过 MVCC / 快照隔离解决事务层的一致性问题。
 
这种架构既保留了 OLTP 的高并发低延迟特性,又具备了 OLAP 的复杂分析能力,是新一代数据库的重要发展方向,尤其在信创改造和实时数据处理场景中应用广泛。

---------------------------------------------------------------------------------------------------------------------------------

日志同步(以 WAL 为核心)的原理及介绍

 
在 HTAP 数据库、主从复制、故障恢复等场景中,日志同步是保障数据一致性和高可用性的核心技术,其中最典型、应用最广的就是 WAL(Write-Ahead Log,预写式日志)。
 

一、 WAL 的核心定义与设计思想

 

1. 核心定义

 
WAL 是一种先写日志、后写数据的数据库持久化机制:
 
  • 数据库在执行数据修改操作(增 / 删 / 改)时,会先将操作的逻辑内容(如 “修改表t_userid=1nametest”)写入日志文件,再修改内存中的数据页。
  • 只有当日志写入磁盘并持久化后,才会将内存中的数据页异步刷写到磁盘的数据文件中。
 

2. 设计思想

 
解决传统数据库 “直接写数据页” 的两大痛点:
 
  1. 随机写→顺序写:数据页的修改是随机 IO(数据页在磁盘上分散存储),而日志文件是追加写入,属于顺序 IO,顺序 IO 的性能远高于随机 IO。
  2. 故障恢复保障:如果数据库崩溃,重启时可以通过未刷写数据页的 WAL 日志,重建崩溃前的修改操作,保证数据不丢失。
 

二、 WAL 的核心工作流程

 
以 MySQL / 达梦 DM/PostgreSQL 等主流数据库为例,WAL 的完整工作流程分为事务执行、日志写入、数据刷盘、日志清理四个阶段:
 

1. 事务执行阶段

 
当客户端发起一个修改事务(如UPDATE/INSERT/DELETE)时:
 
  1. 数据库先在内存中创建事务日志缓冲区(WAL Buffer)。
  2. 将事务的操作指令(逻辑日志)写入 WAL Buffer,日志内容包含:
    • 事务 ID:标记所属事务。
    • 操作类型:增 / 删 / 改。
    • 数据位置:表 ID、数据页号、行偏移。
    • 旧值 / 新值:用于崩溃恢复时的回滚或重做。
     
  3. 同时修改内存中的数据页(Buffer Pool),此时数据页处于 “脏页” 状态(内存与磁盘数据不一致)。
 

2. 日志写入阶段(核心:WAL 的 “预写” 特性)

 
当事务执行COMMIT(提交)时,数据库会触发 WAL 刷盘操作,这是事务持久化的关键:
 
  1. 调用操作系统的fsync()函数,将 WAL Buffer 中的日志内容强制写入磁盘的 WAL 日志文件。
  2. 只有当fsync()返回成功(日志已落盘),数据库才会向客户端返回事务提交成功的响应。
  3. 这个过程的核心原则是:日志持久化优先于数据持久化。
 

3. 数据刷盘阶段(异步操作)

 
内存中的脏页不会立即刷写到磁盘数据文件,而是通过两种机制异步处理:
 
  1. 后台刷盘线程:数据库会启动专门的后台线程,定期扫描 Buffer Pool 中的脏页,将满足条件的脏页(如脏页数量达到阈值、脏页存在时间超过阈值)批量刷写到磁盘。
  2. 检查点(Checkpoint)机制:
    • Checkpoint 会触发一次全量的脏页刷盘,同时记录当前的 WAL 日志位置(Checkpoint LSN)。
    • LSN(Log Sequence Number)是日志的唯一序列号,标记日志的写入顺序,用于故障恢复时的定位。
     
 

4. 日志清理阶段

 
随着事务的不断执行,WAL 日志文件会持续增大,数据库需要定期清理无效日志:
 
  • 只有当日志对应的脏页已经刷盘,且该日志不再用于主从同步 / HTAP 副本同步时,日志才会被清理或归档。
  • 清理方式分为两种:
    • 循环覆盖:如 MySQL 的innodb_redo_log,采用固定大小的环形日志文件,当写满后覆盖最旧的有效日志。
    • 归档清理:如 PostgreSQL,将无效日志归档到独立的归档目录,再删除原日志文件。
     
 

三、 日志同步在 HTAP 中的应用原理

 
在 HTAP 数据库的行存副本→列存副本同步场景中,WAL 是实现数据一致性的核心载体,同步流程分为以下 3 类:
 

1. 实时同步(毫秒级延迟)

 
适用于对分析数据实时性要求高的 HTAP 场景(如金融实时风控):
 
  1. OLTP 的行存副本执行事务时,生成 WAL 日志并持久化。
  2. 列存副本启动日志拉取线程,实时监听行存副本的 WAL 日志流。
  3. 列存副本拉取到新的 WAL 日志后,重放日志:将日志中的修改操作转换为列存格式,更新列存副本的数据。
  4. 基于MVCC(多版本并发控制),列存副本的分析查询读取的是日志重放后的快照数据,不阻塞行存副本的 OLTP 操作。
 

2. 准实时同步(秒 / 分钟级延迟)

 
适用于实时性要求不高的 HTAP 场景(如电商日销量统计):
 
  1. 行存副本的 WAL 日志先累积到一定大小 / 时间阈值。
  2. 通过批量日志传输的方式,将日志包发送到列存副本。
  3. 列存副本批量重放日志,降低频繁同步的网络和计算开销。
 

3. 快照 + 增量同步(混合模式)

 
适用于 HTAP 数据库初始化或列存副本故障恢复时:
 
  1. 先对行存副本的数据做一次全量快照备份,并将快照加载到列存副本。
  2. 然后从快照对应的 LSN 位置开始,拉取后续的增量 WAL 日志进行重放。
  3. 最终实现列存副本与行存副本的数据完全一致。
 

四、 主流数据库的 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 列存副本重放日志时,若转换逻辑复杂,会消耗一定的计算资源。

---------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------

posted @ 2026-01-12 10:40  hanease  阅读(16)  评论(0)    收藏  举报