更多关于MongoDB的技术分享请关注我的公众号:mongodb_side
欢迎大家可以给我留言。
原创文章,对官方Release Notes做了扩展描述
作者 shingo(6623662005@163.com)
拿到投资之后的10Gen明显加快脚步,距离上一个大版本才过去半年多,MongoDB2.8第二个候选版就即将发出了,这里对候选版给出的新特性做个汇总。
存储引擎、锁、压缩
MongoDB2.8会支持两个存储引擎MMAPV1和WiredTiger.
MMAPV1是MongoDB之前所有版本使用的存储引擎,也是唯一的存储引擎,新的2.8版本仍将它设为默认的存储引擎。有个好消息是,MMAPV1支持collection级别的锁。
WiredTiger是2.8新增的存储引擎,非常牛X的是,它支持document级别的锁,默认情况下WiredTiger引擎对所有collection是压缩存储的,依赖Snappy库。
WiredTiger支持所有MongoDB的特性,在同一个复制集环境或分片环境中可以与MMAPV1协同工作。要开启WiredTiger引擎,按如下方式启动mongod进程
mongod --storageEngine wiredtiger |
有一点要注意的是:WiredTiger引擎不能和--directoryperdb 兼容。
WiredTiger引擎本身有很多可配置的参数,这些参数可以在启动mongod进程时显示的指定,按照下边的方式:
--wiredTigerEngineConfig "<option>=<setting>,<option>=<setting>" |
针对所有新创建的collection生效的配置方式:
--wiredTigerIndexConfig "<option>=<setting>,<option>=<setting>" |
针对新建索引的配置
--wiredTigerIndexConfig "<option>=<setting>,<option>=<setting>" |
也可以在使用db.createCollection()方法时为collection单独配置wiredTiger参数
db.createCollection("<collectionName>", {storageEngine: { wiredtiger: {configString:"<option>=<setting>,<option>=<setting>"}}}); |
增加复制集成员数量
2.8版的复制集最大可以支持50个成员,之前的版本不能超过12个成员,最多只能有7个可投票成员。
相关信息可以参见我之前的文章《MongoDB的限制和门槛标准》。
安全改进
增加SCRAM-SHA-1认证机制,这是一个混淆认证机制,它满足部署级别的challenge-response认证机制的需求。
目前MongoDB默认的认证机制是MONGODB-CR
2.8之前支持的认证机制如下
MONGODB-CR | MongoDB实现的challenge-response认证机制 |
MONGODB-X509 | MongoDB SSL证书认证 |
PLAIN | plain认证方式,只能在企业版使用 |
GSSAPI | gss-api,只能在企业版使用 |
如果要明确指定认证机制,可在启动mongod时声明
mongod --setParameter authenticationMechanisms=PLAIN--auth |
安全方面,还针对localhost exception 做了修改。
在这之前,为一个全新部署的MongoDB环境创建用户时,第一个用户必须在admin库中创建,这样它有创建其它用户的权限,所有从localhost进入的连接对当前实例有所有访问权限。
2.8版中,通过localhost exception访问MongoDB将会是受限的。
查询引擎引进
explain()方法将会显示更多信息,MongoDB的所有查询都可以通过explain()来获取信息,新版本会增加queryPlanner、executionStats、serverInfo等字段来描述查询的执行情况以及负载信息。
对于分片collection,也能做到索引覆盖查询了。
升级到2.8
官方提供了还算详细的升级方法,和以往的升级方法差不多,主要是复制集和Shard的升级。
复制集比较好说,一个节点一个节点升;Shard会复杂一些,因为meta信息存储在config进程中。
具体的升级过程请大家观看官方文档。