[译]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的工作者 ...
随机推荐
- python 装饰器和 functools 模块
转自:http://blog.jkey.lu/2013/03/15/python-decorator-and-functools-module/ 什么是装饰器? 在 python 语言里第一次看到装饰 ...
- ArcGIS 通视分析工作原理
通过通视分析工具可根据在 3D 空间中相对于某表面或多面体要素类提供的障碍的位置,计算各线要素的第一个和最后一个折点之间的通视性.前一个折点定义为观测点,后一个折点为观测目标.沿着这些点之间的视线确定 ...
- 文件处理函数fopen、fread、fseek、fclose的使用实例介绍
FILE文件流用于对文件的快速操作,主要的操作函数有fopen.fseek.fread.fclose,在对文件结构比较清楚时使用这几个函数会比较快捷的得到文件中具体位置的数据,提取对我们有用的信息,满 ...
- Android 定时器TimerTask 简单使用
Android平台中需要反复按周期执行方法可以使用Java上自带的TimerTask类,TimerTask相对于Thread来说对于资源 消耗的更低,除了使用Android自带的AlarmManage ...
- android 操作sqlite的一点小技巧
1.android 在sqlite插入数据时,是非常耗时的操作,原因是sqlite缺省会为每个插入操作开启一个事务,当数量变多的时候,自然时间就变得很慢,这时候可以考虑在插入等操作时先开启一个事务,再 ...
- 关于显示gif的一些方法与讨论
http://www.2cto.com/kf/201404/292468.html http://www.eoeandroid.com/forum.php?mod=viewthread&tid ...
- 【转】appium_python_API文档
1.contextscontexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的控 ...
- Appium移动自动化测试(四)--先跑起来再说(第一个测试用例-手机YY)
说明 本文将详细说明如何使用Appnium完成:打开手机YY欢迎页面->按住屏幕向左滑动4次->按下"立即体验"按钮->按下"直播"按钮,的整 ...
- 最小二乘拟合(转)good
在物理实验中经常要观测两个有函数关系的物理量.根据两个量的许多组观测数据来确定它们的函数曲线,这就是实验数据处理中的曲线拟合问题.这类问题通常有两种情况:一种是两个观测量x与y之间的函数形式已知,但一 ...
- Flash图表控件FusionCharts如何自定义图表上的垂直线
什么是垂直分割线 垂直(或条形图中的水平)分隔线是用来帮助用户分隔数据块的.可以被放置在任何两个数据点,即使是不规则的间隔也可以. <chart caption='Monthly Revenue ...