原文来自:http://docs.mongodb.org/manual/release-notes/3.0/

2015年3月3日

MongoDB 3.0现已可供使用。关键新特性包括支持WiredTiger存储引擎,插件化存储引擎API,SCRAM-SHA-1身份验证机制,以及改进的explain功能。

MongoDB运维管理器(MongoDB Ops Manager),包括自动化,备份,监控现在可供使用。查看运维管理器运维管理器发布说明以获取更多内容。

小版本发布

3.0.1 - 2015年3月17日

主要修改

插件化存储引擎API

MongoDB 3.0引入了插件化存储引擎API,允许第三方为MongoDB实现存储引擎。

WiredTiger

MongoDB 3.0引入了WiredTiger存储引擎支持。在支持WiredTiger的前提下,MongoDB现在支持两个存储引擎:

  • MMAPv1,MongoDB之前版本中支持的存储引擎,它是MongoDB 3.0的默认存储引擎,以及:
  • WiredTiger,只在64位版本的MongoDB 3.0中支持。

WiredTiger使用

WiredTiger是MMAPv1存储引擎的一个可选替代项。WiredTiger支持所有MongoDB特性,包括所有服务器,数据库和集合统计方面的功能。但是切换到WiredTiger要求进行一次磁盘存储格式转换。要了解将存储引擎切换到WiredTiger的更多信息,请查看升级到MongoDB 3.0的对应章节。

MongoDB3.0 复制集和分片集群的成员可以使用不同的存储引擎。但是,随着负载变化它们的性能也会有不同的变化。欲知详情,请查看升级到MongoDB 3.0的对应章节。

WiredTiger存储引擎要求最新的官方MongoDB驱动。欲知更多信息,请查看WiredTiger与驱动版本兼容性

扩展阅读:

touch命令支持存储文档中的WiredTiger存储引擎章节

WiredTiger配置

要配置WiredTiger存储引擎的属性和行为,请查看storage.wiredTiger配置选项。你可以在命令行设置WiredTiger选项

扩展阅读:

存储文档中的WiredTiger存储引擎章节

WiredTiger并发和压缩

3.0 WiredTiger存储引擎提供了文档级别的锁和压缩。

默认情况下,WiredTiger使用snappy压缩库来压缩集合数据。WiredTiger默认对所有索引使用前缀压缩

扩展阅读:

生产环境备注中的WiredTiger章节

MMAPv1改进

MMAPv1并发改进

在3.0版本中,MMAPv1存储引擎加入了集合级别的锁。

MMAPv1配置变更

为了支持多存储引擎,一些MMAPv1的配置选项有些变化。请查看配置文件选项变化章节。

MMAPv1记录分配行为变更

MongoDB 3.0不再实现动态记录分配,空白因子也已标注为过期。在使用MMAPv1的实例中,集合默认的分配策略是2的次方分配,这已被证明在处理大尺寸文档时表现更优异。在3.0中,usePowerOf2Sizes选项被忽略,所以2的次方分配策略被应用在所有没有noPadding设置的集合上。

对于只有插入和更新(例如增长计数)工作负载的集合而言,可以选择禁用2的次方策略。要为某个集合禁用2的次方策略,使用noPadding标记的collMod命令,或带noPaddingdb.createCollection()方法。

警告:

如果工作负载包含删除或造成文档大小变更的更新,不要设置noPadding选项。欲知更多信息,请阅读无空白分配策略

当磁盘空间不足时,MongoDB 3.0不再在所有写操作上产生错误,而只针对无法分配要求的空间时产生错误。所以,当磁盘空间低时MongoDB现在仍然允许不变更大小的更新和删除操作。

扩展阅读:

动态记录分配

复制集

增加了复制集的最大成员数量

MongoDB 3.0中复制集可以有最多50个成员[1]。以下驱动支持大复制集:

  • C#(.NET)驱动1.10
  • Java驱动2.13
  • Python驱动(PyMongo)3.0+
  • Ruby驱动2.0+
  • Node.JS驱动2.0+

因为C,C++,Perl,PHP以及早先版本的Ruby,Python和Node.JS驱动是顺序地发现和监控复制集成员,这些驱动不适宜用在大复制集中。

PyMongo 3.0目前正在开发中。

[1]最大投票成员数仍然是7个

复制集降级行为改变

复制集主成员降级过程有了以下改变:

  • 降级前,replSetStepDown将会尝试结束阻塞主成员降级的长时间运行的用户任务,例如建立索引,写操作,或map/reduce工作。
  • 为了防止回滚,replSetStepDown将会在降级等待有资格的后备成员追上当前主成员的同步状态。之前主成员会在降级前在10秒内等待后备成员追上同步状态(例如后备成员同步延迟在10秒内)。
  • replSetStepDown现在允许用户指定secondaryCatchUpPeriodSecs参数来设置主成员在降级前应该等待后备成员多长时间。

其他复制集可选变更

  • 初始同步现在使用多线程更有效率地为集合构建索引和应用oplog记录。
  • 定义w:"majority"写关注现在的意义变为指大多数有投票权的结点。
  • 复制集配置现在有更强的约束。欲知详情,请阅读复制集配置验证章节。
  • 对后备成员上已经存在的集合,MongoDB 3.0不再自动构建丢失的_id索引。

扩展阅读:

MongoDB 3.0 兼容性变更中的复制集变更

分片集群

MongoDB 3.0为分片集群提供以下增强:

  • 增加了一个新的sh.removeTagRange()帮助方法来改带标签的进分片集合的管理。新的sh.removeTagRange()方法是sh.addTagRange()方法的补充。
  • 使读首选项的行为更可预料。当进行读操作时,mongos实例不再把连接固定在复制集的成员上。相反,mongos为每个操作重新评估读首选项,从而当读首选项变化时提供一个更可预料的读首选项行为(有点难懂,请先了解读首选项——译注)。
  • 提供了一个新的writeConcern设置来配置数据片断迁移操作的写关注。你可以为平衡器以及moveChunkcleanupOrphaned命令配置独立的写关注。
  • 改进平衡器操作的透明性。sh.status()包含了平衡器的状态信息。查看sh.status()以得到了解更多细节。

扩展阅读:

MongoDB 3.0兼容性变更中的分片集群设定

安全性改进

MongoDB 3.0包含了以下安全性增强:

  • 添加新的SCRAM-SHA-1用户认证机制。
  • 当使用本地例外访问MongoDB时增加了更多的约束。欲知详情,请查看本地例外变更

扩展阅读:

安全变更

改进

新的查询自测系统

MongoDB 3.0包含了一个新的查询自测系统,可以提供更好的输出格式化和把自测信息更好地应用到查询计划和查询执行中。

欲知详情,请查看新的db.collection.explain()方法和新的explain命令,以及更新过的cursor.explain()方法。

要了解更多关于新输出格式的信息,请查看explain结果

增强的日志

为了增加日志消息在诊断过程中的可用性,MongoDB分类了一些特定组件或操作的日志消息,提供了为这些组件设置日志明细等级的能力。欲知详情,请阅读日志消息

MongoDB工具改进

所有MongoDB工具现在都由Go语言编写,作为独立项目维护。

  • mongodumpmongorestore的并行新选项。你可以用--numParallelCollections选项为mongorestore指定并行恢复的集合数。
  • 新选项-excludeCollection和--excludeCollectionsWithPrefix可以为mongodump指定排除的集合。
  • mongorestore现在除了从文件中读取BSON数据外,还支持从标准输入流中接受BSON数据。
  • mongostatmongotop现在可以使用--json选项指定输出JSON格式。
  • mongoimportmongorestoremongofiles添加了可配置的写关注,请使用--writeConcern选项。
  • mongofiles现在允许使用--prefix选项配置GridFS前缀,因此现在可以使用自定义的命名空间在同一个数据库中存储多个GridFS命名空间。

扩展阅读:

MongoDB工具改进

索引

  • 后台构建索引现在不会因为dropDatabasedropdropIndexes操作影响到相关数据库或集合而中断。dropDatabasedropdropIndexes命令现在和2.6版本中一样,会返回“后台操作正在进行”而失败。
  • 如果你为createIndexes命令指定了多个索引,
    • 命令只会扫描集合一次,并且
    • 如果至少有一个集合需要在前台构建,该操作会在前台构建所有索引。
    • 对于分版集合,现在如果索引包含了分片键,则可以覆盖针对mongos进行的查询。

扩展阅读:

MongoDB 3.0兼容性改进中的索引章节

查询加强

MongoDB 3.0包含了以下查询增强:

发行版

多数非企业级MongoDB发行版现在包含了SSL支持。之前只有MongoDB企业版发行版自带SSL支持;而对于非企业版发行版,你只能使用--ssl标识在本地编译MongoDB(例如scons --ssl)。

MongoDB企业版特性

审计

MongoDB企业版中的审计功能可以按审计消息中的任意字段过滤,包括在param文档中的的字段。这个加强,加上auditAuthorizationSuccess参数,使审计可能过滤CRUD操作。然而,相对于只对认证失败时开启auditAuthorizationSuccess,对所有授权成功的审计开启会降低性能。

附加信息

影响兼容性的改进

在3.0中的一些修改可能影响兼容性,可能需要用户关注。需要阅读影响兼容性的所有修改,请参考MongoDB 3.0兼容性改进

升级过程

查看升级到MongoDB 3.0以获取完整的升级说明。

下载

要下载MongoDB 3.0请到下载页面

额外资源

[译]MongoDB 3.0发布说明的更多相关文章

  1. (转)重磅出击:MongoDB 3.0正式版即将发布

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

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

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

  3. WiredTiger 4.1.0 发布,MongoDB 存储引擎

    WiredTiger 4.1.0 发布了.WiredTiger 是一个开源的.高性能.可伸缩的 MongoDB 数据存储引擎. 下面是一些性能比较图表: 该版本暂未提供更新内容. 下载地址: Sour ...

  4. 译 .NET Core 3.0 发布

    原文:<Announcing .NET Core 3.0> 宣布.NET Core 3.0 发布 很高兴宣布.NET Core 3.0的发布.它包括许多改进,包括添加Windows窗体和W ...

  5. CentOS7 安装MongoDB 3.0服务器

    1,下载&安装 MongoDB 3.0 正式版本发布!这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统.MongoDB宣称,3.0新版本不只 ...

  6. 新年新技术:MongoDB 3.0

    前一篇介绍了HTTP/2,这一篇简单介绍下3月3号发布的MongoDB 3.0. What’s new in MongoDB 3.0? 新的存储引擎WiredTiger MongoDB 3.0的存储引 ...

  7. MongoDB 3.0(1):CentOS7 安装MongoDB 3.0服务

    目录(?)[-] 1下载安装 2MongoDB CRUD 1创建数据 2更新数据 3删除 4查询 5更多方法 3MongoDB可视化工具 4总结   本文原文连接: http://blog.csdn. ...

  8. CentOS7 安装MongoDB 3.0服务

    1,下载&安装 MongoDB 3.0 正式版本发布!这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统.MongoDB宣称,3.0新版本不只 ...

  9. [译]MongoDb生产环境注意事项

    译注: 本文是翻译MongoDB Manuel中的MongoDB Production Notes一节内容.这节内容重点关注生产环境中影响性能和可靠性的各种注意事项,值得正在部署MongoDB的工作者 ...

随机推荐

  1. java中的xml与实体类之间的映射

    实体类: package xml; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class User ...

  2. Ext TreeGrid提交修改过的数据

    本打算将整个treestore的数据提交到服务器,但找来找去没有找到好的方法,在翻api的时候发现了getUpdatedRecords()方法,拿来一试,试出此方法可以拿到被修改过的record so ...

  3. 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~ 线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析

    看两个例子,一个是在一个进程里设置另外一个进程中控件的属性.另外一个是在一个进程里获取另外一个进程中控件的属性. 第一个例子 最近,在做一个使用线程控制下载文件的小程序(使用进度条控件显示下载进度)时 ...

  4. 十步让你调试mvc源码

    1.下载 mvc 当前版本的源码,地址:http://aspnetwebstack.codeplex.com/SourceControl/latest 2.编译源码,参考:http://www.cnb ...

  5. Linux下串口ttyS2,ttyS3不能用的问题解决办法

    PC104,Xlinux下,突然发现串口3,4不能用... 以为是硬件的问题,换成wince后,3,4工作正常,排除电路问题 在linux下查看dmesg: serial8250: ttyS0 at ...

  6. tornado框架之路二

    二.路由系统 路由系统其实就是 url 和 类 的对应关系,这里不同于其他框架,其他很多框架均是 url 对应 函数,Tornado中每个url对应的是一个类. #!/usr/bin/env pyth ...

  7. c# 图片路径转byte[] 插到数据库BLOB 图片长宽自定义

    //根据图片路径读取图片并且转byte[]   类型 FileStream fs = new FileStream(filePath, FileMode.Open); byte[] byData = ...

  8. Hibernate 常见异常

    Hibernate 常见异常net.sf.hibernate.MappingException        当出现net.sf.hibernate.MappingException: Error r ...

  9. 在使用 AjaxFileUpload 上传文件时,在项目发布到 iis 后,图片不能预览

    在使用 AjaxFileUpload  上传文件时,图片已经上传成功了,在站点没有发布时,可以预览,可是在项目发布到 iis 后,图片就不能预览,在网上找了很多的方案也没解决,最后的解决方案如下: 1 ...

  10. org.springframework.beans.factory.BeanDefinitionStoreException

    org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'd ...