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 )”,也可以为 balancer 、 moveChunk 和 cleanupOrphaned 命令配置;
- 提升 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 )关注我们,并与我们的编辑和其他读者朋友交流。
评论