据不完全统计,目前还有很多同学在生产环境使用着 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 鼓励使用

作者简介

张友东,阿里巴巴技术专家,主要关注分布式存储、Nosql数据库等技术领域,先后参与TFS(淘宝分布式文件系统)Redis云数据库等项目,目前主要从事MongoDB云数据库的研发工作,致力于让开发者用上最好的MongoDB云服务。

告别 MongoDB 2.x 拥抱 3.x 版本的5大理由(转)的更多相关文章

  1. 【RMAN】RMAN跨版本恢复(下)--大版本异机恢复

    [RMAN]RMAN跨版本恢复(下)--大版本异机恢复 BLOG文档结构图 ORACLE_SID=ORA1024G 关于10g的跨小版本恢复参考:http://blog.chinaunix.net/u ...

  2. 【RTOS】基于V7开发板的最新版uCOS-III V3.07.03程序模板,含MDK和IAR,支持uC/Probe,与之前版本变化较大

    模板下载: 链接:https://pan.baidu.com/s/1_4z_Lg51jMT87RrRM6Qs3g   提取码:2gns 对MDK的AC6也做了支持:https://www.cnblog ...

  3. 使用MongoDB.NET 2.2.4驱动版本对 Mongodb3.3数据库中GridFS增删改查

    Program.cs代码如下: internal class Program { private static void Main(string[] args) { GridFSHelper help ...

  4. MongoDB GridFS——本质上是将一个文件分割为大小为256KB的chunks 每个chunk里会放md5标识 取文件的时候会将这些chunks合并为一个整体返回

    MongoDB GridFS GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片.音频.视频等). GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中 ...

  5. MySQL 5.7开始支持JSON,那还有必要使用MongoDB存JSON吗?请列出你的观点/理由。

    一.观点A:支持MySQL存储JSON MongoDB不支持事务,而MySQL支持事务 MySQL相对MongoDB而言,MySQL的稳定性要优于MongoDB MySQL支持多种存储引擎 二.观点B ...

  6. HBase版本进化史及大版本特性

    HBase 2.0 新特性介绍 2018年4月30日HBase发布了2.0的Release版本.HBase的2.0版本承载了太多的Features,共包含4551个Issues,可以说是迄今最大的一个 ...

  7. CAP 2.3版本发布,支持 MongoDB

    前言 经过2个月的调整及测试,CAP 2.3 版本终于发布了,这个版本最大的特性就是对于 MongoDB 的支持,感谢博客园团队的keke同学对于 MongoDB 支持所提供的 PR,相信随着博客园的 ...

  8. 【转】MongoDB 3.0 正式版本即将发布,强力推荐

    MongoDB 今天宣布3.0 正式版本即将发布.这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统. MongoDB 3.0 在性能和伸缩性方面都有 ...

  9. MongoDB.Driver 2.4以上版本 在.NET中的基本操作

    MongoDB.Driver是操作mongo数据库的驱动,最近2.0以下版本已经从GitHub和Nuget中移除了,也就是说.NET Framework4.0不再能从官方获取到MongoDB的驱动了, ...

随机推荐

  1. Python知识点入门笔记——Python文件操作、异常处理及random模块使用

    文件是存储在外部介质的数据集合,通常可以长久保存,前提是介质不易损坏 Python的绝对路径写法: E:\\编程学习资料\\爬取某社区高清无码大图.py E:/编程学习资料/爬取某社区高清无码大图.p ...

  2. Win7系统桌面便签怎么添加?

    参考:http://jingyan.baidu.com/article/ab69b270c207432ca7189f99.html Win7系统桌面便签怎么添加?有时候工作.学习忙起来就会忘记要办的事 ...

  3. JS 对于回调函数的理解,和常见的使用场景应用,使用注意点

      很经常我们会遇到这样一种情况: 例如,你需要和其他人合作,别人提供数据,而你不需要关注别人获取或者构建数据的方式方法. 你只要对这个拿到的数据进行操作. 这样,就相当于我们提供一个外在的函数,别人 ...

  4. laravel5.2总结--软删除

    当模型被软删除时,它们并不会真的从数据库中被移除.而是会在模型上设置一个 deleted_at 属性并将其添加到数据库.如果对应模型被软删除,则deleted_at字段的值为删除时间,否则该值为空. ...

  5. sqlserver2008链接服务器中执行存储过程配置过程

    参考:http://www.cnblogs.com/ycsfwhh/archive/2010/12/15/1906507.html 1.双方启动MSDTC服务MSDTC(分布式交易协调器),协调跨多个 ...

  6. [oldboy-django][2深入django]django模板使用函数

    1 模板引入子html--include 模板引擎 - 母版 - include,导入公共的html a. 用法:{% include "pub.html" %}, pub.htm ...

  7. grep_awk_sed文本处理

    小技巧 1.删除0字节文件find -type f -size 0 -exec rm -rf {} \; 2.查看进程按内存从大到小排列ps -e -o “%C : %p : %z : %a”|sor ...

  8. Mysql实战之数据备份

    author:JevonWei 版权声明:原创作品 blog:http://119.23.52.191/ --- 数据备份和恢复 mysqldump 冷备份单库(不会创建新库,需要手动创建并指定导入数 ...

  9. 【bzoj1316】树上的询问 树的点分治+STL-set

    题目描述 一棵n个点的带权有根树,有p个询问,每次询问树中是否存在一条长度为Len的路径,如果是,输出Yes否输出No. 输入 第一行两个整数n, p分别表示点的个数和询问的个数. 接下来n-1行每行 ...

  10. 【bzoj4966】总统选举 随机化+线段树

    题目描述 黑恶势力的反攻计划被小C成功摧毁,黑恶势力只好投降.秋之国的人民解放了,举国欢庆.此时,原秋之国总统因没能守护好国土,申请辞职,并请秋之国人民的大救星小C钦定下一任.作为一名民主人士,小C决 ...