NoSQL数据库对比

NoSQL 类型对比

数据库类型数据模型最适合一致性
MongoDB文档型JSON/BSON 文档灵活 Schema、通用业务强一致(副本集)/ 最终一致
Redis键值 / 内存型字符串、哈希、列表、集合、有序集合缓存、会话、排行榜、发布订阅单机强一致 / 集群最终一致
Cassandra宽列型表(分区键 + 聚簇键)时序数据、写多读少、全球多活可调一致性(ONE 到 ALL)
DynamoDB键值 + 文档条目(主键 + 可选排序键)Serverless、可预测延迟、自动伸缩最终一致 / 强一致(可选)
ClickHouse列式 OLAP列存 + 物化视图分析查询、聚合、日志分析最终一致
Neo4j图数据库节点 + 边 + 属性关系分析、欺诈检测、推荐系统强一致(ACID)
InfluxDB时序型度量值、标签、字段、时间戳监控指标、IoT 数据最终一致

CAP 定理实践

类型保证示例取舍
CP(一致性 + 分区容忍)数据始终一致;网络分区时可能拒绝写入MongoDB(w:majority)、HBase、Zookeeper网络分区期间可用性下降
AP(可用性 + 分区容忍)始终响应,但可能返回旧数据Cassandra、DynamoDB、CouchDB读取可能不是最新数据
CA(一致性 + 可用性)一致且可用,但不容忍网络分区单节点传统关系数据库无法水平扩展

选型指南

选 MongoDB: ✓ Schema 灵活、不断变化 ✓ 需要丰富的文档查询 ✓ 通用业务应用数据库 ✗ 全球级别高写入吞吐(选 Cassandra) 选 Redis: ✓ 需要亚毫秒级延迟 ✓ 缓存、限流、会话、发布订阅 ✗ 数据持久性要求极高 选 Cassandra: ✓ 十亿级数据、多地区写入 ✓ 时序或追加型写入负载 ✗ 复杂查询、JOIN(需围绕查询建模) 选 DynamoDB: ✓ AWS 原生、Serverless、自动伸缩 ✓ 任意规模下个位数毫秒延迟 ✗ 复杂查询(需精心数据建模) 选 ClickHouse: ✓ 数十亿行数据的分析查询 ✓ 实时聚合、数据看板 ✗ OLTP 场景(行级低延迟写入)