告别 MongoDB 2.x 拥抱 3.x 版本的5大理由-阿里云开发者社区

开发者社区> 阿里云数据库> 正文
登录阅读全文

告别 MongoDB 2.x 拥抱 3.x 版本的5大理由

简介: 云数据库 MongoDB 版

基于飞天分布式系统和高性能存储,提供三节点副本集的高可用架构,容灾切换,故障迁移完全透明化。并提供专业的数据库在线扩容、备份回滚、性能优化等解决方案。

据不完全统计,目前还有很多同学在生产环境使用着 MongoDB 2.x 版本的服务,偶尔也会听到一些抱怨,但有些抱怨其实很没道理,因为抱怨的问题在最新版本的MongoDB里已经解决了,你缺的只是一次版本升级。

1. 更安全的数据库

  • 3.x 版本默认WriteConcern 为{w:1},2.x 较早的版本为 {w: 0}
  • 3.x 默认使用更安全的 SCRAM-SHA-1 算法鉴权,代替了2.x 版本默认的 MONGODB-CR
  • 3.x 支持加密引擎对存储的数据进行加密

2. 更高的服务性能

版本 mmapv1 wiredtiger
2.x DB级别锁 不支持
3.x 集合级别锁 文档级别锁

如果你使用2.x存在高并发时的性能问题,那么升级到3.x后,问题会得到极大的改善。

3. 更低的存储成本

版本 mmapv1 wiredtiger
2.x 不支持数据压缩 不支持
3.x 不支持数据压缩 支持snappy、zlib等压缩

很多用户从 2.x 升级到 3.x + wiredtiger 后,惊奇的发现,数据量居然变小了很多,比如原来100G的数据,升级后只有30G了,这是因为wiredtiger默认使用snappy压缩,存储成本通常只有mmapv1的10%-30%左右。

4. 更快的复制

  • 3.x 在增量同步数据时,拉取oplog和重放oplog完全流水线化,效率更高
  • 3.4 对全量同步做了改进

    • 在拷贝数据的时候,同时建立所有的索引(以前版本只有_id索引是在同步数据时建立的)
    • 拷贝数据的阶段,secondary 不断拉取新的 oplog,同步效率更高,同时避免了出现oplog不足无法同步的问题。

5. 更简单、高效的分片集群

  • MongoDB 3.2 开始,分片集群的Config Server 也是一个复制集,之前的版本则是多个独立的mongod节点,维护起来更简单。
  • MongoDB 3.4 开始,分片集群的迁移由Config server负责,并支持同时发起迁移任务,迁移效率更高。

3.x 版本里还增加了其他一些很给力的功能特性,比如

  • 部分索引,可以让索引占用的空间更小
  • 文档校验,灵活的文档模型下
  • Collation,支持本地化语言排序
  • 只读视图,让复杂的查询写起来的更简单
  • 更强大的aggregation支持
  • ......

升级步骤建议

因为2.x 到 3.x 改动很多,在升级的时候,必须先升级到3.0版本,步骤参考Upgrade MongoDB to 3.0,然后从3.0再往更高的版本升级。

虽然通过上述方式,MongoDB能做到不停机的从2.x升级到3.x,但强烈建议升级的时候,使用更保险的方式。

  1. 建立新的3.x复制集
  2. mongodump 2.x 复制集的数据
  3. mongorestore 到3.x复制集
  4. 等待3.x服务稳定,将2.x复制集下线

版本使用建议 (2016-12-23版)

版本 建议
2.x 强烈建议升级到3.2
3.0 建议升级到3.2
3.2 强烈建议使用
3.4 鼓励使用

基于飞天分布式系统和高性能存储,提供三节点副本集的高可用架构,容灾切换,故障迁移完全透明化。并提供专业的数据库在线扩容、备份回滚、性能优化等解决方案。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云数据库
使用钉钉扫一扫加入圈子
+ 订阅

帮用户承担一切数据库风险,给您何止是安心!

官方博客
链接