目录
- 关系型数据库 (Relational Database, RDBMS)
- 分布式数据库 (Distributed Database)
- [NoSQL 数据库](#NoSQL 数据库)
- [NewSQL 数据库](#NewSQL 数据库)
- 图数据库 (Graph Database)
- 时序数据库 (Time-Series Database)
- 文档数据库 (Document Database)
- 键值数据库 (Key-Value Database)
- 对象数据库 (Object Database)
- 内存数据库 (In-Memory Database)
- 列族数据库 (Column-Family Database)
- 搜索引擎数据库
- 各类数据库对比总结
1. 关系型数据库 (Relational Database, RDBMS)
1.1 定义
关系型数据库是基于关系模型(Relational Model)的数据库,数据以**二维表(Table)**的形式组织存储,表与表之间通过外键建立关联。
1.2 核心特性
| 特性 |
说明 |
| ACID 事务 |
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability) |
| SQL 标准 |
使用结构化查询语言进行数据操作 |
| 数据完整性 |
支持主键、外键、唯一约束、检查约束等 |
| 规范化设计 |
遵循范式(1NF/2NF/3NF/BCNF)减少数据冗余 |
| 强一致性 |
保证数据在事务完成后的准确性和一致性 |
1.3 代表产品
| 产品 |
厂商 |
许可证 |
特点 |
| MySQL |
Oracle |
GPL |
开源、轻量、社区活跃、Web 应用首选 |
| PostgreSQL |
PostgreSQL Global Development Group |
PostgreSQL License |
功能丰富、扩展性强、支持 JSON/地理空间 |
| Oracle Database |
Oracle |
商业 |
企业级、高性能、高可用、功能全面 |
| SQL Server |
Microsoft |
商业/免费版 |
与微软生态深度集成、BI 能力强 |
| SQLite |
SQLite Consortium |
公有领域 |
嵌入式、零配置、单文件存储 |
| MariaDB |
MariaDB Foundation |
GPL |
MySQL 分支、完全兼容、更多特性 |
1.4 适用场景
- 金融交易系统(银行、证券)
- ERP/CRM 等企业管理系统
- 需要复杂事务和强一致性的业务
- 数据关系明确、结构固定的应用
1.5 局限性
- 水平扩展困难(分库分表复杂)
- 高并发写入性能瓶颈
- 不适合非结构化/半结构化数据
- Schema 变更成本较高
2. 分布式数据库 (Distributed Database)
2.1 定义
分布式数据库是将数据物理分散存储在多个节点(服务器)上,但在逻辑上表现为一个统一的数据库系统。数据通过网络在节点间进行分布和协调。
2.2 核心特性
| 特性 |
说明 |
| 数据分片 (Sharding) |
将数据按规则分散到不同节点 |
| 数据复制 (Replication) |
多副本存储,提高可用性和容错性 |
| CAP 定理 |
一致性(C)/可用性(A)/分区容错性(P)三者不可兼得 |
| 分布式事务 |
跨节点的原子性操作(如 2PC、3PC、TCC) |
| 水平扩展 |
通过增加节点线性扩展存储和计算能力 |
2.3 分布式数据库类型
2.3.1 分布式关系型数据库
在关系模型基础上实现分布式架构,兼顾 SQL 能力和扩展性。
| 产品 |
特点 |
| TiDB |
PingCAP 出品,兼容 MySQL,Spanner 架构,HTAP 能力 |
| OceanBase |
蚂蚁集团出品,金融级高可用,TPC-C 世界纪录保持者 |
| CockroachDB |
开源,兼容 PostgreSQL,全球分布式 |
| YugabyteDB |
开源,兼容 PostgreSQL/CQL,云原生设计 |
| Google Spanner |
Google 云原生,TrueTime 实现外部一致性 |
| PolarDB |
阿里云,计算存储分离,一写多读 |
| TDSQL |
腾讯云,金融级分布式数据库 |
| GoldenDB |
中兴通讯,金融核心系统首选 |
2.3.2 分布式 NoSQL 数据库
见第 3 节 NoSQL 数据库。
2.4 一致性模型
┌─────────────────────────────────────────────────────────┐
│ 一致性光谱 │
├─────────────────────────────────────────────────────────┤
│ 强一致性 ──→ 顺序一致性 ──→ 因果一致性 ──→ 最终一致性 │
│ (Strong) (Sequential) (Causal) (Eventual) │
│ │
│ 数据实时一致 全局有序 因果相关有序 最终达到一致 │
│ 性能开销大 性能中等 性能较好 性能最优 │
└─────────────────────────────────────────────────────────┘
2.5 适用场景
- 海量数据存储(PB 级)
- 高并发读写(百万级 QPS)
- 全球化部署(多数据中心)
- 金融核心系统(强一致性要求)
- 互联网大规模应用
2.6 核心挑战
| 挑战 |
解决方案 |
| 分布式事务 |
2PC/3PC、Saga、TCC、Seata |
| 数据一致性 |
Paxos、Raft、Gossip 协议 |
| 数据分片策略 |
Hash 分片、范围分片、列表分片 |
| 跨节点 JOIN |
计算下推、分布式 SQL 引擎 |
| 全局唯一 ID |
Snowflake、UUID、数据库序列 |
3. NoSQL 数据库
3.1 定义
NoSQL(Not Only SQL)是一类非关系型数据库 的统称,它们不使用固定的表结构,不使用 SQL 作为主要查询语言,通常具有高可扩展性 和高可用性。
3.2 NoSQL 分类
3.2.1 键值数据库 (Key-Value Store)
| 属性 |
说明 |
| 数据模型 |
键-值对(Key-Value Pair) |
| 特点 |
结构简单、读写极快、O(1) 复杂度 |
| 代表产品 |
Redis、Memcached、Amazon DynamoDB、Riak |
| 适用场景 |
缓存、会话存储、计数器、排行榜、分布式锁 |
核心命令示例:
SET user:1001 "{name:'张三',age:25}"
GET user:1001
INCR page_view:home
3.2.2 文档数据库 (Document Store)
| 属性 |
说明 |
| 数据模型 |
JSON/BSON/XML 文档 |
| 特点 |
灵活 Schema、嵌套结构、支持复杂查询 |
| 代表产品 |
MongoDB、CouchDB、Amazon DocumentDB、Firebase |
| 适用场景 |
内容管理、用户画像、电商商品、日志存储 |
MongoDB 文档示例:
{
"_id": ObjectId("..."),
"name": "张三",
"address": {
"city": "北京",
"zip": "100000"
},
"tags": ["VIP", "活跃"]
}
3.2.3 列族数据库 (Column-Family Store)
| 属性 |
说明 |
| 数据模型 |
列族(Column Family) |
| 特点 |
列式存储、高压缩比、适合批量分析 |
| 代表产品 |
Apache Cassandra、HBase、ScyllaDB、ClickHouse |
| 适用场景 |
时序数据、物联网、日志分析、大数据仓库 |
Cassandra 数据模型:
CREATE TABLE user_activity (
user_id UUID,
event_time TIMESTAMP,
event_type TEXT,
data TEXT,
PRIMARY KEY (user_id, event_time)
) WITH CLUSTERING ORDER BY (event_time DESC);
3.2.4 图数据库 (Graph Database)
详见第 5 节。
3.3 NoSQL 与关系型对比
| 维度 |
关系型 (RDBMS) |
NoSQL |
| 数据模型 |
固定表结构 |
灵活 Schema |
| 查询语言 |
SQL |
各产品专有 API/查询语言 |
| 事务支持 |
完整 ACID |
通常 BASE(部分支持 ACID) |
| 扩展方式 |
垂直扩展为主 |
水平扩展为主 |
| 一致性 |
强一致性 |
最终一致性为主 |
| 适用数据 |
结构化 |
结构化/半结构化/非结构化 |
| 典型应用 |
OLTP |
大数据、实时应用、缓存 |
4. NewSQL 数据库
4.1 定义
NewSQL 是一类兼具关系型数据库的 ACID 事务和 SQL 接口,以及 NoSQL 的水平扩展能力的新型数据库。
4.2 核心特性
- ✅ 完整 ACID 事务支持
- ✅ 标准 SQL 接口
- ✅ 自动水平分片(Auto-Sharding)
- ✅ 高可用、自动故障恢复
- ✅ 云原生架构
4.3 代表产品
| 产品 |
类型 |
特点 |
| TiDB |
开源 |
HTAP(混合事务/分析处理),兼容 MySQL |
| CockroachDB |
开源 |
兼容 PostgreSQL,全球分布式 |
| YugabyteDB |
开源 |
兼容 PostgreSQL/CQL,云原生 |
| Google Spanner |
商业 |
TrueTime,外部一致性,全球分布式 |
| Vitess |
开源 |
MySQL 分片中间件,YouTube 出品 |
| PlanetScale |
SaaS |
Vitess 之上,Git 式数据库工作流 |
4.4 架构演进
传统 RDBMS NoSQL NewSQL
┌─────────┐ ┌─────────┐ ┌─────────────┐
│ 单机架构 │ → │ 分布式 │ → │ 分布式 + ACID│
│ ACID │ │ 高扩展 │ │ SQL 兼容 │
│ SQL │ │ 灵活模型 │ │ 云原生 │
└─────────┘ └─────────┘ └─────────────┘
5. 图数据库 (Graph Database)
5.1 定义
图数据库以**节点(Node/Vertex)和边(Edge/Relationship)**的形式存储数据,专门用于处理高度关联的数据。
5.2 核心概念
[节点: 人] [边: 关系]
(张三) ────[朋友]────→ (李四)
│ │
│ [同事] │ [同学]
↓ ↓
(王五) ←───[邻居]──── (赵六)
| 概念 |
说明 |
| 节点 (Node) |
实体,可带有属性标签 |
| 边 (Edge) |
关系,连接两个节点,可有方向和属性 |
| 属性 (Property) |
节点或边的键值对属性 |
| 标签 (Label) |
节点的分类标记 |
5.3 代表产品
| 产品 |
查询语言 |
特点 |
| Neo4j |
Cypher |
最流行、社区最大、ACID |
| Amazon Neptune |
Gremlin/SPARQL |
托管服务、全托管 |
| ArangoDB |
AQL |
多模型(图+文档+键值) |
| JanusGraph |
Gremlin |
开源、可扩展、与大数据集成 |
| TigerGraph |
GSQL |
原生并行图计算、高性能 |
| Nebula Graph |
nGQL |
国产、高性能、分布式 |
5.4 适用场景
- 社交网络分析(好友推荐、关系挖掘)
- 知识图谱(语义搜索、智能问答)
- 欺诈检测(交易网络分析)
- 推荐系统(协同过滤)
- 供应链/网络拓扑分析
6. 时序数据库 (Time-Series Database, TSDB)
6.1 定义
时序数据库是专门用于存储和处理时间序列数据(按时间顺序排列的数据点)的数据库。
6.2 核心特性
| 特性 |
说明 |
| 高写入吞吐 |
每秒百万级数据点写入 |
| 时间索引 |
基于时间的高效查询 |
| 数据压缩 |
时序数据高压缩率(10:1 甚至更高) |
| 降采样 (Downsampling) |
自动聚合历史数据,降低存储 |
| 数据保留策略 |
自动过期删除旧数据 |
6.3 代表产品
| 产品 |
特点 |
| InfluxDB |
最流行的时序数据库,类 SQL 查询(InfluxQL/Flux) |
| TimescaleDB |
基于 PostgreSQL 扩展,SQL 兼容 |
| Prometheus |
云原生监控首选,Pull 模式采集 |
| TDengine |
国产,物联网优化,超级表概念 |
| IoTDB |
Apache 项目,专为工业物联网设计 |
| OpenTSDB |
基于 HBase,大规模时序存储 |
6.4 适用场景
- 服务器/应用监控(Metrics)
- 物联网传感器数据
- 金融行情数据
- 工业设备遥测
- 日志时间序列分析
7. 文档数据库 (Document Database)
7.1 定义
文档数据库以文档为基本存储单元,文档通常是 JSON、BSON 或 XML 格式,具有自描述性和灵活的结构。
7.2 核心特性
- 灵活 Schema:同一集合中文档结构可以不同
- 嵌套文档:支持多层嵌套,减少 JOIN 操作
- 丰富查询:支持文档内字段查询、数组查询、聚合管道
- 水平扩展:原生支持分片集群
7.3 代表产品
| 产品 |
文档格式 |
特点 |
| MongoDB |
BSON |
最流行、功能最全面、聚合管道强大 |
| CouchDB |
JSON |
REST API、MVCC、离线同步 |
| Amazon DocumentDB |
BSON |
兼容 MongoDB,托管服务 |
| Firebase Firestore |
JSON |
Google 出品,实时同步、移动端友好 |
| RavenDB |
JSON |
.NET 生态、ACID 事务、全文搜索 |
7.4 MongoDB 核心概念映射
| MongoDB |
关系型数据库 |
| Database |
Database |
| Collection |
Table |
| Document |
Row |
| Field |
Column |
| Index |
Index |
| _id |
Primary Key |
8. 键值数据库 (Key-Value Database)
8.1 定义
键值数据库是最简单的 NoSQL 类型,以键(Key)作为唯一标识,存储对应的值(Value)。
8.2 核心特性
- 极简模型:Key → Value 映射
- 超高性能:内存级读写速度
- 灵活 Value:值可以是字符串、二进制、JSON 等任意格式
- 丰富数据结构(Redis):字符串、列表、集合、哈希、有序集合、Bitmap、HyperLogLog、Stream、Geo
8.3 代表产品
| 产品 |
存储方式 |
特点 |
| Redis |
内存 + 持久化 |
数据结构丰富、Pub/Sub、Lua 脚本、集群 |
| Memcached |
纯内存 |
极致简单、高性能缓存 |
| RocksDB |
磁盘(LSM-Tree) |
Facebook 出品,嵌入式、高性能写入 |
| LevelDB |
磁盘(LSM-Tree) |
Google 出品,轻量级键值存储 |
| Amazon DynamoDB |
托管 |
AWS 全托管、自动扩展、全球表 |
| etcd |
磁盘 |
分布式键值存储,Kubernetes 配置中心 |
| ZooKeeper |
磁盘 |
分布式协调服务,配置管理 |
8.4 Redis 数据类型速查
| 类型 |
命令示例 |
适用场景 |
| String |
SET/GET/INCR |
缓存、计数器 |
| Hash |
HSET/HGET |
对象存储 |
| List |
LPUSH/RPOP |
队列、栈 |
| Set |
SADD/SISMEMBER |
标签、去重 |
| Sorted Set |
ZADD/ZRANGE |
排行榜、延迟队列 |
| Bitmap |
SETBIT/BITCOUNT |
签到、活跃用户统计 |
| HyperLogLog |
PFADD/PFCOUNT |
UV 统计 |
| Stream |
XADD/XREAD |
消息队列 |
| Geo |
GEOADD/GEORADIUS |
地理位置 |
9. 对象数据库 (Object Database)
9.1 定义
对象数据库以对象为基本存储单元,数据以面向对象的方式持久化,对象之间的引用关系直接存储。
9.2 核心特性
- 对象持久化:直接存储对象,无需 ORM 映射
- 引用透明:对象间的引用直接保持
- 继承与多态:支持面向对象的继承体系
- 原生对象查询:支持面向对象查询语言(如 OQL)
9.3 代表产品
| 产品 |
特点 |
| db4o |
开源嵌入式对象数据库 |
| ObjectDB |
Java 对象数据库,JPA 兼容 |
| Versant |
企业级对象数据库 |
| InterSystems Cache/IRIS |
多模型数据库,支持对象、关系、文档 |
9.4 适用场景
- 复杂对象模型的持久化
- CAD/CAM 系统
- 电信网络管理
- 需要深对象图导航的应用
9.5 现状
对象数据库在 90 年代曾流行,但因SQL 生态过于强大 和ORM 技术的成熟,目前市场份额较小,多被关系型+ORM 方案取代。
10. 内存数据库 (In-Memory Database)
10.1 定义
内存数据库是将数据主要存储在内存中的数据库,通过避免磁盘 I/O 实现极致性能。
10.2 核心特性
| 特性 |
说明 |
| 亚毫秒延迟 |
内存访问速度比磁盘快 10,000 倍以上 |
| 高吞吐 |
单机可达百万级 QPS |
| 持久化策略 |
AOF(追加日志)、RDB(快照)、混合持久化 |
| 数据恢复 |
重启后从持久化文件恢复 |
10.3 代表产品
| 产品 |
类型 |
特点 |
| Redis |
键值+多数据结构 |
最流行内存数据库,持久化可选 |
| Memcached |
键值 |
纯缓存,无持久化 |
| SAP HANA |
列式内存 |
企业级,内存计算平台 |
| VoltDB |
内存关系型 |
分布式内存数据库,ACID |
| Aerospike |
键值 |
混合内存+SSD,高性能 |
| Tarantool |
多模型 |
Lua 应用服务器+数据库 |
10.4 内存 vs 磁盘数据库
| 维度 |
内存数据库 |
磁盘数据库 |
| 读取延迟 |
亚毫秒 |
毫秒级 |
| 写入延迟 |
亚毫秒 |
毫秒级 |
| 数据容量 |
受内存限制 |
受磁盘限制(TB/PB) |
| 数据持久性 |
需额外策略 |
天然持久 |
| 成本 |
高(内存贵) |
低 |
| 适用 |
热数据、缓存 |
全量数据、冷数据 |
11. 列族数据库 (Column-Family Database)
11.1 定义
列族数据库以列族(Column Family)为单位组织数据,同一列族的数据物理存储在一起,适合大规模写入和批量分析。
11.2 核心特性
- 列式存储:按列存储,适合分析型查询
- 高写入吞吐:LSM-Tree 结构,顺序写优化
- 高压缩比:同列数据类型一致,压缩效率高
- 动态列:每行可以有不同的列
11.3 代表产品
| 产品 |
架构 |
特点 |
| Apache Cassandra |
去中心化 P2P |
高可用、线性扩展、多数据中心 |
| Apache HBase |
主从架构(基于 HDFS) |
Hadoop 生态、强一致性 |
| ScyllaDB |
C++ 重写 Cassandra |
10 倍性能提升、兼容 CQL |
| ClickHouse |
列式 OLAP |
极速分析查询、高压缩 |
| Apache Druid |
列式实时分析 |
流式摄入、亚秒级查询 |
11.4 行存储 vs 列存储
行存储(Row-Oriented) 列存储(Column-Oriented)
┌────┬─────┬──────┐ ┌────────┬────────┬────────┐
│ ID │ Name│ Age │ │ ID: 1,2,3,4... │
├────┼─────┼──────┤ ├────────┼────────┼────────┤
│ 1 │ 张三 │ 25 │ │ Name: 张三,李四... │
│ 2 │ 李四 │ 30 │ ├────────┼────────┼────────┤
│ 3 │ 王五 │ 28 │ │ Age: 25,30,28... │
└────┴─────┴──────┘ └────────┴────────┴────────┘
适合:OLTP(按行读写) 适合:OLAP(按列聚合分析)
12. 搜索引擎数据库
12.1 定义
搜索引擎数据库是专门用于全文搜索 和复杂查询的数据库,基于倒排索引(Inverted Index)实现高效文本检索。
12.2 核心特性
| 特性 |
说明 |
| 倒排索引 |
词项 → 文档列表的映射 |
| 全文检索 |
支持分词、模糊匹配、相关性排序 |
| 聚合分析 |
支持复杂的统计聚合查询 |
| 近实时搜索 |
数据写入后秒级可搜索 |
12.3 代表产品
| 产品 |
特点 |
| Elasticsearch |
最流行的搜索引擎,ELK 栈核心,RESTful API |
| Apache Solr |
Lucene 之上,配置丰富、企业级 |
| Apache Lucene |
搜索引擎底层库 |
| OpenSearch |
AWS fork 自 Elasticsearch,开源 |
| Meilisearch |
轻量级、开发者友好、即时搜索 |
| Typesense |
开源、 typo 容错、 faceted 搜索 |
12.4 Elasticsearch 核心概念
| ES 概念 |
关系型类比 |
| Index |
Database |
| Type(已废弃) |
Table |
| Document |
Row |
| Field |
Column |
| Mapping |
Schema |
| Shard |
分片 |
| Replica |
副本 |
12.5 适用场景
- 电商商品搜索
- 日志分析与监控(ELK)
- 站内搜索引擎
- 安全情报分析
- 地理空间搜索
13. 各类数据库对比总结
13.1 综合对比表
| 数据库类型 |
数据模型 |
一致性 |
扩展性 |
典型延迟 |
代表产品 |
| 关系型 (RDBMS) |
二维表 |
强一致 |
垂直扩展 |
毫秒 |
MySQL, PostgreSQL, Oracle |
| 分布式关系型 |
二维表(分布式) |
可调 |
水平扩展 |
毫秒 |
TiDB, OceanBase, CockroachDB |
| 键值 (Key-Value) |
键值对 |
最终一致 |
水平扩展 |
亚毫秒 |
Redis, DynamoDB |
| 文档 (Document) |
JSON/BSON 文档 |
最终一致 |
水平扩展 |
毫秒 |
MongoDB, CouchDB |
| 列族 (Column-Family) |
列族 |
可调 |
水平扩展 |
毫秒 |
Cassandra, HBase, ClickHouse |
| 图 (Graph) |
节点+边 |
强一致 |
垂直/水平 |
毫秒 |
Neo4j, Nebula Graph |
| 时序 (TSDB) |
时间序列 |
最终一致 |
水平扩展 |
毫秒 |
InfluxDB, Prometheus, TDengine |
| 搜索引擎 |
倒排索引 |
最终一致 |
水平扩展 |
毫秒 |
Elasticsearch, OpenSearch |
| 内存数据库 |
多种 |
强一致 |
垂直扩展 |
亚毫秒 |
Redis, SAP HANA |
| NewSQL |
二维表 |
强一致 |
水平扩展 |
毫秒 |
TiDB, CockroachDB, Spanner |
13.2 选型决策树
开始选型
│
┌────────────┼────────────┐
↓ ↓ ↓
需要 ACID 海量数据 高并发缓存
事务+SQL 高扩展? 场景?
│ │ │
┌────┴────┐ ┌──┴──┐ ┌──┴──┐
↓ ↓ ↓ ↓ ↓ ↓
单机 分布式 NoSQL NewSQL Redis Memcached
│ │ │ │ │ │
MySQL/ TiDB/ MongoDB TiDB 丰富 简单
PostgreSQL OceanBase Cassandra 数据结构 缓存
CockroachDB
13.3 现代数据库发展趋势
| 趋势 |
说明 |
| 云原生 (Cloud-Native) |
存储计算分离、Serverless、按需付费 |
| HTAP |
混合事务/分析处理,一份数据支持 OLTP+OLAP |
| 多模数据库 (Multi-Model) |
单一数据库支持多种数据模型 |
| AI 原生数据库 |
内置向量检索、AI 推理能力 |
| Serverless |
无服务器架构,自动扩缩容 |
| 向量数据库 |
专门存储和检索高维向量(Embedding) |
13.4 向量数据库补充
向量数据库是近年兴起的数据库类型,专门用于存储和检索高维向量(如 AI 模型的 Embedding)。
| 产品 |
特点 |
| Milvus |
开源,专为向量设计,GPU 加速 |
| Pinecone |
托管服务,即开即用 |
| Weaviate |
开源,GraphQL 接口,多模态 |
| Qdrant |
Rust 编写,高性能过滤搜索 |
| pgvector |
PostgreSQL 扩展,SQL 原生支持 |
| Redis Vector |
Redis 向量搜索模块 |
结语 :数据库技术经历了从关系型到 NoSQL,再到 NewSQL 和多模数据库的演进。现代应用往往采用多数据库组合的架构(Polyglot Persistence),根据具体场景选择最合适的数据库类型,以构建高性能、高可用的数据系统。