一、基础定义
SQL(RDBMS 关系型数据库):采用表结构、关系模型,使用标准 SQL 查询语言。代表:MySQL、PostgreSQL、Oracle、SQL Server、SQLite。
NoSQL:泛指非关系型数据库,不强制 SQL,打破固定表结构,细分四大类:
键值库 (Redis)、文档库 (MongoDB)、列族库 (HBase)、图数据库 (Neo4j)。
二、核心维度对比
三、关键理论:ACID vs BASE
SQL 遵循 ACID(事务四大特性)
A 原子性、C 一致性、I 隔离性、D 持久性
适合:支付、订单、账务,要求数据绝对准确不能出错。
多数分布式 NoSQL 遵循 BASE
Basically Available(基本可用)
Soft state(软状态)
Eventually consistent(最终一致性)
牺牲实时强一致,换取高可用、高吞吐。
⚠️ 误区:不是所有 NoSQL 都没有事务!MongoDB 4.0 + 支持多文档事务;Redis 支持 Lua 事务,但隔离级别、性能和 RDBMS 事务仍有差距。
四、四类 NoSQL 简单区分
键值数据库(Redis、DynamoDB)
K-V 结构,读写极快,多用于缓存、会话存储、限流。
文档数据库(MongoDB、CouchDB)
JSON/BSON 文档,类似 “自带嵌套的松散表”,适合电商商品、用户资料。
列族数据库(HBase、Cassandra)
按列簇存储,适合海量时序数据、日志、物联网数据。
图数据库(Neo4j、NebulaGraph)
节点 + 关系模型,擅长社交关系、推荐、路径拓扑查询。
五、适用场景推荐
✅ 优先选 SQL(关系库)
业务数据存在大量关联(多表 JOIN)
需要严格事务、数据强一致性:财务、订单、进销存
数据结构相对稳定,很少频繁变更字段
✅ 优先选 NoSQL
数据结构多变、嵌套复杂(用户画像、动态表单)
超高并发读写、海量数据存储(日志、物联网、实时数据流)
需要快速水平扩容,对实时一致性要求不高
缓存、排行榜、地理位置、社交关系等场景
六、现代架构趋势:混合使用(最常见)
不互相替代,互补搭配
示例:
MySQL 存储核心订单交易数据(事务、关联查询);
Redis 做缓存、计数器;
MongoDB 存储用户行为日志;
时序库存储监控指标。
补充常见误区澄清
❌ NoSQL = 不支持 SQL
很多 NoSQL 提供类 SQL 接口(Cassandra CQL、MongoDB MQL),只是不支持标准 SQL 完整能力。
❌ SQL 只能垂直扩容
MySQL、PostgreSQL 可以分库分表水平扩展,但相比 NoSQL 集群更复杂。
❌ NoSQL 一定更快
简单查询 NoSQL 优势大;复杂多表关联查询,优化后的 SQL 数据库性能更强。