《三驾马车:MySQL、MongoDB、Redis对比与融合实战》

目录

[1.基因与定位:SQL、NoSQL、Cache 的三国杀](#1.基因与定位:SQL、NoSQL、Cache 的三国杀)

[2. 数据模型与 Schema 哲学](#2. 数据模型与 Schema 哲学)

[3. 存储机制:B+ 树、LSM-Tree、跳表与哈希的交响](#3. 存储机制:B+ 树、LSM-Tree、跳表与哈希的交响)

[4. 事务与一致性:ACID、BASE、最终一致](#4. 事务与一致性:ACID、BASE、最终一致)

[5. 高可用与分布式](#5. 高可用与分布式)

[6. 性能画像](#6. 性能画像)

[7. 索引全景](#7. 索引全景)

[8. 安全与合规](#8. 安全与合规)

[9. 典型场景分工与融合架构](#9. 典型场景分工与融合架构)

[10. 选型 5W2H 框架](#10. 选型 5W2H 框架)

[11. 2025 最新功能雷达](#11. 2025 最新功能雷达)

[12. 常见误区与踩坑实录](#12. 常见误区与踩坑实录)

[13. 未来趋势](#13. 未来趋势)

[14. 总结](#14. 总结)


1.基因与定位:SQL、NoSQL、Cache 的三国杀

维度 MySQL MongoDB Redis
类型 关系型(SQL) 文档型 NoSQL 内存键值型 Cache
定位 系统记录、交易 内容、日志、实时分析 缓存、队列、计数器
CAP 倾向 CP(InnoDB) AP(可调成 CP) CP(单线程) / AP(Cluster)
语言 SQL JSON-like 命令行 / Lua
最大卖点 事务、JOIN、稳定性 灵活、横向扩展 亚毫秒延迟、丰富结构

2. 数据模型与 Schema 哲学

2.1 MySQL

• 行列二维表,严格类型,范式与反范式之争。

• 改动列需 DDL,8.0 秒级 Online DDL。

2.2 MongoDB

• BSON 文档,最大 16 MB;字段可嵌套数组、GeoJSON。

• Schema Validation:validator 规则平衡灵活与规范。

2.3 Redis

• Key-Value,Value 支持 10 种数据结构。

• Key 命名设计:business:object:id:field,避免大 Key 热 Key。

3. 存储机制:B+ 树、LSM-Tree、跳表与哈希的交响

3.1 MySQL

• InnoDB 聚簇 B+ 树,页 16 KB,Buffer Pool 缓存。

• redo log WAL + undo log MVCC。

3.2 MongoDB

• WiredTiger:LSM-Tree(实际为 B+ 树 + checkpoint),压缩 snappy/zstd,cacheSizeGB 60%。

• Journal (WAL) 100 ms 刷盘。

3.3 Redis

• 跳表+dict(ZSet)、ziplist/quicklist(List)、intset(Set)。

• RDB 快照 + AOF 命令追加;6.0 多线程 IO。

4. 事务与一致性:ACID、BASE、最终一致

维度 MySQL MongoDB Redis
事务粒度 行级、MVCC 文档级、4.0 多文档 单命令、MULTI/Lua
隔离级别 RR/RC/Serializable 快照隔离(RR) 无隔离(单线程)
分布式事务 XA、TCC、2PC 支持分片事务 RedLock、Lua 脚本
一致性策略 强一致 可调:majority / local 主从异步 / wait aof

5. 高可用与分布式

5.1 MySQL

• 主从 + GTID + MGR(Paxos)。

• 分库分表:ShardingSphere、Vitess。

5.2 MongoDB

• 复制集:Primary + Secondaries,自动故障转移 5--12 s。

• 分片:Zone Sharding、全球集群。

5.3 Redis

• Sentinel:三节点投票,30 s 内切换。

• Cluster:16384 槽位,在线迁移;6.2 支持 TLS + ACL。

6. 性能画像

指标 MySQL MongoDB Redis
延迟 1--10 ms 1--5 ms 0.1--0.5 ms
吞吐 10 k--100 k QPS 100 k--1 M QPS 1 M--2 M QPS
瓶颈 磁盘 IO、锁冲突 CPU、网络、分片热点 内存、网络、fork
水平扩展 分片复杂 原生分片 Cluster 16384 槽

7. 索引全景

类型 MySQL MongoDB Redis
聚簇 主键 _id
二级 普通/唯一 单字段、复合、TTL 无(键就是索引)
地理 5.7+ InnoDB 2dsphere、2d GEOADD、GEORADIUS
全文 FULLTEXT text index RediSearch 模块
位图 SETBIT、BITCOUNT

8. 安全与合规

• 传输:MySQL TLS1.3、MongoDB TLS1.3、Redis 6.0 TLS1.3。

• 认证:MySQL SHA-256、MongoDB SCRAM-SHA-256、Redis ACL。

• 审计:MySQL Audit Plugin、MongoDB Atlas Audit、Redis ACL LOG。

• 加密:MySQL TDE、MongoDB Encrypted Storage Engine、Redis Enterprise TEE。

9. 典型场景分工与融合架构

9.1 电商秒杀

• MySQL:订单、库存、支付(强一致)。

• MongoDB:商品详情、用户行为日志(灵活)。

• Redis:库存扣减、分布式锁、排行榜(缓存+原子计数)。

9.2 实时推荐

• MongoDB:用户画像、标签。

• Redis:实时特征缓存、BloomFilter 去重。

• MySQL:推荐结果持久化、报表。

9.3 物联网

• MongoDB Time Series:海量传感器数据。

• Redis Stream:边缘网关消息队列。

• MySQL:设备元数据、账单。

10. 选型 5W2H 框架

问题 思考维度 结论示例
What 数据 结构化交易 MySQL
半结构化内容 MongoDB
高频缓存 Redis
Who 用户 开发团队熟悉 SQL MySQL
Where 部署 云托管还是自建 Atlas / RDS / Redis Cloud
When 规模 TB 级、并发 1 M MongoDB 分片 + Redis Cluster
Why 需求 强事务 vs 最终一致 MySQL vs MongoDB
How 成本 内存贵 vs 磁盘便宜 Redis 64 GB 以内,MySQL 大容量

11. 2025 最新功能雷达

• MySQL:HeatWave Lakehouse、AI Vector、InnoDB 并行 DDL。

• MongoDB:Atlas Vector Search、Queryable Encryption、Time Series Window Functions。

• Redis:Redis 7.2 Functions、ACL LOG、Sharded Pub/Sub、RedisRaft(强一致)。

12. 常见误区与踩坑实录

12.1 MySQL

• 误用 ENUM 存大量值 → 转 TINYINT+字典表。

• VARCHAR(255) 过度 → 行溢出,影响 Buffer Pool。

12.2 MongoDB

• 文档 16 MB 放图片 → 转 GridFS 或对象存储。

• 片键单调递增 ObjectId → 热 Shard。

12.3 Redis

• KEYS * 线上阻塞 → 用 SCAN。

• 大 Key 100 MB → 拆 Hash 分片或使用 Redis Modules。

13. 未来趋势

• NewSQL:TiDB、CockroachDB 融合 MySQL 协议与分布式。

• Serverless:MongoDB Atlas Serverless、Redis 7.2 Functions 无服务器。

• AI-Native:向量数据库(Milvus、Pinecone)与 Redis Vector、MySQL HeatWave AutoML。

• 多模融合:RedisJSON、MongoDB Relational Migrator、MySQL Document Store。

14. 总结

MySQL 把数据"存得稳",MongoDB 把数据"放得活",Redis 把数据"用得爽"。

三者不是替代,而是协同------让稳定的数据稳如磐石,灵活的数据随需而变,热点的数据快到极致。

掌握它们,就掌握了现代后端架构的"黄金三角"。

相关推荐
AAA修煤气灶刘哥11 小时前
别让Redis「歪脖子」!一次搞定数据倾斜与请求倾斜的捉妖记
redis·分布式·后端
AAA修煤气灶刘哥11 小时前
后端人速藏!数据库PD建模避坑指南
数据库·后端·mysql
程序新视界12 小时前
学习MySQL绕不开的两个基础概念:聚集索引与非聚集索引
mysql
RestCloud15 小时前
跨境数据传输:ETL如何处理时区与日期格式差异
mysql·api
RestCloud15 小时前
揭秘 CDC 技术:让数据库同步快人一步
数据库·api
得物技术18 小时前
MySQL单表为何别超2000万行?揭秘B+树与16KB页的生死博弈|得物技术
数据库·后端·mysql
xiaok19 小时前
mysql中怎么创建一个可控权限数据库账号密码给到开发者
mysql
christine-rr1 天前
linux常用命令(4)——压缩命令
linux·服务器·redis
可涵不会debug1 天前
【IoTDB】时序数据库选型指南:工业大数据场景下的技术突围
数据库·时序数据库