MongoDB 3.0支持WiredTiger存储引擎,提供可插拔存储引擎API,新增SCRAM-SHA-1认证机制,改进explain
功能。
可插拔存储引擎API
允许第三方为MongoDB开发存储引擎
WiredTiger存储引擎
首次引入WiredTiger存储引擎,目前支持两种存储引擎:
- MMAPv1,3.0版本之前的存储引擎,也是3.0默认的存储引擎
- WiredTiger,仅可用于MongoDB 3.0 64位版本
用法
WiredTiger支持MonoDB的所有特征,复制集和分片集群的成员可以采用不同的存储引擎,需要client采用最新的官方驱动
配置
详见strorage.wiredTiger
相关配置
并发及压缩
提供文档锁(document-level)和数据压缩,默认使用snappy库压缩集合数据,使用前缀压缩的方式压缩索引
MMAPv1存储引擎
并发
支持集合锁(collection-level),老版本是数据库锁(database-level),粒度更细,支持更高并发
配置
为了支持多存储引擎,MMAPv1部分配置选项做了改变:
文档分配策略
不再支持动态校准的文档分配,同时不建议使用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重写并利用一个单独的项目维护
-
mongodump
和mongorestore
增加新的命令行参数--numParallelCollections
,支持多个集合并发导出/导入 -
mongodump
新增命令行选项-excludeCollection
和--excludeCollectionsWithPrefix
,用于排除目标集合 -
mongorestore
支持来自标准输入的BSON数据,之前输入仅支持来自BSON文件的数据 -
mongostat
和mongotop
可使用--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
表示相等条件
参考资料
MongoDB 3.0 Release Notes的更多相关文章
-
ASP.NET Core 1.1.0 Release Notes
ASP.NET Core 1.1.0 Release Notes We are pleased to announce the release of ASP.NET Core 1.1.0! Antif ...
-
Git for Windows v2.11.0 Release Notes
homepage faq contribute bugs questions Git for Windows v2.11.0 Release Notes Latest update: December ...
-
Yasm 1.3.0 Release Notes
Yasm 1.3.0 Release Notes http://yasm.tortall.net/releases/Release1.3.0.html Target Audience Welcome ...
-
WeihanLi.Npoi 1.11.0/1.12.0 Release Notes
WeihanLi.Npoi 1.11.0/1.12.0 Release Notes Intro 最近 NPOI 扩展新更新了两个版本,感谢 shaka chow 的帮忙和支持,这两个 Feature ...
-
WeihanLi.Npoi 1.14.0 Release Notes
WeihanLi.Npoi 1.14.0 Release Notes Intro 周末更新了一下项目,开始使用可空引用类型,并且移除了 net45 的支持,仅支持 netstandard2.0 Cha ...
-
WeihanLi.Npoi 1.16.0 Release Notes
WeihanLi.Npoi 1.16.0 Release Notes Intro 最近有网友咨询如何设置单元格样式,在之前的版本中是不支持的,之前主要考虑的是数据,对于导出的样式并没有支持,这个 is ...
-
Apache Hadoop 3.0.0 Release Notes
http://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-common/release/3.0.0/RELEASENOTES.3. ...
-
Redis 5.0.0 releases notes
Redis 5.0 release notes ======================= ---------------------------------------------------- ...
-
WSL Ubuntu 安装MongoDb 4.0导入公钥时遇到一个坑 (转)
WSL Ubuntu 安装MongoDb 4.0导入公钥时遇到一个坑 一路坑啊~~~网上的密钥都不对???? 不应该啊 源中默认是MongoDb 3.x 但是我想用4.0,然后按照mongodb官方 ...
随机推荐
-
NOI模拟赛Day5
T1 有and,xor,or三种操作,每个人手中一个数,求和左边进行某一种运算的最大值,当t==2时,还需要求最大值的个数. test1 20% n<=1000 O(n^2)暴力 test2 2 ...
-
oracle空间管理
表空间:组织数据文件的一种途径, 是一个逻辑概念 包含有 表,字段,索引 一个数据库可以对应多个表空间 一个物理文件对应一个表空间 任何一个数据库创建的第一一个表空间是 system Tables ...
-
Visual studio 非常好的插件
1. Productive power tools2015 2. Visual studio spell checker
-
org.openqa.selenium.remote.SessionNotFoundException: The FirefoxDriver cannot be used after quit() was called.
该问题已经困扰了我很多天 问题终于解决了,全局变量导致的,碰到这种问题很难再自己本身的机器上发现错误,所以,应该看一下自己写的方法是否涉及到了全局变量出现不一致的情况,让其统一即可.
-
ZOJ 3511 不相交切切多边形 线段树求最大边数
题意: n多凸边形 m刀 (把n切m刀,问切完后的图形中 最多的边数 是多少) 切a点-b点 数据保证切的刀不会相交 思路: 2点之间的剩余点数就是边数, 把a-b距离 近 排序 切完一刀就统计一下切 ...
-
js如何获取隐藏的元素的高度
首先,正常情况下,确保div是有高度的. <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
-
UWP作业(一)XAML Controls Gallery
作为一个编程能力不是很好的uwp初学者,在控件库里看到种类繁多的选项时,需要查资料,最后决定出几种性能各方面可能不是那么出色的控件,内心也是非常纠结的.但当我把自己当成一个用户时,通过分析自己的需求, ...
-
064、Weave网络结构分析(2019-04-04 周四)
参考https://www.cnblogs.com/CloudMan6/p/7482035.html Weave网络使用之前需要执行 eval $(weave env) ,其作用是将后续的doc ...
-
es6数组的复制
数组是复合的数据类型,直接复制的话,只是复制了指向底层数据结构的指针,而不是克隆一个全新的数组. const a1 = [1, 2]; const a2 = a1; a2[0] = 2; a1 // ...
-
itunes connect 沙盒帐号地区的问题导致无法进行充值
项目代理给*发行,版本由项目提交appstore,*合作伙伴会进行测试.这里遇到一个问题,就是沙盒帐号测试的时候死活提示充值失败,不走正常的充值流程. 后来我分析了原因,主要是由于帐号的App S ...