[译]MongoDB 3.0发布说明
原文来自: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日
- 修复了WiredTiger中插入和检查点竞争条件导致的记录丢失问题:SERVER-17506
- 解决了WiredTiger定容集合实现不当导致的服务器崩溃问题:SERVER-17345
- 解决初始化同步时导致重复的_id问题:SERVER-17487
- 修复了MMAPv1中日志锁和oplog锁死锁问题:SERVER-17416
- 所有3.0.1版本中的问题均已关闭
主要修改
插件化存储引擎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命令,或带noPadding的db.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为分片集群提供以下增强:
- 增加了一个新的sh.removeTagRange()帮助方法来改带标签的进分片集合的管理。新的sh.removeTagRange()方法是sh.addTagRange()方法的补充。
- 使读首选项的行为更可预料。当进行读操作时,mongos实例不再把连接固定在复制集的成员上。相反,mongos为每个操作重新评估读首选项,从而当读首选项变化时提供一个更可预料的读首选项行为(有点难懂,请先了解读首选项——译注)。
- 提供了一个新的writeConcern设置来配置数据片断迁移操作的写关注。你可以为平衡器以及moveChunk和cleanupOrphaned命令配置独立的写关注。
- 改进平衡器操作的透明性。sh.status()包含了平衡器的状态信息。查看sh.status()以得到了解更多细节。
扩展阅读:
安全性改进
MongoDB 3.0包含了以下安全性增强:
扩展阅读:
改进
新的查询自测系统
MongoDB 3.0包含了一个新的查询自测系统,可以提供更好的输出格式化和把自测信息更好地应用到查询计划和查询执行中。
欲知详情,请查看新的db.collection.explain()方法和新的explain命令,以及更新过的cursor.explain()方法。
要了解更多关于新输出格式的信息,请查看explain结果。
增强的日志
为了增加日志消息在诊断过程中的可用性,MongoDB分类了一些特定组件或操作的日志消息,提供了为这些组件设置日志明细等级的能力。欲知详情,请阅读日志消息。
MongoDB工具改进
所有MongoDB工具现在都由Go语言编写,作为独立项目维护。
- mongodump和mongorestore的并行新选项。你可以用--numParallelCollections选项为mongorestore指定并行恢复的集合数。
- 新选项-excludeCollection和--excludeCollectionsWithPrefix可以为mongodump指定排除的集合。
- mongorestore现在除了从文件中读取BSON数据外,还支持从标准输入流中接受BSON数据。
- mongostat和mongotop现在可以使用--json选项指定输出JSON格式。
- 为mongoimport,mongorestore,mongofiles添加了可配置的写关注,请使用--writeConcern选项。
- mongofiles现在允许使用--prefix选项配置GridFS前缀,因此现在可以使用自定义的命名空间在同一个数据库中存储多个GridFS命名空间。
扩展阅读:
索引
- 后台构建索引现在不会因为dropDatabase,drop,dropIndexes操作影响到相关数据库或集合而中断。dropDatabase,drop和dropIndexes命令现在和2.6版本中一样,会返回“后台操作正在进行”而失败。
- 如果你为createIndexes命令指定了多个索引,
- 命令只会扫描集合一次,并且
- 如果至少有一个集合需要在前台构建,该操作会在前台构建所有索引。
- 对于分版集合,现在如果索引包含了分片键,则可以覆盖针对mongos进行的查询。
扩展阅读:
查询加强
MongoDB 3.0包含了以下查询增强:
- 地球位置查询为$geoIntersects和$geoWithin查询添加了凸多边形支持。
发行版
多数非企业级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发布说明的更多相关文章
- (转)重磅出击:MongoDB 3.0正式版即将发布
MongoDB 今天宣布 3.0 正式版本即将发布.这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统. MongoDB 3.0 在性能和伸缩性方面都 ...
- 【转】MongoDB 3.0 正式版本即将发布,强力推荐
MongoDB 今天宣布3.0 正式版本即将发布.这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统. MongoDB 3.0 在性能和伸缩性方面都有 ...
- WiredTiger 4.1.0 发布,MongoDB 存储引擎
WiredTiger 4.1.0 发布了.WiredTiger 是一个开源的.高性能.可伸缩的 MongoDB 数据存储引擎. 下面是一些性能比较图表: 该版本暂未提供更新内容. 下载地址: Sour ...
- 译 .NET Core 3.0 发布
原文:<Announcing .NET Core 3.0> 宣布.NET Core 3.0 发布 很高兴宣布.NET Core 3.0的发布.它包括许多改进,包括添加Windows窗体和W ...
- CentOS7 安装MongoDB 3.0服务器
1,下载&安装 MongoDB 3.0 正式版本发布!这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统.MongoDB宣称,3.0新版本不只 ...
- 新年新技术:MongoDB 3.0
前一篇介绍了HTTP/2,这一篇简单介绍下3月3号发布的MongoDB 3.0. What’s new in MongoDB 3.0? 新的存储引擎WiredTiger MongoDB 3.0的存储引 ...
- MongoDB 3.0(1):CentOS7 安装MongoDB 3.0服务
目录(?)[-] 1下载安装 2MongoDB CRUD 1创建数据 2更新数据 3删除 4查询 5更多方法 3MongoDB可视化工具 4总结 本文原文连接: http://blog.csdn. ...
- CentOS7 安装MongoDB 3.0服务
1,下载&安装 MongoDB 3.0 正式版本发布!这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统.MongoDB宣称,3.0新版本不只 ...
- [译]MongoDb生产环境注意事项
译注: 本文是翻译MongoDB Manuel中的MongoDB Production Notes一节内容.这节内容重点关注生产环境中影响性能和可靠性的各种注意事项,值得正在部署MongoDB的工作者 ...
随机推荐
- js中表单提交后按钮变灰色的功能
表单提交后按钮变成灰色 http://www.111cn.net/wy/js-ajax/45299.htm
- java中整数类型(short int long)的存储方式
在java中的整数类型有四种,分别是 byte short int long 其中byte只有一个字节 0或1,在此不详细讲解. 其他的三种类型如下: 1.基本类型:short 二进制位数:16包装 ...
- mysql start server faild
可能没卸载干净...在安装mysql数据库时,如果重新安装,很容易遇见apply security setting error,即在配置mysql启动服务时,在启动apply security set ...
- js对象1--杂志
1.对象数组 var arr = [ ] //直接量创建 var arr = array() //通过函数创建 2. 变量与对象 var a = 12; //变量,不属于谁(默认 ...
- python学习笔记(SMTP邮件发送:带附件)
博主有段时间没有更新博客了 先整理一个之前整理过的SMTP邮件发送,这次是带附件的功能 #!/usr/bin/env python # -*- coding: utf_8 -*- from email ...
- TortoiseSVN期望文件系统格式在“1”到“6”之间;发现格式“7”
安装好Subversion和TortoiseSVN之后.检出和浏览版本库的时候一直报错 "期望文件系统格式在"1"到"6"之间;发现格式"7 ...
- 剖析Disruptor:为什么会这么快?(二)神奇的缓存行填充
原文链接:http://mechanitis.blogspot.com/2011/07/dissecting-disruptor-why-its-so-fast_22.html 需FQ 计算机入门 ...
- linux中django+apache配置
配置apahce通过mod_wsgi访问django代码,最终通过版本说明: Apache/2.0.63 (Unix) DAV/2 mod_wsgi/3.5 Python/2.6.6 下面讲述一波三折 ...
- 企业内网信息安全实践-记ChinaUnix技术交流
企业内网信息安全实践 随着棱镜计划的曝光,越来越多的信息安全的事件暴露在公众面前.对于企业来说,遭受到黑客攻击和破坏是家常便饭,只是您没有觉察到.自从09年就开始研究Ossim0.9版本,历经进10个 ...
- json 對象的序列化
var a={x:1,y:2} s=JSON.stringify(a); //s="{"x":1,"y":2}" p=JSON.parse( ...