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%高可用
  • 分片架构支持海量数据和无缝扩容