MongoDB 3.0 正式发布,支持多存储引擎

阅读数:4615 2015 年 3 月 6 日

话题:数据库语言 & 开发架构

MongoDB 3.0 正式发布,更新主要涉及存储引擎、备份集、分片集群和安全。

MongoDB 3.0 的默认存储引擎仍然是 MMAPv1,但除了增加集合级锁改进并发和更改部分设置支持多存储引擎外,它还更改了记录分配行为。该版本不再使用动态记录分配策略,并弃用了paddingFactor标识,改用2 的幂分配策略。因此,在 3.0 版本中,usePowerOf2Sizes 标识会被忽略,在不设置 noPadding 标识的情况下,所有集合都将使用该策略。不过,如果集合的工作负载只包含插入或就地更新,则应该禁用这一策略。

除了改进默认存储引擎外,MongoDB 3.0 还引入了可插拨的存储引擎 API,允许第三方为 MongoDB 开发存储引擎。另外,该版本还支持WiredTiger存储引擎,不过只限于 MongoDB 3.0 的 64 位版本。作为 MMAPv1 的一个替代方案,WiredTiger 支持 MongoDB 的所有特性。需要注意的是,切换到 WiredTiger 需要更改磁盘存储格式。关于存储引擎的切换指令,请查看MongoDB 3.0 升级文档。而且,WiredTiger 还需要最新版本的 MongoDB 官方驱动,有关驱动版本兼容信息请查看这里

MongoDB 3.0将备份集的成员数量增加到 50,不过投票成员的最大数量还是 7。目前,只有下列驱动支持大备份集:

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

而 PyMongo 3.0、Ruby Driver 2.0 和 Node.JS Driver 2.0 正在开发中。另外,备份集“主成员(primary member)”的降级行为也发生了变化。

在分片集群方面,MongoDB 3.0 进行了以下增强:

  • 增加 sh.removeTagRange(),作为对 sh.addTagRange() 的补充;
  • 提供一种预见性更强的“读取首选项(read preference)”,mongos实例执行读取操作时不再将连接固定到备份集的成员上,而是每次操作时都重新评估读取首选项;
  • 提供了一个新的 writeConcern 设置,用于配置块迁移操作的“写关注(write concern)”,也可以为balancermoveChunkcleanupOrphaned命令配置;
  • 提升 balancer 操作的可见性,sh.status()包含 balancer 的状态信息。

在安全方面,MongoDB 3.0 增加了一种新的用户身份验证机制SCRAM-SHA-1,并且增加了使用Localhost Exception机制访问 MongoDB 的限制(更多细节请查看这里)。

其它方面的改进包括:增加新的查询自省系统,改进查询输出格式;将部分日志消息分类到特定的组件或操作下,提高日志的可用性,并且可以为组件设置信息显示级别;用 Go 语言重写所有的 MongoDB 工具,并且每种工具都作为一个独立的项目维护;改进索引和增强查询。

同 MongoDB 3.0 一起,MongoDB Ops Manager 也正式发布,感兴趣的读者可以其发布说明


感谢郭蕾对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。