• MongoDB 3.0 Release Notes


    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

      

  • 相关阅读:
    iOS 开发笔记-获取某个APP素材
    iOS UI基础-15.0 UIWebView
    iOS UI基础-14.0 DatePicker
    iOS UI基础-13.0 数据存储
    iOS UI基础-12.0 Storyboard
    iOS UI基础-11.0 UINavigationController
    iOS UI基础-10.0 QQ聊天布局之键盘及文本使用
    iOS 开发技巧总结
    iOS 设计模式-NSNotificationCenter 通知中心
    iOS UI基础-9.2 UITableView 简单微博列表
  • 原文地址:https://www.cnblogs.com/caosiyang/p/4330469.html
Copyright © 2020-2023  润新知