《三驾马车: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 把数据"用得爽"。

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

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

相关推荐
他们叫我技术总监5 小时前
Oracle数据库常见问题实战:从连接错误到自动清理空闲会话
数据库·oracle
摇滚侠5 小时前
【IT老齐456】Spring Boot优雅开发多线程应用,笔记01
spring boot·redis·笔记
菲兹园长7 小时前
MySql(SQL)
数据库·sql·mysql
一只小bit7 小时前
MySQL表的操作:创建—修改—删除流程解析
数据库·mysql·oracle
做运维的阿瑞7 小时前
PostgreSQL 从入门到精通:Windows 环境下安装与使用指南
数据库·windows·postgresql
学编程的小鬼7 小时前
MySQL的快速入门
数据库·mysql
_Power_Y7 小时前
MySql复习及面试题学习
数据库·学习·mysql
学习编程的Kitty7 小时前
MySQL——数据类型和表的操作
数据库·mysql
程序新视界8 小时前
MySQL中,日期、时间与时间戳三种数据类型的区别
数据库·后端·mysql
lang201509288 小时前
MySQL 8.0性能优化终极指南
数据库·mysql·性能优化