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重写并利用一个单独的项目维护

  • 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

  

MongoDB 3.0 Release Notes的更多相关文章

  1. 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 ...

  2. Git for Windows v2.11.0 Release Notes

    homepage faq contribute bugs questions Git for Windows v2.11.0 Release Notes Latest update: December ...

  3. Yasm 1.3.0 Release Notes

    Yasm 1.3.0 Release Notes http://yasm.tortall.net/releases/Release1.3.0.html Target Audience Welcome ...

  4. 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 ...

  5. WeihanLi.Npoi 1.14.0 Release Notes

    WeihanLi.Npoi 1.14.0 Release Notes Intro 周末更新了一下项目,开始使用可空引用类型,并且移除了 net45 的支持,仅支持 netstandard2.0 Cha ...

  6. WeihanLi.Npoi 1.16.0 Release Notes

    WeihanLi.Npoi 1.16.0 Release Notes Intro 最近有网友咨询如何设置单元格样式,在之前的版本中是不支持的,之前主要考虑的是数据,对于导出的样式并没有支持,这个 is ...

  7. 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. ...

  8. Redis 5.0.0 releases notes

    Redis 5.0 release notes ======================= ---------------------------------------------------- ...

  9. WSL Ubuntu 安装MongoDb 4.0导入公钥时遇到一个坑 (转)

    WSL Ubuntu 安装MongoDb 4.0导入公钥时遇到一个坑 一路坑啊~~~网上的密钥都不对????  不应该啊 源中默认是MongoDb 3.x 但是我想用4.0,然后按照mongodb官方 ...

随机推荐

  1. 6.22-Servlet

    一.servlet servlet是运行在服务器端的java程序 jsp专注于显示 servlet处理请求和响应 创建servlet 继承HttpServlet 实现servlet接口 配置servl ...

  2. Hadoop(1.2.1)安装

    背景知识: 1.数据分布存储,不是复制存储 2.数据不动,代码动,由于分布式存储,所以把代码移动到数据的地方计算. 3.数据如何分割,hadoop提供的分割文件的编程接口 安装: 1.安装JDK 1. ...

  3. BI开发(ETL-DW)

    来到公司已经参与开发了一段时间的BI项目,但是仅仅是按照需求开发,今天下午公司给大家培训数据仓库的知识,老大(女程序员)在上面讲,我们在下面听,2到3个小时吧,什么纬度,主题,几乎听的一脸茫然,最后演 ...

  4. ECCV 2018 | 给Cycle-GAN加上时间约束,CMU等提出新型视频转换方法Recycle-GAN

    CMU 和 Facebook 的研究者联合进行的一项研究提出了一种新型无监督视频重定向方法 Recycle-GAN,该方法结合了时间信息和空间信息,可实现跨域转换,同时保留目标域的风格.相较于只关注空 ...

  5. django-查询按时间排序

    Meta类实现 class News(models.Model): title = models.CharField(max_length=35) desc = models.CharField(ma ...

  6. 好久没玩laravel了,5.6玩下(一)

    那么先到官方找到框架,然后安装下 composer安装的,composer怎么安装的 我就不说了 前置条件: PHP >= OpenSSL PHP Extension PDO PHP Exten ...

  7. as3 文档类引用

    /**文档类引用**/ public static var main:CoverMain; public function CoverMain() { main=this; }

  8. input 提交属性 hidden属性

    name名字最好和你后台属性的成员变量对应,否则在参数传递的时候接收不到出现空指针异常.一般表单提交后input会以name的值=value的值的形式传给后台.如:<input type=&qu ...

  9. 深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p

    由于没有const*运算,const实际上修饰的是前面的char*,但不能在定义时转换写成 const(char *)*p,因为在定义是"()"是表示函数. 三.深入理解7种组合 ...

  10. TPCC-MySQL的安装与使用

    Tpcc-mysql 是 percona 基于 tpcc 衍生出来的产品,专用于 mysql 基准测试,其源码放在 bazaar 上( Bazaar 是一个分布式的版本控制系统,采用 GPL 许可协议 ...