• [译]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日

    主要修改

    插件化存储引擎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请到下载页面

    额外资源

  • 相关阅读:
    关于分布式事务、两阶段提交协议、三阶提交协议(转)
    高并发下产生大量,随机,唯一的字符串,并输出到文件中
    地理空间距离计算优化_附近的人(转自美团技术博客)
    Web Deploy发布网站错误 检查授权和委派设置
    mssql查询所有上下级
    mssql语句递归查找所有下级
    挖洞技巧:任意账号密码重置
    MAC卸载java 12.0.2
    mac  安装brew时报错的问题及解决方式
    致远getshell
  • 原文地址:https://www.cnblogs.com/yaoxing/p/mongodb30-release-notes.html
Copyright © 2020-2023  润新知