前言
Mysql和MongoDB的比较。
一、数据模型的本质差别
| 维度 | MySQL | MongoDB |
|---|---|---|
| 结构范式 | 严格的表结构(行与列) | 无模式(Schema-less)的文档存储 |
| 数据表示 | 扁平化二维表 | 嵌套JSON文档(支持数组、子对象) |
| 典型案例 | 银行交易记录 | 社交媒体用户画像 |
深层解读:
MySQL 如同 Excel 表格 —— 每行数据必须遵循预定义的列类型;而 MongoDB 更像文件夹里的自由格式文本文件,每个文档可以拥有完全不同的字段结构。这种差异使得:
MySQL 适合财务系统等需要原子性和强一致性的场景。
MongoDB 能轻松应对物联网设备上报的异构数据(如有的传感器带温度字段,有的带振动频率)。
二、性能与扩展性
1.读写模式
- MySQL
优势:复杂OIN查询(如跨10个表的关联分析)效率极高。
瓶颈:单机垂直扩展有限,分库分表成本高。 - MongoDB:
优势:水平扩展(Sharding)近乎线性,适合每秒百万级写入(如游戏玩家行为日志)。
特性:原生聚合管道(Aggregation Pipeline)可替代部分JOIN操作。
2.索引策略
| 索引类型 | MySQL示例 | MongoDB示例 |
|---|---|---|
| 基础索引 | B+树索引 | B树索引 |
| 特殊索引 | 全文索引(FULLTEXT) | 地理空间索引(2dsphere) |
| 多键索引 | 不支持 | 支持数字字段索引 |
场景化选择:
·需要多维度地理查询(如“查找5公里内的餐厅”)一MongoDB的geolear操作碾压MySQL。
需要ACID事务的库存管理系统一MySQL的BEGIN TRANISACTION 不可替代。
开发效率
敏捷开发友好性
- MongoDB 的灵活优势
新增字段无需ALTER TABLE停机(如电商平台突然需要记录用户 “头发颜色”)。
嵌套文档直接映射编程语言对象(如 Python 字典 / JAVA POJO)。 - MySQL 的严谨代价
修改表结构可能触发全表锁,百万级数据表的 DDL 操作需谨慎。
JSON 支持深度
# MySQL8+ 的 JSON 查询(需路径表达式)
SELECT JSON_EXTRACT(user_profile, '$.hobbies[0]') FROM users;
# MongoDB 的等效查询(自然语法)
db.users.find({}, {"hobbies.0": 1});
现代技术融合趋势
- 混合架构案例:
用MySQL存储订单核心数据(强一致性)。
用MongoDB存储商品评论(半结构化+高并发写入)。 - NewSQL的崛起
PostgreSQL通过JSONB类型+水平扩展插件(如Citus)试图兼顾两者优势,但尚未完全取代专业场景需求。
决策树
A[需要严格事务?]-->|是|B(ySQL)A-->|否|C{数据结构是否多变?}
C-->||D(Mongo0B)
C-->|否|E是否需要水平扩展?
E-->是D
E-->|否|B
MongoDB相关总结
| 维度 | 内容 |
|---|---|
| 什么是 MongoDB | 一个以 JSON 为数据模型的文档数据库 |
| 为什么叫文档数据库? | 文档来自于 “JSON Document”,并非我们一般理解的 PDF,WORD 文档 |
| 谁开发 MongoDB? | 上市公司 MongoDB Inc.,总部位于美国纽约 |
| 主要用途 | 应用数据库,类似于 Oracle, MySQL海量数据处理,数据平台 |
| 主要特点 | 建模为可选 JSON 数据模型比较适合开发者 横向扩展可以支撑很大数据量和并发 |
| MongoDB 是免费的吗? | MongoDB 有两个发布版本:社区版和企业版。 社区版是基于 SSPL,一种和 AGPL 基本类似的开源协议 企业版是基于商业协议,需付费使用 |
- 下载
官网:https://www.mongodb.com/

1130

被折叠的 条评论
为什么被折叠?



