一、关系型数据库(RDBMS)
特点:表结构固定、支持 SQL、强事务(ACID)、适合复杂查询
✅ 主流关系型数据库一览
| 数据库 | 类型 | 特点 | 常见场景 |
|---|---|---|---|
| MySQL | 开源 | 使用最广、生态成熟 | Web 应用 |
| PostgreSQL | 开源 | 功能最强、支持 JSON | 复杂业务 |
| Oracle | 商业 | 稳定、安全、贵 | 金融/银行 |
| SQL Server | 商业 | 微软体系 | .NET |
| MariaDB | 开源 | MySQL 分支 | 替代 MySQL |
| SQLite | 嵌入式 | 无服务进程 | 移动端 |
| DB2 | 商业 | 高性能 | 大型企业 |
| TiDB | 分布式 | MySQL 协议 | 高并发 |
📌 面试一句话
关系型数据库强调 结构化数据 + 强一致性 + SQL 查询能力
二、非关系型数据库(NoSQL)
特点:无固定表结构、易扩展、高并发、弱事务
1️⃣ 键值型(Key-Value)
| 数据库 | 特点 | 使用场景 |
|---|---|---|
| Redis | 内存、超快 | 缓存、分布式锁 |
| Memcached | 极简 | 纯缓存 |
| Etcd | 高一致性 | 配置中心 |
2️⃣ 文档型(Document)
| 数据库 | 特点 | 使用场景 |
|---|---|---|
| MongoDB | JSON/BSON | 内容管理 |
| CouchDB | JSON | 同步场景 |
| Firestore | 云服务 | App 后端 |
3️⃣ 列族型(Column-Family)
| 数据库 | 特点 | 使用场景 |
|---|---|---|
| HBase | 海量数据 | 大数据 |
| Cassandra | 高可用 | 写多读少 |
| ScyllaDB | 高性能 | 分布式 |
4️⃣ 图数据库(Graph)
| 数据库 | 特点 | 使用场景 |
|---|---|---|
| Neo4j | 图关系 | 社交关系 |
| JanusGraph | 分布式 | 关系分析 |
| ArangoDB | 多模型 | 复杂关系 |
📌 NoSQL 一句话总结
非关系型数据库更关注 扩展性、性能和灵活性
三、关系型 vs 非关系型对比(面试必背)
| 维度 | 关系型 | 非关系型 |
|---|---|---|
| 数据结构 | 表 | 多模型 |
| Schema | 固定 | 灵活 |
| 事务 | 强(ACID) | 弱 / 最终一致 |
| 扩展 | 垂直 | 水平 |
| 查询 | SQL | API |
| 性能 | 中 | 高 |
| 场景 | 复杂业务 | 高并发 |
四、什么时候用哪个?(加分点)
✅ 关系型适合
-
金融 / 交易
-
报表统计
-
强一致性
✅ 非关系型适合
-
缓存
-
日志
-
社交 / 推荐
-
实时数据
📌 高级面试答案
实际项目中通常是 关系型 + NoSQL 组合使用
五、混合数据库(新趋势)
| 数据库 | 特点 |
|---|---|
| NewSQL(TiDB) | 强一致 + 分布式 |
| PostgreSQL JSONB | 半结构 |
| Redis Stack | 多模型 |
六、终极一句话(直接背)
关系型数据库适合强事务和复杂查询,
非关系型数据库适合高并发和大规模数据,
实际项目中通常组合使用。