📌 存储设计选型指南
🔹 1. MongoDB
-
特点
-
文档型存储(BSON/JSON 格式)
-
Schema 灵活,可存嵌套对象、数组
-
原生支持多键索引
-
天然支持水平分片(Sharding),扩展性强
-
-
优势场景
✅ 内容管理(CMS、博客、视频/评论系统)
✅ 日志/事件存储(IoT、监控、行为日志)
✅ 推荐系统(标签、分类、多维度查询)
✅ 快速迭代产品(字段随时能改,不用改表) -
不适合
❌ 复杂事务(跨集合、多文档高频更新)
❌ 强一致性要求高的场景(如银行转账)
🔹 2. MySQL
-
特点
-
关系型数据库,强 Schema
-
事务成熟(ACID)
-
JOIN 强大,适合多表关系查询
-
社区和生态非常完善
-
-
优势场景
✅ 金融/支付(强事务、强一致性)
✅ 电商订单/库存系统(复杂关系)
✅ ERP/CRM(高度结构化业务数据)
✅ 中小型系统核心数据库 -
不适合
❌ 结构经常变动的业务(加字段麻烦)
❌ 高并发写入日志类场景
🔹 3. PostgreSQL
-
特点
-
关系型数据库,但比 MySQL 功能更强
-
原生支持 JSON/JSONB → 半结构化数据存储也不错
-
支持全文搜索、地理位置查询(GIS)
-
扩展性强(插件丰富)
-
-
优势场景
✅ 金融级业务(比 MySQL 更严格的事务和一致性)
✅ GIS 应用(地图、LBS 系统)
✅ 需要关系型 + 文档型混合的系统
✅ 需要复杂查询、窗口函数、大数据分析的系统 -
不适合
❌ 社区资料比 MySQL 少,上手门槛略高
❌ 复杂分布式架构支持没有 MongoDB/ES 灵活
🔹 4. Elasticsearch
-
特点
-
面向搜索和分析的引擎
-
倒排索引(全文搜索极快)
-
支持聚合分析(统计报表、BI)
-
近实时查询(适合日志、监控)
-
-
优势场景
✅ 全文搜索(搜索引擎、智能推荐)
✅ 日志分析(ELK 堆栈:Elasticsearch + Logstash + Kibana)
✅ 实时监控、指标统计(APM、运维监控)
✅ 电商搜索(按关键字 + 分类 + 排序) -
不适合
❌ 事务性业务(没有事务概念)
❌ 高并发写入但要求强一致性场景
📊 选型对照表
特点 | MongoDB | MySQL | PostgreSQL | Elasticsearch |
---|---|---|---|---|
数据模型 | 文档型 (JSON) | 关系型 | 关系型 + JSONB | 文档型 (倒排索引) |
Schema | 灵活 | 严格 | 严格/JSONB 混合 | 灵活 |
事务支持 | 有(性能一般) | 强 | 更强 | 无 |
扩展性 | 水平分片强 | 读写分离、分库分表 | 一般 | 分布式天然支持 |
查询优势 | 嵌套文档、数组查询 | JOIN、事务 | 复杂 SQL、分析 | 全文搜索、聚合分析 |
典型场景 | CMS、日志、推荐 | 金融、电商、ERP | GIS、混合数据分析 | 搜索、日志、监控 |
✅ 总结建议
-
业务系统核心数据库 → MySQL(稳定、事务强)
-
结构化 + 分析 → PostgreSQL(复杂查询 + JSONB)
-
非结构化/快速迭代 → MongoDB(灵活存储 + 高扩展)
-
搜索/日志/监控 → Elasticsearch(全文检索 + 实时分析)