1. 数据库分类全景
数据库系统
├── 关系型数据库 (RDBMS)
│ ├── 商业:Oracle、SQL Server、DB2
│ ├── 开源:PostgreSQL、MySQL、MariaDB
│ └── 特点:ACID、SQL、强一致性、成熟生态
│
├── NoSQL 数据库
│ ├── 文档型:MongoDB、CouchDB、Firestore
│ ├── 键值型:Redis、DynamoDB、Riak
│ ├── 列族型:Cassandra、HBase、ScyllaDB
│ ├── 图数据库:Neo4j、Dgraph、JanusGraph
│ └── 搜索引擎:Elasticsearch、OpenSearch
│
├── NewSQL 数据库
│ ├── Google Spanner、CockroachDB、TiDB、YugabyteDB
│ └── 特点:水平扩展 + ACID + SQL 兼容
│
└── 专用数据库
├── 时序数据库:InfluxDB、TimescaleDB、TDengine
├── 向量数据库:Pinecone、Milvus、pgvector
└── 内存数据库:Redis、SAP HANA、MemSQL
2. OLTP vs OLAP
| 维度 | OLTP(在线事务处理) | OLAP(在线分析处理) |
|---|---|---|
| 用途 | 日常业务操作 | 数据分析、报表、决策支持 |
| 数据规模 | GB ~ TB | TB ~ PB |
| 查询模式 | 点查、短事务、少量行 | 全表扫描、聚合、多表 JOIN |
| 写入 | 高并发随机写入 | 批量导入、ETL |
| 更新 | 频繁 UPDATE/DELETE | mostly 追加(Append-only) |
| 响应时间 | 毫秒级 | 秒 ~ 分钟级 |
| 代表 | MySQL、PostgreSQL、Oracle | ClickHouse、Snowflake、BigQuery |
3. NoSQL 选型指南
| 类型 | 数据模型 | 适用场景 | 代表产品 |
|---|---|---|---|
| 文档型 | JSON/BSON 文档 | 内容管理、用户资料、 catalogs | MongoDB |
| 键值型 | key-value | 缓存、会话、购物车 | Redis、DynamoDB |
| 列族型 | 宽列存储 | 时序数据、日志、IoT | Cassandra |
| 图数据库 | 节点 + 边 | 社交网络、知识图谱、推荐 | Neo4j |
| 搜索引擎 | 倒排索引 | 全文检索、日志分析 | Elasticsearch |
4. 选型决策树
需要水平扩展?
├── 是 → 需要 ACID 事务?
│ ├── 是 → NewSQL (TiDB/CockroachDB/Spanner)
│ └── 否 → NoSQL
│ ├── 键值查询为主 → Redis/DynamoDB
│ ├── 文档模型 → MongoDB
│ ├── 时序数据 → InfluxDB/TimescaleDB
│ └── 图关系 → Neo4j
└── 否 → 复杂分析查询为主?
├── 是 → ClickHouse/DuckDB/Snowflake
└── 否 → PostgreSQL / MySQL
├── 需要高级功能(JSON/全文/GIS)→ PostgreSQL
└── 追求简单、广泛兼容 → MySQL
PostgreSQL 被称为"世界上最先进的开源关系型数据库",功能丰富(JSONB、数组、范围类型、全文检索、GIS 扩展),适合作为大多数应用的首选数据库。
延伸阅读
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。