四类主流数据库核心对比表
(按 数据模型 分类,记忆口诀:关系表结构,键值键对值,列存列分区,文档文档树)
| 对比维度 | 关系型数据库(RDBMS) | 键值(Key-Value)数据库 | 列存储数据库(Column-Family) | 文档数据库(Document Database) |
|---|---|---|---|---|
| 核心数据模型 | 二维表结构(行 + 列),遵循 ACID,支持 SQL | 键值对(Key-Value Pair),Key 唯一,Value 为二进制 / 字符串 | 列族结构(Table→Column Family→Column→Row),按列分区存储 | 文档模型(JSON/BSON/XML),文档为基本单位,支持嵌套结构 |
| 存储结构特点 | 按行存储,适合整行读写 | 哈希表 / 有序索引存储,Key 为索引,Value 无结构 | 按列存储,同一列数据物理相邻,适合列聚合查询 | 文档内按键值存储,支持索引,文档间无固定 schema |
| 查询能力 | 强,支持复杂 SQL 查询(联表、分组、聚合) | 弱,仅支持按 Key 查询,不支持复杂条件过滤 | 中,支持列级聚合查询,部分支持 SQL-like 语法 | 中强,支持文档内字段查询、索引,部分支持联表和复杂查询 |
| 事务支持 | 强,完全支持 ACID 特性 | 弱,多数仅支持单 Key 事务,部分支持分布式事务 | 中,部分支持行级事务,分布式事务支持有限 | 中,部分支持文档级事务,分布式事务支持有限 |
| Schema(模式) | 强 Schema,表结构固定,需提前定义 | 无 Schema,Value 结构完全灵活 | 弱 Schema,列族结构固定,列可动态添加 | 动态 Schema,文档结构灵活,无需提前定义 |
| 核心优势 | 数据一致性强,查询灵活,适合复杂业务逻辑 | 读写性能极高,延迟低,易于水平扩展 | 列聚合查询性能优异,适合大数据分析、统计 | 文档结构灵活,适合半结构化数据,开发效率高 |
| 核心劣势 | 水平扩展困难,高并发下性能瓶颈明显 | 查询能力有限,不支持复杂条件查询 | 行级读写性能较差,不适合高频事务操作 | 联表查询性能弱,复杂事务支持不足 |
| 典型产品 | MySQL、Oracle、PostgreSQL、SQL Server | Redis、Memcached、Amazon DynamoDB | HBase、Cassandra、ClickHouse | MongoDB、CouchDB、Elasticsearch(文档存储特性) |
| 软考高频应用场景 | 传统业务系统(电商订单、金融交易)、需要强一致性的场景 | 缓存系统、会话存储、高频读写的简单数据存储 | 大数据分析、日志存储、时序数据统计(如用户行为分析) | 内容管理系统(CMS)、电商商品信息、移动应用后台 |
1. 四大数据库与 CAP 定理的适配
- 关系型数据库:优先保证一致性(C) 和可用性(A),适合 CP 场景(如金融交易)。
- 键值 / 列存储 / 文档数据库:多为 NoSQL 数据库,优先保证可用性(A) 和分区容错性(P),适合 AP 场景(如互联网高并发业务);部分列存储 / 文档数据库可通过配置支持 CP 场景。
2. 易混概念区分
- 列存储数据库 vs 关系型数据库:关系型按行存储,适合整行读写(如订单查询);列存储按列存储,适合多行列聚合(如统计所有用户的消费总额)。
- 文档数据库 vs 键值数据库:键值数据库的 Value 无结构,仅能按 Key 查询;文档数据库的 Value 是结构化文档(如 JSON),可按文档内字段查询和索引。
3. 分布式支持能力
- 关系型数据库:分布式支持较弱,需通过分库分表中间件(如 Sharding-JDBC)实现水平扩展。
- NoSQL 数据库(键值 / 列存储 / 文档):天生支持分布式,可通过增加节点实现水平扩展,适合海量数据和高并发场景。
特点
- 关系型:表结构,强事务,SQL 查询强,一致优先保。
- 键值型:键对值,读写快,查询仅靠 Key,缓存最常用。
- 列存储:按列存,聚合快,大数据分析,统计显优势。
- 文档型:JSON 树,Schema 活,半结构化数据,开发效率高。