MongoDB
你可能会说
产品经理天天改字段,我是不是该把 MySQL 换成 MongoDB?
把一整份文档存起来的数据库一条记录就是一个 JSON 风格的文档,字段可以不一样,不用先建表改表。适合结构经常变、总是整份读写的场景;跨多个文档的事务和复杂统计是它的弱项。
也常被叫作Mongo文档数据库
什么时候选它
- 结构不固定、经常加字段的内容:商品详情、表单、配置
- 整份读写的文档型数据:文章、埋点事件、会话记录
- 快速原型:不用先设计表结构
- 写入量需要水平扩展、数据天然能按分片键分布
什么时候别选
- 多表强关联、跨集合事务密集的业务(订单、账务)
- 复杂聚合报表、需要严格约束和 JOIN 的系统
- 团队不熟索引和分片设计,容易写成全表扫描
容易混在一起 · 怎么分
MongoDB≠MySQL
Mongo 存文档、结构灵活、按分片扩展;MySQL 存表、约束强、JOIN 和事务成熟。
MongoDB≠文件存储
文档仍然可以建索引、按字段查询、做聚合,不是把 JSON 直接扔进硬盘。
MongoDB 事务≠关系库事务
它支持多文档事务,但代价和适用面与关系库不同,别默认它「什么都能事务」。
Q面试会问什么
- 问:MongoDB 适合什么?
答:结构灵活、整份文档读写、需要水平扩展的场景;强关联和复杂报表不适合。 - 问:查询为什么慢?
答:常见原因是没建对索引、文档太大、分片键选错导致广播查询。 - 问:它和关系库怎么选?
答:先看数据是否天然是一份文档、是否经常整份读写;要跨表事务和强约束就留在关系库。
延伸阅读 · 权威出处