数据库技术对比
数据库分类
数据库
├── 关系型 (RDBMS)
│ ├── PostgreSQL
│ ├── MySQL
│ ├── SQLite
│ └── Oracle / SQL Server
├── 文档型 (Document)
│ ├── MongoDB
│ └── CouchDB
├── 键值型 (Key-Value)
│ ├── Redis
│ └── DynamoDB
├── 列族型 (Column-Family)
│ ├── Cassandra
│ └── HBase
├── 时序型 (Time-Series)
│ ├── InfluxDB
│ ├── TimescaleDB
│ └── QuestDB
├── 图数据库 (Graph)
│ ├── Neo4j
│ └── ArangoDB
├── 向量数据库 (Vector)
│ ├── Pinecone
│ ├── Milvus
│ ├── Weaviate
│ └── Chroma
└── NewSQL
├── CockroachDB
├── TiDB
└── YugabyteDB
核心对比
关系型数据库
| 特性 |
PostgreSQL |
MySQL |
SQLite |
| 类型 |
对象-关系型 |
关系型 |
嵌入式 |
| 并发 |
MVCC |
MVCC |
文件锁(单写) |
| 扩展性 |
读写分离 + 逻辑复制 |
读写分离 + Group Replication |
无(单文件) |
| 数据类型 |
丰富(JSONB、数组、范围、几何) |
基础(JSON 支持较弱) |
弱类型 |
| 扩展生态 |
极强(PostGIS、TimescaleDB、pgvector) |
中等 |
有限 |
| 许可证 |
PostgreSQL License(类 MIT) |
GPL v2 |
公有领域 |
| 适用场景 |
复杂查询、地理数据、全文搜索 |
Web 应用、读多写少 |
移动端、嵌入式、原型 |
选型建议:
- 默认选 PostgreSQL:功能最全、扩展性最强、社区最活跃
- MySQL:已有成熟 MySQL 生态、需要简单读写场景
- SQLite:单机、嵌入式、不需要独立服务
文档型数据库
| 特性 |
MongoDB |
CouchDB |
| 数据模型 |
BSON 文档(类似 JSON) |
JSON 文档 |
| 查询语言 |
MQL(MongoDB Query Language) |
REST API + Mango Query |
| 复制 |
Replica Set(主从) |
Master-Master(多主) |
| 索引 |
B-Tree、地理空间、文本、哈希 |
B-Tree |
| 事务 |
4.0+ 支持多文档事务 |
最终一致性 |
| 适用场景 |
内容管理、实时分析、CMS |
离线优先应用、同步场景 |
键值数据库
| 特性 |
Redis |
DynamoDB |
| 模式 |
内存为主,可持久化 |
全托管,磁盘为主 |
| 数据结构 |
String、List、Set、Hash、Sorted Set、Stream |
Key-Value、文档 |
| 延迟 |
亚毫秒 |
个位数毫秒 |
| 持久化 |
RDB 快照 + AOF 日志 |
自动 |
| 扩展 |
Redis Cluster(分片) |
自动扩展 |
| 适用场景 |
缓存、会话、排行榜、消息队列 |
大规模 KV 存储、电商购物车 |
时序数据库
| 特性 |
InfluxDB |
TimescaleDB |
QuestDB |
| 底层 |
自研 TSM 引擎 |
PostgreSQL 扩展 |
自研,列式存储 |
| 查询 |
Flux / InfluxQL |
SQL |
SQL |
| 压缩 |
自动 |
自动(原生压缩) |
高压缩比 |
| 保留策略 |
自动过期 |
原生分区 + 自动压缩 |
自动过期 |
| 适用场景 |
DevOps 监控、IoT |
已有 PG 生态、需 SQL |
高吞吐金融数据 |
图数据库
| 特性 |
Neo4j |
ArangoDB |
| 模型 |
属性图 |
多模型(图 + 文档 + KV) |
| 查询语言 |
Cypher |
AQL(ArangoDB Query Language) |
| 集群 |
Enterprise 版支持 |
社区版即支持 |
| ACID |
完整支持 |
完整支持 |
| 适用场景 |
知识图谱、推荐、社交网络 |
多模型需求、灵活查询 |
向量数据库(AI/ML 场景)
| 特性 |
Pinecone |
Milvus |
Weaviate |
Chroma |
| 部署 |
全托管 SaaS |
自部署 / Zilliz Cloud |
自部署 / Cloud |
嵌入式 / 自部署 |
| 索引 |
HNSW + proprietary |
IVF、HNSW、DiskANN |
HNSW |
HNSW |
| 混合搜索 |
稀疏+稠密 |
稀疏+稠密 |
稀疏+稠密+关键词 |
稀疏+稠密 |
| 过滤 |
元数据过滤 |
标量过滤 |
标量过滤 |
元数据过滤 |
| 标量存储 |
元数据 |
Payload |
原生属性 |
原生 |
| 适用场景 |
快速上手、全托管 |
大规模生产、自部署 |
语义搜索、RAG |
快速原型、本地开发 |
NewSQL
| 特性 |
CockroachDB |
TiDB |
YugabyteDB |
| 协议兼容 |
PostgreSQL |
MySQL |
PostgreSQL |
| 架构 |
分布式事务 |
分布式事务 + HTAP |
分布式事务 |
| 扩展 |
自动分片、水平扩展 |
自动分片、TiFlash 列存 |
自动分片 |
| 强一致性 |
Raft |
Raft |
Raft |
| 适用场景 |
全球分布式、强一致 |
大规模 OLTP + OLAP |
PostgreSQL 兼容分布式 |
选型决策树
需要事务?
├── 是 → 单机在容量、吞吐、可用性和地域目标上是否仍能满足?
│ ├── 是 → PostgreSQL / MySQL,并先考虑索引、分区和只读副本
│ └── 否 → 是否确实需要跨节点强一致事务?
│ ├── 是 → 评估 CockroachDB / TiDB / YugabyteDB
│ └── 否 → 评估分片、读写分离或按业务拆分
├── 否 → 数据模型?
│ ├── 灵活文档 → MongoDB
│ ├── KV 缓存 → Redis
│ ├── 时序数据 → TimescaleDB(已有PG)/ InfluxDB(独立时序)
│ ├── 关系+图 → Neo4j / ArangoDB
│ └── 向量/语义 → Milvus(生产)/ Chroma(原型)
数据量不能单独决定是否采用分布式数据库;写入吞吐、延迟、恢复目标、跨地域一致性、运维能力和成本通常更关键。
趋势
- HTAP 混合事务分析:TiDB、CockroachDB 等 NewSQL 正在模糊 OLTP 和 OLAP 的边界
- 向量数据库爆发:RAG / LLM 应用推动向量数据库需求激增
- Serverless 数据库:Aurora Serverless、PlanetScale、Neon 等按需计费模式
- 多模型数据库:ArangoDB、Fauna 等试图用一个引擎覆盖多种数据模型
- 边缘数据库:SQLite + CRDT(如 LiteFS、Turso)走向边缘部署
参考资料