MongoDB 版本变迁
- 0.x 起步阶段 2008
- 1.x 支持复制集和分片集 2010
- 2.x 更丰富的数据库功能 2012
- 3.x WiredTiger 和周边生态环境 2014
- 4.x 分布式事务支持 2018
MongoDB vs 关系型数据库
MongoDB | 关系型数据库 | |
---|---|---|
数据模型 | 文档模型 | 关系模型 |
数据库类型 | OLTP | OLTP |
CRUD 操作 | MQL/SQL | SQL |
高可用 | 复制集 | 集群模式 |
横向扩展能力 | 通过原生分片完善支持 | 数据分片或者应用侵入式 |
索引支持 | B-树、全文索引、地理位置索引、多键(multikey)索引、TTL 索引 | B 树 |
开发难度 | 容易 | 困难 |
数据容量 | 没有理论上限 | 千万、亿 |
扩展方式 | 垂直扩展+水平扩展 | 垂直扩展 |
MongoDB 优势
面向开发者的易用,高效的数据库
1. 简单直观
以自然的方式来建模,以直观的方来与数据库交互。
对象的数据模型,可以作为存储的数据模型
Objects | —> | Datebase |
---|---|---|
Customer | -> | Customer |
Cart | -> | Cart |
Product | -> | Product |
Order | -> | Order |
2. 结构灵活
弹性模式从容响应需求的频繁变化
- 多形性
同一个集合中可以包含不同字段(类型)的文档对象
- 动态性
线上修改数据模式,修改时应用与数据库均无效下线
- 数据治理
支持使用JSON Schema来规范数据模式。在保证模式灵活动态的前提下,提高数据治理能力
3. 快速开发
做更多的事,写更少的代码
- JSON模型值快速特性
- 数据库引擎只需要在一个存储区读写
- 反范式、无关联的组织极大优化查询速度
- 程序API自然,开发快速
分布式方面的优势
原生的高可用
- Replica Set:2-50个成员
- 自恢复
- 多中心容灾能力
- 滚动服务-最小化服务终端
横线扩展能力
通过分片集群能力做到
- 需要的时候无缝扩展
- 应用全透明
- 多种数据分布策略
- 轻松支持TB-PB数量级
优势总结
- JSON结构和对象模型接近,开发代码量低
- JSON的动态模型意味着更容易响应新的业务需求
- 复制集提供99.999%高可用
- 分片架构支持海量数据和无缝扩容