MongoDB 3.0 Release Notes

MongoDB 3.0支持WiredTiger存储引擎,提供可插拔存储引擎API,新增SCRAM-SHA-1认证机制,改进explain功能。mongodb

可插拔存储引擎API

容许第三方为MongoDB开发存储引擎数据库

WiredTiger存储引擎

首次引入WiredTiger存储引擎,目前支持两种存储引擎:json

  • MMAPv1,3.0版本以前的存储引擎,也是3.0默认的存储引擎
  • WiredTiger,仅可用于MongoDB 3.0 64位版本

用法

WiredTiger支持MonoDB的全部特征,复制集和分片集群的成员能够采用不一样的存储引擎,须要client采用最新的官方驱动api

配置

详见strorage.wiredTiger相关配置安全

并发及压缩

提供文档锁(document-level)和数据压缩,默认使用snappy库压缩集合数据,使用前缀压缩的方式压缩索引多线程

MMAPv1存储引擎

并发

支持集合锁(collection-level),老版本是数据库锁(database-level),粒度更细,支持更高并发并发

配置

为了支持多存储引擎,MMAPv1部分配置选项作了改变:app

文档分配策略

再也不支持动态校准的文档分配,同时不建议使用paddingFactor
MMAPv1默认的文档分配策略是2的N方,忽略usePowerOf2Sizes集合配置,因此未配置noPadding的集合均采用2的N方分配策略。若只有insert和in-place update,能够设置noPadding。
当磁盘空间不足时,写操做仅在须要磁盘空间分配失败时报错,不涉及磁盘分配的删除操做或原地更新操做都可正常执行。高并发

复制集

节点数量

支持最多50个节点,其中不超过7个投票节点,此特征须要注意所使用的驱动是否支持。
v3.0以前最多支持12个节点,其中不超过7个投票节点。工具

stepDown过程

复制集primary节点执行stepDown的过程作了如下改变:

  • 在stepDown以前,尝试终止长时间运行的用户操做,好比创建索引、写操做、map-reduce任务等,由于上述操做可能阻塞stepDown过程
  • 为了不发生rollback,primary节点将等待有候选资格的secondary节点追遇上primary节点的状态,保证两者状态彻底一致。v3.0以前secondary节点同步滞后于primary节点10秒以内便可以执行stepDown。
  • 容许用户设置secondaryCatchUpPeriodSecs参数,若是在指定时间内secondary节点没有遇上primary节点的状态,那么stepDown执行失败, 复制集不会选举新的primary

其余

  • 初始同步创建索引更加高效,使用线程(多线程?有待确认!)批量应用oplog
  • writeConcern w:majority表示投票节点的大多数,一个复制集最多有7个投票节点
  • 更加严格的限制条件,详见官方文档
  • 对于secondary节点上预先存在的集合,再也不自动创建缺失的_id索引

分片集群

作了如下改进:

  • 新增命令sh.removeTagRange(),让带标签的分片集群更容易管理,其做用相对于sh.addTagRange()
  • 提供更加可控的读选项行为。mongos将分析每一个操做的读选项,而后按需执行,客户端改变读选项会当即生效。
  • 提供一个新的writeConcern,用于配置chunk迁移操做,适用于balancer、moveChunk命令、cleanupOrplaned命令
  • 完善balancer操做可见性。sh.status()输出结果包含balancer的状态,详见官方文档

安全

作了如下改进:

  • 新SCRAM-SHA-1用户认证机制
  • 从本机访问的权限限制更加严格,详见官方文档

其余改进

新的查询自检系统(New Query Introspection System)

为查询计划和查询执行提供粒度更细的自检,改进查询结果的输出格式

日志

改进日志的可用性,根据组件、操做类型等进行分类,使得分析诊断更加方便,详见官方文档

工具

全部工具(好比mongodump、mongorestore等)用Go重写并利用一个单独的项目维护

  • mongodumpmongorestore增长新的命令行参数--numParallelCollections,支持多个集合并发导出/导入
  • mongodump新增命令行选项-excludeCollection--excludeCollectionsWithPrefix,用于排除目标集合
  • mongorestore支持来自标准输入的BSON数据,以前输入仅支持来自BSON文件的数据
  • mongostatmongotop可以使用--json命令行选项生成JSON格式的输出
  • mongoimport mongorestore mongofiles可以使用--writeConcern命令行选项配置写选项
  • mongofiles可以使用--prefix命令行选项配置GridFS前缀,自定义命名空间,所以一个数据库下可存放多个GridFS命名空间

索引

  • 后台索引创建再也不由于目标数据库或集合执行了dropDatabase drop dropIndexes操做而自动中断,上述命令在索引创建过程当中执行将报错 a background operation is currentlxiay running
  • 若是用createIndexes命令指定多个索引
    • 该命令只扫描集合一次
    • 若是有索引是前台创建,那么全部的索引都将前台创建
  • 对于分片集合,若是一个索引涵盖片键,那么该索引能够涵盖经过mongos执行的查询,关于Covering a Query,请参考官方文档

查询

  • 地理空间查询,增长查询范围
  • 聚合查询,新增操做符$dateToString用于将日期转换成字符串
  • 新增运算符$eq表示相等条件

参考资料

Release Notes for MongoDB 3.0

相关文章
相关标签/搜索