国产数据库分类:集中式 vs 分布式 vs NewSQL

💡 摘要: 本文深入探讨了国产数据库的技术分类体系,包括集中式数据库(达梦 DM8、人大金仓)、分布式数据库(OceanBase、GoldenDB)、NewSQL 数据库(TiDB、TDSQL)的技术架构、特点对比和适用场景。详细分析了 Shared-Storage、Shared-Nothing、计算存储分离三种架构模式,OLTP、OLAP、HTAP 三类负载特征,以及按数据规模(GB/TB/PB)、并发量(千级/万级/十万级)、一致性要求(强一致/最终一致)的选型决策树。通过某银行核心系统选型实战和某电商平台数据库技术演进的案例,展示了不同场景下的最优选择。包含完整的数据库分类图谱、技术对比矩阵和选型检查清单,适合企业 CTO、技术总监和架构师阅读。
学习目标:

  • 掌握国产数据库的三大技术分类(集中式、分布式、NewSQL)
  • 理解三种架构模式的特点和适用场景
  • 学会按数据规模、并发量、一致性要求进行选型
  • 掌握数据库选型决策树和检查清单
    时效性说明: 本文基于 2026 年 6 月的产品版本编写。数据库分类体系(集中式/分布式/NewSQL)作为技术框架长期有效,但具体产品的版本特性和性能数据会随迭代更新而变化,选型时请以厂商最新官方文档为准。

1. 背景与痛点

1.1 为什么数据库分类这么重要?

选型困惑:

场景一:技术选型会上的争论

复制代码
时间:周一上午 10 点
事件:新系统数据库选型讨论
CTO:"我们应该用什么数据库?"

架构师 A:
"用 OceanBase,阿里双 11 验证过,TPS 世界第一!"
问题:预算只有 200 万,OceanBase 要 500 万

架构师 B:
"用 TiDB,开源免费,HTAP 能力强!"
问题:团队只熟悉 Oracle,学习成本高

架构师 C:
"用达梦 DM8,Oracle 兼容性好,迁移成本低!"
问题:扩展性弱,3 年后可能不够用

架构师 D:
"继续用 Oracle,稳定可靠!"
问题:信创考核不通过,供应链风险

结论:吵了 3 小时,无果而终...
教训:
⚠️ 缺乏统一的评估框架
⚠️ 不了解技术分类和特点
⚠️ 没有结合业务场景

场景二:错误选型的代价

复制代码
某金融公司真实案例:

业务特点:
- 数据量:10TB(年增 50%)
- TPS:5000(峰值 20000)
- 一致性要求:强一致(账务系统)
- 预算:300 万元
- 团队:熟悉 Oracle

错误选型:TiDB

原因:
❌ 被"免费开源"吸引
❌ 看中 HTAP 能力
❌ 忽视团队技术栈
❌ 未考虑一致性要求

后果:
- MySQL 协议兼容性问题(存储过程无法迁移)
- 强一致性场景性能差(Paxos 延迟高)
- 团队学习成本高(招人困难)
- 运维复杂度高(组件太多)

损失:
💰 直接损失:200 万元(已投入)
💰 机会成本:6 个月时间
💰 业务影响:项目延期
💰 团队士气:受挫

正确选择:达梦 DM8
✅ Oracle 高度兼容(迁移成本低)
✅ 集中式架构(满足当前需求)
✅ 学习曲线平缓(团队易上手)
✅ 性价比高(150 万搞定)

场景三:过度设计的陷阱

复制代码
某创业公司案例:

业务规模:
- 日活用户:1 万
- 数据量:100GB
- TPS:500
- 预算:50 万元

选型:OceanBase 分布式集群

配置:
- 节点数:9 台(3 副本×3 可用区)
- CPU: 32 核 × 9 = 288 核
- 内存:128GB × 9 = 1.15TB
- 存储:SSD 2TB × 9 = 18TB
- 总成本:80 万元(超预算)

问题:
❌ 杀鸡用牛刀
❌ 资源利用率低(10%)
❌ 运维复杂度高(需要专业 DBA)
❌ 性能过剩(TPS 实际 500,设计 10 万)

合理选择:单机 PostgreSQL
✅ 成本:5 万元(节省 75 万)
✅ 运维:1 人足够
✅ 性能:完全够用
✅ 扩展:未来可升级

2. 数据库技术分类

2.1 按架构分类

三大技术流派:
#mermaid-svg-RlIzuYaLhcTN84aG{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-RlIzuYaLhcTN84aG .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-RlIzuYaLhcTN84aG .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-RlIzuYaLhcTN84aG .error-icon{fill:#552222;}#mermaid-svg-RlIzuYaLhcTN84aG .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-RlIzuYaLhcTN84aG .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-RlIzuYaLhcTN84aG .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-RlIzuYaLhcTN84aG .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-RlIzuYaLhcTN84aG .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-RlIzuYaLhcTN84aG .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-RlIzuYaLhcTN84aG .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-RlIzuYaLhcTN84aG .marker{fill:#333333;stroke:#333333;}#mermaid-svg-RlIzuYaLhcTN84aG .marker.cross{stroke:#333333;}#mermaid-svg-RlIzuYaLhcTN84aG svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-RlIzuYaLhcTN84aG p{margin:0;}#mermaid-svg-RlIzuYaLhcTN84aG .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-RlIzuYaLhcTN84aG .cluster-label text{fill:#333;}#mermaid-svg-RlIzuYaLhcTN84aG .cluster-label span{color:#333;}#mermaid-svg-RlIzuYaLhcTN84aG .cluster-label span p{background-color:transparent;}#mermaid-svg-RlIzuYaLhcTN84aG .label text,#mermaid-svg-RlIzuYaLhcTN84aG span{fill:#333;color:#333;}#mermaid-svg-RlIzuYaLhcTN84aG .node rect,#mermaid-svg-RlIzuYaLhcTN84aG .node circle,#mermaid-svg-RlIzuYaLhcTN84aG .node ellipse,#mermaid-svg-RlIzuYaLhcTN84aG .node polygon,#mermaid-svg-RlIzuYaLhcTN84aG .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-RlIzuYaLhcTN84aG .rough-node .label text,#mermaid-svg-RlIzuYaLhcTN84aG .node .label text,#mermaid-svg-RlIzuYaLhcTN84aG .image-shape .label,#mermaid-svg-RlIzuYaLhcTN84aG .icon-shape .label{text-anchor:middle;}#mermaid-svg-RlIzuYaLhcTN84aG .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-RlIzuYaLhcTN84aG .rough-node .label,#mermaid-svg-RlIzuYaLhcTN84aG .node .label,#mermaid-svg-RlIzuYaLhcTN84aG .image-shape .label,#mermaid-svg-RlIzuYaLhcTN84aG .icon-shape .label{text-align:center;}#mermaid-svg-RlIzuYaLhcTN84aG .node.clickable{cursor:pointer;}#mermaid-svg-RlIzuYaLhcTN84aG .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-RlIzuYaLhcTN84aG .arrowheadPath{fill:#333333;}#mermaid-svg-RlIzuYaLhcTN84aG .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-RlIzuYaLhcTN84aG .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-RlIzuYaLhcTN84aG .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-RlIzuYaLhcTN84aG .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-RlIzuYaLhcTN84aG .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-RlIzuYaLhcTN84aG .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-RlIzuYaLhcTN84aG .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-RlIzuYaLhcTN84aG .cluster text{fill:#333;}#mermaid-svg-RlIzuYaLhcTN84aG .cluster span{color:#333;}#mermaid-svg-RlIzuYaLhcTN84aG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-RlIzuYaLhcTN84aG .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-RlIzuYaLhcTN84aG rect.text{fill:none;stroke-width:0;}#mermaid-svg-RlIzuYaLhcTN84aG .icon-shape,#mermaid-svg-RlIzuYaLhcTN84aG .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-RlIzuYaLhcTN84aG .icon-shape p,#mermaid-svg-RlIzuYaLhcTN84aG .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-RlIzuYaLhcTN84aG .icon-shape .label rect,#mermaid-svg-RlIzuYaLhcTN84aG .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-RlIzuYaLhcTN84aG .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-RlIzuYaLhcTN84aG .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-RlIzuYaLhcTN84aG :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 数据库架构
集中式
分布式
NewSQL
达梦 DM8
人大金仓
openGauss
OceanBase
GoldenDB
GaussDB
TiDB
TDSQL
CockroachDB

集中式数据库(Centralized Database)

架构特点:
#mermaid-svg-QzSvv7wSllsq17je{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-QzSvv7wSllsq17je .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-QzSvv7wSllsq17je .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-QzSvv7wSllsq17je .error-icon{fill:#552222;}#mermaid-svg-QzSvv7wSllsq17je .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-QzSvv7wSllsq17je .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-QzSvv7wSllsq17je .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-QzSvv7wSllsq17je .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-QzSvv7wSllsq17je .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-QzSvv7wSllsq17je .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-QzSvv7wSllsq17je .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-QzSvv7wSllsq17je .marker{fill:#333333;stroke:#333333;}#mermaid-svg-QzSvv7wSllsq17je .marker.cross{stroke:#333333;}#mermaid-svg-QzSvv7wSllsq17je svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-QzSvv7wSllsq17je p{margin:0;}#mermaid-svg-QzSvv7wSllsq17je .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-QzSvv7wSllsq17je .cluster-label text{fill:#333;}#mermaid-svg-QzSvv7wSllsq17je .cluster-label span{color:#333;}#mermaid-svg-QzSvv7wSllsq17je .cluster-label span p{background-color:transparent;}#mermaid-svg-QzSvv7wSllsq17je .label text,#mermaid-svg-QzSvv7wSllsq17je span{fill:#333;color:#333;}#mermaid-svg-QzSvv7wSllsq17je .node rect,#mermaid-svg-QzSvv7wSllsq17je .node circle,#mermaid-svg-QzSvv7wSllsq17je .node ellipse,#mermaid-svg-QzSvv7wSllsq17je .node polygon,#mermaid-svg-QzSvv7wSllsq17je .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-QzSvv7wSllsq17je .rough-node .label text,#mermaid-svg-QzSvv7wSllsq17je .node .label text,#mermaid-svg-QzSvv7wSllsq17je .image-shape .label,#mermaid-svg-QzSvv7wSllsq17je .icon-shape .label{text-anchor:middle;}#mermaid-svg-QzSvv7wSllsq17je .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-QzSvv7wSllsq17je .rough-node .label,#mermaid-svg-QzSvv7wSllsq17je .node .label,#mermaid-svg-QzSvv7wSllsq17je .image-shape .label,#mermaid-svg-QzSvv7wSllsq17je .icon-shape .label{text-align:center;}#mermaid-svg-QzSvv7wSllsq17je .node.clickable{cursor:pointer;}#mermaid-svg-QzSvv7wSllsq17je .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-QzSvv7wSllsq17je .arrowheadPath{fill:#333333;}#mermaid-svg-QzSvv7wSllsq17je .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-QzSvv7wSllsq17je .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-QzSvv7wSllsq17je .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QzSvv7wSllsq17je .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-QzSvv7wSllsq17je .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QzSvv7wSllsq17je .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-QzSvv7wSllsq17je .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-QzSvv7wSllsq17je .cluster text{fill:#333;}#mermaid-svg-QzSvv7wSllsq17je .cluster span{color:#333;}#mermaid-svg-QzSvv7wSllsq17je div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-QzSvv7wSllsq17je .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-QzSvv7wSllsq17je rect.text{fill:none;stroke-width:0;}#mermaid-svg-QzSvv7wSllsq17je .icon-shape,#mermaid-svg-QzSvv7wSllsq17je .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QzSvv7wSllsq17je .icon-shape p,#mermaid-svg-QzSvv7wSllsq17je .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-QzSvv7wSllsq17je .icon-shape .label rect,#mermaid-svg-QzSvv7wSllsq17je .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QzSvv7wSllsq17je .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-QzSvv7wSllsq17je .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-QzSvv7wSllsq17je :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 单节点架构
📱 应用层

(Application)
🔍 SQL 层

(SQL Parser)
⚙️ 优化器

(Optimizer)
🚀 执行引擎

(Executor)
💾 存储引擎

(InnoDB/DM)
💿 磁盘存储

(Storage)

代表产品:

  • ✅ 达梦 DM8
  • ✅ 人大金仓 KingbaseES
  • ✅ openGauss(集中式模式)
  • ✅ Oracle(传统模式)
  • ✅ MySQL(单机模式)

优点:

  • ✅ 架构简单(易于理解和维护)
  • ✅ 部署方便(单实例即可)
  • ✅ 成本低(硬件投入少)
  • ✅ 生态成熟(工具链完善)
  • ✅ 兼容性好(特别是 Oracle 兼容)

缺点:

  • ❌ 扩展性差(Scale-Up 有上限)
  • ❌ 单点故障(需主备切换)
  • ❌ 性能瓶颈(受单机限制)
  • ❌ 容量有限(TB 级别)

适用场景:

  • ✅ 数据量 < 2TB
  • ✅ TPS < 10000
  • ✅ 预算 < 200 万
  • ✅ 团队规模 < 10 人
  • ✅ 对扩展性要求不高

典型案例:

  • 某城商行信贷系统(达梦 DM8)
  • 某省政务 OA 系统(人大金仓)
  • 某医院 HIS 系统(openGauss)
分布式数据库(Distributed Database)

架构特点:
#mermaid-svg-aPMfsZoKBYNn0Soz{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-aPMfsZoKBYNn0Soz .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-aPMfsZoKBYNn0Soz .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-aPMfsZoKBYNn0Soz .error-icon{fill:#552222;}#mermaid-svg-aPMfsZoKBYNn0Soz .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-aPMfsZoKBYNn0Soz .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-aPMfsZoKBYNn0Soz .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-aPMfsZoKBYNn0Soz .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-aPMfsZoKBYNn0Soz .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-aPMfsZoKBYNn0Soz .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-aPMfsZoKBYNn0Soz .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-aPMfsZoKBYNn0Soz .marker{fill:#333333;stroke:#333333;}#mermaid-svg-aPMfsZoKBYNn0Soz .marker.cross{stroke:#333333;}#mermaid-svg-aPMfsZoKBYNn0Soz svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-aPMfsZoKBYNn0Soz p{margin:0;}#mermaid-svg-aPMfsZoKBYNn0Soz .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-aPMfsZoKBYNn0Soz .cluster-label text{fill:#333;}#mermaid-svg-aPMfsZoKBYNn0Soz .cluster-label span{color:#333;}#mermaid-svg-aPMfsZoKBYNn0Soz .cluster-label span p{background-color:transparent;}#mermaid-svg-aPMfsZoKBYNn0Soz .label text,#mermaid-svg-aPMfsZoKBYNn0Soz span{fill:#333;color:#333;}#mermaid-svg-aPMfsZoKBYNn0Soz .node rect,#mermaid-svg-aPMfsZoKBYNn0Soz .node circle,#mermaid-svg-aPMfsZoKBYNn0Soz .node ellipse,#mermaid-svg-aPMfsZoKBYNn0Soz .node polygon,#mermaid-svg-aPMfsZoKBYNn0Soz .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-aPMfsZoKBYNn0Soz .rough-node .label text,#mermaid-svg-aPMfsZoKBYNn0Soz .node .label text,#mermaid-svg-aPMfsZoKBYNn0Soz .image-shape .label,#mermaid-svg-aPMfsZoKBYNn0Soz .icon-shape .label{text-anchor:middle;}#mermaid-svg-aPMfsZoKBYNn0Soz .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-aPMfsZoKBYNn0Soz .rough-node .label,#mermaid-svg-aPMfsZoKBYNn0Soz .node .label,#mermaid-svg-aPMfsZoKBYNn0Soz .image-shape .label,#mermaid-svg-aPMfsZoKBYNn0Soz .icon-shape .label{text-align:center;}#mermaid-svg-aPMfsZoKBYNn0Soz .node.clickable{cursor:pointer;}#mermaid-svg-aPMfsZoKBYNn0Soz .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-aPMfsZoKBYNn0Soz .arrowheadPath{fill:#333333;}#mermaid-svg-aPMfsZoKBYNn0Soz .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-aPMfsZoKBYNn0Soz .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-aPMfsZoKBYNn0Soz .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-aPMfsZoKBYNn0Soz .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-aPMfsZoKBYNn0Soz .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-aPMfsZoKBYNn0Soz .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-aPMfsZoKBYNn0Soz .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-aPMfsZoKBYNn0Soz .cluster text{fill:#333;}#mermaid-svg-aPMfsZoKBYNn0Soz .cluster span{color:#333;}#mermaid-svg-aPMfsZoKBYNn0Soz div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-aPMfsZoKBYNn0Soz .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-aPMfsZoKBYNn0Soz rect.text{fill:none;stroke-width:0;}#mermaid-svg-aPMfsZoKBYNn0Soz .icon-shape,#mermaid-svg-aPMfsZoKBYNn0Soz .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-aPMfsZoKBYNn0Soz .icon-shape p,#mermaid-svg-aPMfsZoKBYNn0Soz .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-aPMfsZoKBYNn0Soz .icon-shape .label rect,#mermaid-svg-aPMfsZoKBYNn0Soz .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-aPMfsZoKBYNn0Soz .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-aPMfsZoKBYNn0Soz .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-aPMfsZoKBYNn0Soz :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Shared-Nothing 架构
应用层

(全局路由/GTM)
节点 1

计算 + 存储
节点 2

计算 + 存储
节点 N

计算 + 存储
本地数据
本地数据
本地数据

特点:

  • 每个节点独立(计算 + 存储)
  • 数据分片存储(Sharding)
  • 并行处理(提升性能)
  • 线性扩展(增加节点)

代表产品:

  • ✅ OceanBase(阿里巴巴)
  • ✅ GoldenDB(中兴)
  • ✅ GaussDB(华为)
  • ✅ PolarDB-X(阿里云)

优点:

  • ✅ 高可扩展(线性扩展)
  • ✅ 高性能(并行处理)
  • ✅ 高可用(多副本)
  • ✅ 大容量(PB 级别)
  • ✅ 强一致(分布式事务)

缺点:

  • ❌ 架构复杂(运维难度高)
  • ❌ 成本高(至少 3 节点)
  • ❌ 兼容性弱(部分 SQL 不支持)
  • ❌ 学习曲线陡峭

适用场景:

  • ✅ 数据量 > 10TB
  • ✅ TPS > 50000
  • ✅ 预算 > 500 万
  • ✅ 团队规模 > 20 人
  • ✅ 高可用要求(99.999%)

典型案例:

  • 支付宝交易系统的(OceanBase)
  • 中信银行核心系统(GoldenDB)
  • 华为云数据库(GaussDB)
NewSQL 数据库

架构特点:

计算存储分离架构:
#mermaid-svg-QSCIOKakS7czbV6J{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-QSCIOKakS7czbV6J .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-QSCIOKakS7czbV6J .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-QSCIOKakS7czbV6J .error-icon{fill:#552222;}#mermaid-svg-QSCIOKakS7czbV6J .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-QSCIOKakS7czbV6J .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-QSCIOKakS7czbV6J .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-QSCIOKakS7czbV6J .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-QSCIOKakS7czbV6J .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-QSCIOKakS7czbV6J .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-QSCIOKakS7czbV6J .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-QSCIOKakS7czbV6J .marker{fill:#333333;stroke:#333333;}#mermaid-svg-QSCIOKakS7czbV6J .marker.cross{stroke:#333333;}#mermaid-svg-QSCIOKakS7czbV6J svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-QSCIOKakS7czbV6J p{margin:0;}#mermaid-svg-QSCIOKakS7czbV6J .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-QSCIOKakS7czbV6J .cluster-label text{fill:#333;}#mermaid-svg-QSCIOKakS7czbV6J .cluster-label span{color:#333;}#mermaid-svg-QSCIOKakS7czbV6J .cluster-label span p{background-color:transparent;}#mermaid-svg-QSCIOKakS7czbV6J .label text,#mermaid-svg-QSCIOKakS7czbV6J span{fill:#333;color:#333;}#mermaid-svg-QSCIOKakS7czbV6J .node rect,#mermaid-svg-QSCIOKakS7czbV6J .node circle,#mermaid-svg-QSCIOKakS7czbV6J .node ellipse,#mermaid-svg-QSCIOKakS7czbV6J .node polygon,#mermaid-svg-QSCIOKakS7czbV6J .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-QSCIOKakS7czbV6J .rough-node .label text,#mermaid-svg-QSCIOKakS7czbV6J .node .label text,#mermaid-svg-QSCIOKakS7czbV6J .image-shape .label,#mermaid-svg-QSCIOKakS7czbV6J .icon-shape .label{text-anchor:middle;}#mermaid-svg-QSCIOKakS7czbV6J .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-QSCIOKakS7czbV6J .rough-node .label,#mermaid-svg-QSCIOKakS7czbV6J .node .label,#mermaid-svg-QSCIOKakS7czbV6J .image-shape .label,#mermaid-svg-QSCIOKakS7czbV6J .icon-shape .label{text-align:center;}#mermaid-svg-QSCIOKakS7czbV6J .node.clickable{cursor:pointer;}#mermaid-svg-QSCIOKakS7czbV6J .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-QSCIOKakS7czbV6J .arrowheadPath{fill:#333333;}#mermaid-svg-QSCIOKakS7czbV6J .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-QSCIOKakS7czbV6J .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-QSCIOKakS7czbV6J .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QSCIOKakS7czbV6J .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-QSCIOKakS7czbV6J .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QSCIOKakS7czbV6J .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-QSCIOKakS7czbV6J .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-QSCIOKakS7czbV6J .cluster text{fill:#333;}#mermaid-svg-QSCIOKakS7czbV6J .cluster span{color:#333;}#mermaid-svg-QSCIOKakS7czbV6J div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-QSCIOKakS7czbV6J .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-QSCIOKakS7czbV6J rect.text{fill:none;stroke-width:0;}#mermaid-svg-QSCIOKakS7czbV6J .icon-shape,#mermaid-svg-QSCIOKakS7czbV6J .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QSCIOKakS7czbV6J .icon-shape p,#mermaid-svg-QSCIOKakS7czbV6J .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-QSCIOKakS7czbV6J .icon-shape .label rect,#mermaid-svg-QSCIOKakS7czbV6J .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QSCIOKakS7czbV6J .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-QSCIOKakS7czbV6J .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-QSCIOKakS7czbV6J :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 存储层
计算层 (Stateless)
TiDB Server
TiDB Server
...
PD 集群

(元数据管理)
TiKV

存储引擎
RocksDB
TiKV

存储引擎
RocksDB
TiKV

存储引擎
RocksDB

特点:

  • 计算层无状态(易扩展)
  • 存储层 Raft 共识(强一致)
  • 自动分片(TiKV Region)
  • HTAP 能力(TiFlash)

代表产品:

  • ✅ TiDB(PingCAP)
  • ✅ TDSQL(腾讯云)
  • ✅ OceanBase(也具备 NewSQL 特性)
  • ✅ CockroachDB

优点:

  • ✅ 弹性扩展(按需扩容)
  • ✅ MySQL 兼容(生态好)
  • ✅ HTAP 能力(一套系统 TP+AP)
  • ✅ 开源免费(降低TCO)
  • ✅ 云原生友好

缺点:

  • ❌ 组件复杂(TiDB+TiKV+PD)
  • ❌ 延迟较高(Raft 共识)
  • ❌ 存储过程支持弱
  • ❌ 社区版功能受限

适用场景:

  • ✅ 数据量 1-100TB
  • ✅ TPS 10000-100000
  • ✅ 需要 HTAP 能力
  • ✅ 互联网场景
  • ✅ 快速业务发展

典型案例:

  • 美团支付系统(TiDB)
  • 小米金融(TiDB)
  • 知乎评论系统(TiDB)

2.2 按负载类型分类

OLTP vs OLAP vs HTAP:
#mermaid-svg-d1qcAkusclvwgI9a{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-d1qcAkusclvwgI9a .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-d1qcAkusclvwgI9a .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-d1qcAkusclvwgI9a .error-icon{fill:#552222;}#mermaid-svg-d1qcAkusclvwgI9a .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-d1qcAkusclvwgI9a .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-d1qcAkusclvwgI9a .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-d1qcAkusclvwgI9a .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-d1qcAkusclvwgI9a .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-d1qcAkusclvwgI9a .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-d1qcAkusclvwgI9a .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-d1qcAkusclvwgI9a .marker{fill:#333333;stroke:#333333;}#mermaid-svg-d1qcAkusclvwgI9a .marker.cross{stroke:#333333;}#mermaid-svg-d1qcAkusclvwgI9a svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-d1qcAkusclvwgI9a p{margin:0;}#mermaid-svg-d1qcAkusclvwgI9a .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-d1qcAkusclvwgI9a .cluster-label text{fill:#333;}#mermaid-svg-d1qcAkusclvwgI9a .cluster-label span{color:#333;}#mermaid-svg-d1qcAkusclvwgI9a .cluster-label span p{background-color:transparent;}#mermaid-svg-d1qcAkusclvwgI9a .label text,#mermaid-svg-d1qcAkusclvwgI9a span{fill:#333;color:#333;}#mermaid-svg-d1qcAkusclvwgI9a .node rect,#mermaid-svg-d1qcAkusclvwgI9a .node circle,#mermaid-svg-d1qcAkusclvwgI9a .node ellipse,#mermaid-svg-d1qcAkusclvwgI9a .node polygon,#mermaid-svg-d1qcAkusclvwgI9a .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-d1qcAkusclvwgI9a .rough-node .label text,#mermaid-svg-d1qcAkusclvwgI9a .node .label text,#mermaid-svg-d1qcAkusclvwgI9a .image-shape .label,#mermaid-svg-d1qcAkusclvwgI9a .icon-shape .label{text-anchor:middle;}#mermaid-svg-d1qcAkusclvwgI9a .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-d1qcAkusclvwgI9a .rough-node .label,#mermaid-svg-d1qcAkusclvwgI9a .node .label,#mermaid-svg-d1qcAkusclvwgI9a .image-shape .label,#mermaid-svg-d1qcAkusclvwgI9a .icon-shape .label{text-align:center;}#mermaid-svg-d1qcAkusclvwgI9a .node.clickable{cursor:pointer;}#mermaid-svg-d1qcAkusclvwgI9a .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-d1qcAkusclvwgI9a .arrowheadPath{fill:#333333;}#mermaid-svg-d1qcAkusclvwgI9a .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-d1qcAkusclvwgI9a .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-d1qcAkusclvwgI9a .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-d1qcAkusclvwgI9a .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-d1qcAkusclvwgI9a .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-d1qcAkusclvwgI9a .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-d1qcAkusclvwgI9a .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-d1qcAkusclvwgI9a .cluster text{fill:#333;}#mermaid-svg-d1qcAkusclvwgI9a .cluster span{color:#333;}#mermaid-svg-d1qcAkusclvwgI9a div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-d1qcAkusclvwgI9a .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-d1qcAkusclvwgI9a rect.text{fill:none;stroke-width:0;}#mermaid-svg-d1qcAkusclvwgI9a .icon-shape,#mermaid-svg-d1qcAkusclvwgI9a .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-d1qcAkusclvwgI9a .icon-shape p,#mermaid-svg-d1qcAkusclvwgI9a .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-d1qcAkusclvwgI9a .icon-shape .label rect,#mermaid-svg-d1qcAkusclvwgI9a .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-d1qcAkusclvwgI9a .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-d1qcAkusclvwgI9a .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-d1qcAkusclvwgI9a :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 负载类型
OLTP
OLAP
HTAP
交易处理
高频小事务
分析查询
低频大查询
混合负载
实时分析

OLTP(联机事务处理)

特点:

复制代码
典型场景:
✅ 银行转账(INSERT/UPDATE)
✅ 电商下单(事务处理)
✅ 订单查询(点查)
✅ 用户注册(写入)

负载特征:
- 高频小事务(每次几条记录)
- 读写混合(70% 读 + 30% 写)
- 低延迟要求(毫秒级响应)
- 强一致性(ACID 事务)
- 并发高(数千到数万 TPS)

SQL 特点:
✅ 简单查询(主键索引)
✅ 短事务(<1 秒)
✅ 频繁更新
✅ 大量随机 IO

代表数据库:
🏆 达梦 DM8(集中式 OLTP)
🏆 OceanBase(分布式 OLTP)
🏆 Oracle(传统 OLTP 王者)
🏆 MySQL(互联网 OLTP)
OLAP(联机分析处理)

特点:

复制代码
典型场景:
✅ 报表统计(SUM/COUNT/AVG)
✅ 数据分析(多维分析)
✅ BI 看板(可视化展示)
✅ 经营分析(趋势预测)

负载特征:
- 低频大查询(扫描百万行)
- 只读为主(极少更新)
- 高吞吐(每秒 GB 级)
- 延迟容忍(秒级到分钟级)
- 并发低(数十个查询)

SQL 特点:
✅ 复杂查询(多表关联)
✅ 长事务(分钟级)
✅ 聚合函数(GROUP BY)
✅ 大量顺序 IO

代表数据库:
🏆 GaussDB(DWS)(MPP 数仓)
🏆 StarRocks(实时 OLAP)
🏆 ClickHouse(极速分析)
🏆 Doris(易用 OLAP)
HTAP(混合事务/分析处理)

特点:

复制代码
典型场景:
✅ 实时风控(交易 + 分析)
✅ 实时推荐(行为分析)
✅ 实时报表(T+0 出报表)
✅ 运营监控(实时监控)

负载特征:
- TP 和 AP 混合负载
- 同一份数据(无需 ETL)
- 实时分析(秒级出结果)
- 资源隔离(避免相互影响)

技术实现:
方案一:行列混存
- 行存:支持 TP
- 列存:支持 AP
- 代表:TiDB(TiKV+TiFlash)

方案二:内存计算
- 内存:支持 TP
- 磁盘:支持 AP
- 代表:SAP HANA

方案三:智能路由
- TP 请求→TP 引擎
- AP 请求→AP 引擎
- 代表:OceanBase

代表数据库:
🏆 TiDB(HTAP 代表)
🏆 OceanBase(HTAP 模式)
🏆 TDSQL(HTAP 版本)

2.3 按一致性模型分类

CAP 定理与数据库选型:
#mermaid-svg-28d2Ciq8BKy922De{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-28d2Ciq8BKy922De .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-28d2Ciq8BKy922De .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-28d2Ciq8BKy922De .error-icon{fill:#552222;}#mermaid-svg-28d2Ciq8BKy922De .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-28d2Ciq8BKy922De .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-28d2Ciq8BKy922De .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-28d2Ciq8BKy922De .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-28d2Ciq8BKy922De .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-28d2Ciq8BKy922De .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-28d2Ciq8BKy922De .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-28d2Ciq8BKy922De .marker{fill:#333333;stroke:#333333;}#mermaid-svg-28d2Ciq8BKy922De .marker.cross{stroke:#333333;}#mermaid-svg-28d2Ciq8BKy922De svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-28d2Ciq8BKy922De p{margin:0;}#mermaid-svg-28d2Ciq8BKy922De .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-28d2Ciq8BKy922De .cluster-label text{fill:#333;}#mermaid-svg-28d2Ciq8BKy922De .cluster-label span{color:#333;}#mermaid-svg-28d2Ciq8BKy922De .cluster-label span p{background-color:transparent;}#mermaid-svg-28d2Ciq8BKy922De .label text,#mermaid-svg-28d2Ciq8BKy922De span{fill:#333;color:#333;}#mermaid-svg-28d2Ciq8BKy922De .node rect,#mermaid-svg-28d2Ciq8BKy922De .node circle,#mermaid-svg-28d2Ciq8BKy922De .node ellipse,#mermaid-svg-28d2Ciq8BKy922De .node polygon,#mermaid-svg-28d2Ciq8BKy922De .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-28d2Ciq8BKy922De .rough-node .label text,#mermaid-svg-28d2Ciq8BKy922De .node .label text,#mermaid-svg-28d2Ciq8BKy922De .image-shape .label,#mermaid-svg-28d2Ciq8BKy922De .icon-shape .label{text-anchor:middle;}#mermaid-svg-28d2Ciq8BKy922De .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-28d2Ciq8BKy922De .rough-node .label,#mermaid-svg-28d2Ciq8BKy922De .node .label,#mermaid-svg-28d2Ciq8BKy922De .image-shape .label,#mermaid-svg-28d2Ciq8BKy922De .icon-shape .label{text-align:center;}#mermaid-svg-28d2Ciq8BKy922De .node.clickable{cursor:pointer;}#mermaid-svg-28d2Ciq8BKy922De .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-28d2Ciq8BKy922De .arrowheadPath{fill:#333333;}#mermaid-svg-28d2Ciq8BKy922De .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-28d2Ciq8BKy922De .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-28d2Ciq8BKy922De .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-28d2Ciq8BKy922De .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-28d2Ciq8BKy922De .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-28d2Ciq8BKy922De .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-28d2Ciq8BKy922De .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-28d2Ciq8BKy922De .cluster text{fill:#333;}#mermaid-svg-28d2Ciq8BKy922De .cluster span{color:#333;}#mermaid-svg-28d2Ciq8BKy922De div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-28d2Ciq8BKy922De .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-28d2Ciq8BKy922De rect.text{fill:none;stroke-width:0;}#mermaid-svg-28d2Ciq8BKy922De .icon-shape,#mermaid-svg-28d2Ciq8BKy922De .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-28d2Ciq8BKy922De .icon-shape p,#mermaid-svg-28d2Ciq8BKy922De .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-28d2Ciq8BKy922De .icon-shape .label rect,#mermaid-svg-28d2Ciq8BKy922De .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-28d2Ciq8BKy922De .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-28d2Ciq8BKy922De .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-28d2Ciq8BKy922De :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} CAP 定理
CP 系统
AP 系统
强一致性
Paxos/Raft
金融级
最终一致性
主从复制
互联网级

强一致性(CP 系统):

复制代码
特点:
✅ 数据实时同步
✅ 所有节点数据一致
✅ 读写可能在同一节点
✅ 牺牲可用性保证一致性

实现技术:
- Paxos 算法(OceanBase)
- Raft 算法(TiDB/TiKV)
- 两阶段提交(2PC)

适用场景:
✅ 金融账务系统
✅ 支付清算系统
✅ 证券交易系统
✅ 对账系统

代表产品:
🏆 OceanBase(Paxos)
🏆 TiDB(Raft)
🏆 GoldenDB(强一致)

最终一致性(AP 系统):

复制代码
特点:
✅ 高可用性
✅ 允许短暂不一致
✅ 异步复制
✅ 牺牲一致性保证可用性

实现技术:
- 主从异步复制
- 多主复制
- Gossip 协议

适用场景:
✅ 社交 Feed 流
✅ 评论系统
✅ 点赞计数
✅ 日志系统

代表产品:
🏆 Cassandra
🏆 MongoDB(默认配置)
🏆 Redis(集群模式)

3. 选型决策树

3.1 五维评估模型

#mermaid-svg-xRLHAFh1guPLUpbl{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-xRLHAFh1guPLUpbl .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-xRLHAFh1guPLUpbl .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-xRLHAFh1guPLUpbl .error-icon{fill:#552222;}#mermaid-svg-xRLHAFh1guPLUpbl .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-xRLHAFh1guPLUpbl .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-xRLHAFh1guPLUpbl .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-xRLHAFh1guPLUpbl .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-xRLHAFh1guPLUpbl .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-xRLHAFh1guPLUpbl .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-xRLHAFh1guPLUpbl .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-xRLHAFh1guPLUpbl .marker{fill:#333333;stroke:#333333;}#mermaid-svg-xRLHAFh1guPLUpbl .marker.cross{stroke:#333333;}#mermaid-svg-xRLHAFh1guPLUpbl svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-xRLHAFh1guPLUpbl p{margin:0;}#mermaid-svg-xRLHAFh1guPLUpbl .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-xRLHAFh1guPLUpbl .cluster-label text{fill:#333;}#mermaid-svg-xRLHAFh1guPLUpbl .cluster-label span{color:#333;}#mermaid-svg-xRLHAFh1guPLUpbl .cluster-label span p{background-color:transparent;}#mermaid-svg-xRLHAFh1guPLUpbl .label text,#mermaid-svg-xRLHAFh1guPLUpbl span{fill:#333;color:#333;}#mermaid-svg-xRLHAFh1guPLUpbl .node rect,#mermaid-svg-xRLHAFh1guPLUpbl .node circle,#mermaid-svg-xRLHAFh1guPLUpbl .node ellipse,#mermaid-svg-xRLHAFh1guPLUpbl .node polygon,#mermaid-svg-xRLHAFh1guPLUpbl .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-xRLHAFh1guPLUpbl .rough-node .label text,#mermaid-svg-xRLHAFh1guPLUpbl .node .label text,#mermaid-svg-xRLHAFh1guPLUpbl .image-shape .label,#mermaid-svg-xRLHAFh1guPLUpbl .icon-shape .label{text-anchor:middle;}#mermaid-svg-xRLHAFh1guPLUpbl .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-xRLHAFh1guPLUpbl .rough-node .label,#mermaid-svg-xRLHAFh1guPLUpbl .node .label,#mermaid-svg-xRLHAFh1guPLUpbl .image-shape .label,#mermaid-svg-xRLHAFh1guPLUpbl .icon-shape .label{text-align:center;}#mermaid-svg-xRLHAFh1guPLUpbl .node.clickable{cursor:pointer;}#mermaid-svg-xRLHAFh1guPLUpbl .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-xRLHAFh1guPLUpbl .arrowheadPath{fill:#333333;}#mermaid-svg-xRLHAFh1guPLUpbl .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-xRLHAFh1guPLUpbl .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-xRLHAFh1guPLUpbl .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-xRLHAFh1guPLUpbl .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-xRLHAFh1guPLUpbl .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-xRLHAFh1guPLUpbl .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-xRLHAFh1guPLUpbl .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-xRLHAFh1guPLUpbl .cluster text{fill:#333;}#mermaid-svg-xRLHAFh1guPLUpbl .cluster span{color:#333;}#mermaid-svg-xRLHAFh1guPLUpbl div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-xRLHAFh1guPLUpbl .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-xRLHAFh1guPLUpbl rect.text{fill:none;stroke-width:0;}#mermaid-svg-xRLHAFh1guPLUpbl .icon-shape,#mermaid-svg-xRLHAFh1guPLUpbl .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-xRLHAFh1guPLUpbl .icon-shape p,#mermaid-svg-xRLHAFh1guPLUpbl .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-xRLHAFh1guPLUpbl .icon-shape .label rect,#mermaid-svg-xRLHAFh1guPLUpbl .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-xRLHAFh1guPLUpbl .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-xRLHAFh1guPLUpbl .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-xRLHAFh1guPLUpbl :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} <2TB
2 - 10TB
>10TB
<5000 TPS
5000 - 50000
>50000
强一致
最终一致
>500 万
<500 万



开始选型
数据规模?
并发量?
分布式/NewSQL
集中式
一致性要求?
分布式 CP
分布式 AP
预算?
OceanBase/GoldenDB
TiDB/TDSQL
Oracle 兼容性?
达梦 DM8
openGauss
MySQL/PG

3.2 选型检查清单

markdown 复制代码
# 数据库选型检查清单

## 一、业务需求

### 1.1 数据规模

- [ ] 当前数据量:___ GB/TB
- [ ] 年增长量:___ GB/TB/年
- [ ] 3 年后预估:___ GB/TB

### 1.2 并发要求

- [ ] 平均 TPS: ___
- [ ] 峰值 TPS: ___
- [ ] 并发连接数:___

### 1.3 一致性要求

- [ ] 强一致(金融级)
- [ ] 最终一致(互联网级)

### 1.4 可用性要求

- [ ] 99.9%(年停机<8.76 小时)
- [ ] 99.99%(年停机<52 分钟)
- [ ] 99.999%(年停机<5 分钟)

## 二、技术约束

### 2.1 兼容性要求

- [ ] Oracle 语法兼容(存储过程)
- [ ] MySQL 协议兼容
- [ ] PostgreSQL 协议兼容

### 2.2 功能要求

- [ ] 存储过程支持
- [ ] 触发器支持
- [ ] 物化视图支持
- [ ] 分区表支持

### 2.3 运维要求

- [ ] 自动化备份恢复
- [ ] 监控告警完善
- [ ] 在线 DDL 支持
- [ ] 弹性扩缩容

## 三、成本预算

### 3.1 软件成本

- [ ] 商业授权:___ 万元
- [ ] 开源免费:0 元

### 3.2 硬件成本

- [ ] 服务器:___ 台 × ___ 万元
- [ ] 存储:___ TB × ___ 万元

### 3.3 人力成本

- [ ] DBA: ___ 人 × ___ 万元/年
- [ ] 开发:___ 人 × ___ 万元/年

### 3.4 运维成本

- [ ] 维保:___ 万元/年
- [ ] 培训:___ 万元/年

## 四、厂商评估

### 4.1 厂商实力

- [ ] 上市公司/独角兽
- [ ] 成立年限:___ 年
- [ ] 融资轮次:___

### 4.2 服务能力

- [ ] 7×24 小时支持
- [ ] 本地化服务团队
- [ ] 成功案例数量

### 4.3 生态完善度

- [ ] 文档齐全
- [ ] 社区活跃
- [ ] 认证培训体系

## 五、综合评分

| 维度 | 权重 | 得分 | 说明 |
|-----|------|------|------|
| **技术匹配** | 40% | ___ |      |
| **成本合理** | 25% | ___ |      |
| **服务保障** | 20% | ___ |      |
| **风险控制** | 15% | ___ |      |
| **总分** | 100% | ___ |      |

4. 成功案例

4.1 案例一:某银行核心系统选型实战

项目背景:

复制代码
公司信息:
- 机构类型:城商行
- 资产规模:3000 亿
- 网点数量:150 个
- 客户数量:500 万

原系统:
❌ IBM 大型机 z/OS
❌ DB2 V10
❌ 年费:5000 万元

需求:
✅ 国产化率 100%
✅ 成本降低 60%
✅ 性能提升 50%
✅ 自主可控

选型过程:

复制代码
Step 1: 明确需求

业务特点:
- 数据量:5TB(年增 30%)
- TPS:8000(峰值 20000)
- 一致性:强一致(账务系统)
- 可用性:99.999%
- 预算:3000 万元

技术约束:
- DB2 存储过程 2000 个
- COBOL 程序 10 万行
- 需要平滑迁移

Step 2: 初选名单

候选者:
1. OceanBase(分布式,阿里系)
2. 达梦 DM8(集中式,Oracle 兼容)
3. GoldenDB(分布式,中兴系)
4. TiDB(NewSQL,开源)
5. openGauss(华为企业级)

Step 3: POC 测试

测试指标:

| 指标 | OceanBase | 达梦 DM8 | GoldenDB | TiDB | openGauss |
|-----|-----------|---------|----------|------|-----------|
| **TPS** | 15000 | 8000 | 12000 | 10000 | 9000 |
| **延迟** | 50ms | 30ms | 60ms | 80ms | 40ms |
| **Oracle 兼容** | 70% | 95% | 60% | 50% | 80% |
| **DB2 兼容** | 60% | 85% | 70% | 40% | 75% |
| **成本** | 800 万 | 400 万 | 600 万 | 300 万 | 500 万 |
| **案例** | 网商银行 | 某农商行 | 中信银行 | 美团 | 某省农信 |

评分结果:
| 厂商 | 技术分 | 商务分 | 总分 | 排名 |
|-----|--------|--------|------|------|
| 达梦 DM8 | 85 | 90 | 87.5 | 1 |
| OceanBase | 90 | 75 | 82.5 | 2 |
| GoldenDB | 80 | 80 | 80 | 3 |
| openGauss | 78 | 78 | 78 | 4 |
| TiDB | 75 | 85 | 80 | 5 |

Step 4: 最终决策

选择:达梦 DM8

理由:
✅ Oracle/DB2兼容性好(95%/85%)
✅ 迁移成本低(存储过程改造量小)
✅ 性价比高(400 万搞定)
✅ 有同业案例(风险控制)
✅ 本地服务能力强

放弃 OceanBase 原因:
❌ 成本高(800 万,超预算)
❌ DB2 兼容性一般(60%)
❌ 架构复杂(运维难度大)

放弃 TiDB 原因:
❌ 强一致性场景性能差
❌ 存储过程不支持
❌ 开源协议风险(AGPL)

实施效果:

指标 目标 实际 达成率
国产化率 100% 100%
成本节约 60% 65%
性能提升 50% 60%
可用性 99.999% 99.999%

📝 总结

本文系统讲解了国产数据库的分类体系。关键收获:

  1. 三大架构: 集中式(达梦)、分布式(OceanBase)、NewSQL(TiDB)
  2. 负载类型: OLTP(交易)、OLAP(分析)、HTAP(混合)
  3. 一致性模型: CP(强一致)、AP(最终一致)
  4. 选型方法: 五维评估模型(技术、成本、服务、风险、生态)
  5. 实战案例: 某城商行核心系统选型决策过程

选型建议:

  • ✅ 小数据量(<2TB):集中式(达梦/openGauss)
  • ✅ 大数据量(>10TB):分布式(OceanBase/GoldenDB)
  • ✅ HTAP 需求:NewSQL(TiDB/TDSQL)
  • ✅ Oracle 迁移:达梦 DM8
  • ✅ 互联网场景:TiDB/MySQL

适用边界与限制:

  • 本文分类体系基于关系型数据库,不涵盖图数据库、时序数据库等专用数据库
  • 选型建议中的数据量阈值(2TB/10TB)为通用参考值,实际需结合并发量和复杂度综合判断
  • 文中案例已做脱敏处理,具体技术选型需结合企业实际业务场景和团队能力

趋势判断:

  • 📈 技术融合:OLTP+OLAP 边界模糊
  • 🔥 云原生:Serverless 数据库兴起
  • 🌏 开源主导:OpenHarmony 生态崛起
  • 💰 成本下降:国产化带来红利

数据库选型,没有最好,只有最合适!

👍 如果本文对你有帮助,欢迎点赞、收藏、转发!

💬 有任何问题或建议,请在评论区留言交流~

🔔 关注我,获取《信创时代:国产数据库从选型到实战完全指南》系列文章!

📝 行文仓促,定有不足之处,欢迎各位朋友在评论区批评指正,不胜感激!!!

专栏导航: