设为首页 收藏本站
查看: 1064|回复: 0

[经验分享] MongoDB 3.2 版本说明(Release Notes for MongoDB 3.2)

[复制链接]

尚未签到

发表于 2018-10-26 07:11:26 | 显示全部楼层 |阅读模式
  MongoDB 3.2 版本说明(Release Notes for MongoDB 3.2
  
  英文原文:
  https://docs.mongodb.org/master/release-notes/3.2/
  2015年12月8日
  MongoDB 3.2现在发布了。关键特性是将WiredTiger作为默认存储引擎,复制选举增强,集群中的config servers配置为复制集,readConcern,和文档验证。
  OpsManager 2.0也发布了。查看Ops Manager文档和Ops Manager版本说明获取更多信息。
  小版本发布(Minor>
  
  3.2.1 – 2016年1月12日

  •   修复了错误:当复制集执行常规关闭,辅助副本成员可能会将特定已复制但还没有应用的操作标记为已成功应用:SERVER-21868
  •   在Windows版本使用WiredTiger提高insert负载性能:SERVER-20262
  •   修复了块移动期间长时间运行的事务:SERVER-21366
  •   所有在3.2.1版本中关闭的问题
  WiredTiger作为默认引擎(WiredTiger as Default
  
  从3.2版开始,MongoDB使用WiredTiger作为默认的存储引擎。
  为了指定MMAPv1存储引擎,你必须以下面任一方式指定存储设置:

  •   在命令行使用--storageEngine选项:
mongod --storageEngine mmapv1

  •   或者在配置文件中,使用storage.engine设置:
storage:  
    engine: mmapv1
  
  注意:
  对于已经存在的部署,如果你不指定--storageEngine或者storage.engine设置,MongoDB 3.2可以自动决定用于在--dbpath或storage.dbPath中创建数据文件的存储引擎。
  如果指定--storageEngine或者storage.engine,如果dbPath包含不是指定的存储引擎创建的数据文件mongod将不会启动。
  也可以参考:
  Default Storage Engine Change
  复制选举增强(Replication Election Enhancements
  
  从MongoDB 3.2起,MongoDB减少了复制集故障切换时间,并加速了多个同时存在的主成员的监测。
  作为增强的部分,MongoDB引入了第一版复制集协议。新的复制集将会默认使用protocolVersion: 1。之前版本的MongoDB使用该协议的版本0。
  此外,MongoDB使用了新的replica set configuration选项electionTimeoutMillis。
  electionTimeoutMillis以毫秒指定了用于检测当一个复制集的主成员不可达时的时间限制。
  electionTimeoutMillis只应用在使用replication protocol版本1时。
  分片集群增强(Sharded Cluster Enhancements
  
  MongoDB 3.2对于配置服务器(config servers)放弃使用三个镜像mongod实例。
  而是,从3.2开始,分片集群的config servers可以部署为一个复制集。复制集config servers必须运行WiredTiger存储引擎。
  这个改变提高了访问config servers的一致性,因为对于分片配置数据,MongoDB可以利用标准复制集读写协议。此外,这允许一个分片集群有多于3个config servers因为一个复制集可以多达50个成员。
  对于更多信息,查看Config Servers。为了使用复制集config servers部署一个新的分片集群,查看Deploy a Sharded Cluster。
  readConcern
  
  MongoDB 3.2针对复制集和复制集分片引入了readConcern查询选项。对于WiredTiger storage engine,readConcern选项允许客户端对于它们的读请求选择一个隔离级别。你可以指定一个“majority”的readConcern来读取已经写入大多数节点的数据并且不能被回滚。默认,MongoDB使用一个“local”的readConcern返回当前的可用数据给查询时刻的节点,即使数据还没有被持久化到大多数节点并可能被回滚。使用MMAPv1 storage engine,你可能只指定一个“local”的readConcern
  readConcern需要针对MongoDB 3.2版本的MongoDB驱动更新。
  只有使用protocol version 1的复制集支持“majority”读确认(read concern)。运行版本0协议的复制集不支持“majority”读确认。
  对于更多关于readConcern,包括支持该选项的操作,查看Read Concern。
  部分索引(Partial Indexes
  
  MongoDB 3.2提供了选项用于创建只索引匹配指定过滤表达式的文档的索引。通过索引集合中文档的子集,部分索引有更低的存储需求并且对于索引创建和维护降低了性能消耗。你可以指定一个partialFilterExpression选项对于所有的MongoDB index types。
  partialFilterExpression选项接受一个文档作为指定条件,通过使用:

  •   等值表达式(例如,field: value或使用$eq操作符),
  •   $exists: true表达式,
  •   $gt,$gte,$lt,$lte表达式,
  •   $type表达式,
  •   $and操作符只在最顶层
  对于详细信息,查看Partial Indexes。
  文档验证(Document Validation
  
  从3.2开始,MongoDB提供了在更新和插入期间验证文档的能力。验证规则基于每个集合指定。
  为了在一个新的集合上指定文档验证,在db.createCollection()方法使用新的validator选项。为了添加文档验证到一个存在的集合,在collMod命令使用新的validator选项。对于更多信息,查看Document Validation。
  为了查看一个集合的验证规则,使用db.getCollectionInfos()方法。
  下面的命令可以使用新的bypassDocumentValidation选项避开验证每个操作:

  •   applyOps命令
  •   findAndModify命令和db.collection.findAndModify()方法
  •   mapReduce命令和db.collection.mapReduce()方法
  •   insert命令
  •   update命令
  •   $out对于aggregate命令和db.collection.aggregate()方法
  对于已经启用访问控制的部署,你必需有bypassDocumentValidation行为。内置角色dbAdmin和restore提供该行为。
  聚合框架增强(Aggregation Framework Enhancements
  
  MongoDB引入:

  •   新的阶段,累加器和表达式。
  •   Availability of accumulator expressions在$project阶段。
  •   Performance improvements在分片集群。
  新的聚合阶段
  
  阶段
  描述
  语法
  $sample
  随机从输入选择N条文档

  { $sample: {>  $indexStats
  返回关于索引使用的统计
  { $indexStats: { } }
  $lookup
  与另一个集合执行left outer join关联
  {
  $lookup:
  {
  from: ,
  localField: ,
  foreignField: ,
  as:
  }
  }
  对$group阶段新的累加器
  
  累加器
  描述
  语法
  $stdDevSamp
  累加标准偏差
  { $stdDevSamp:  }
  $stdDevPop
  累加流行标准偏差
  { $stdDevPop:  }
  新的聚合算术运算操作
  
  操作
  描述
  语法
  $sqrt
  计算平方根
  { $sqrt:  }
  $abs
  返回数字的绝对值
  { $abs:  }
  $log
  以指定基数计算数字的对数
  { $log: [ ,  ] }
  $log10
  计算以10为底数的对数
  { $log10:  }
  $ln
  计算数字的自然对数
  { $ln:  }
  $pow
  计算数字的指定指数的幂
  { $pow: [ ,  ] }
  $exp
  计算指数为e的幂
  { exp:  }
  $trunc
  截断数字为整数
  { $trunc:  }
  $ceil
  返回大于或等于指定数字的最小整数
  { $ceil:  }
  $floor
  返回小鱼或等于指定数字的最大整数
  { floor:  }
  新的聚合数组操作
  
  操作
  描述
  语法
  $slice
  返回数组的子集
  { $slice: [ ,  ] }
  or
  { $slice: [ , ,  ] }
  $arrayElemAt
  返回指定数组索引位置的元素
  { $arrayElemAt: [ ,  ] }
  $concatArrays
  连接数组
  {
  $concatArrays: [ , , ... ]
  }
  $isArray
  判断运算对象是否为数组
  { $isArray: [  ] }
  $filter
  查询基于条件的数组的子集
  {
  $filter:
  {
  input: ,
  as: ,
  cond:
  }
  }
  累加器表达式可用性(Accumulator Expression Availability)
  从3.2版开始,以下累加器表达式,之前只在$group阶段可用,现在在$project阶段也可用了:

  •   $avg
  •   $min
  •   $max
  •   $sum
  •   $stdDevPop
  •   $stdDevSamp
  当用于$project阶段时,这些累加器表达式可以接受:

  •   单一参数: :
  •   多个参数: : [ , , ... ]
  
  一般增强(General Enhancements
  

  •   在MongoDB 3.2中,$project阶段支持使用方括号[]直接创建新的数组列。例如,查看Project New Array Fields。
  •   MongoDB 3.2对$geoNear阶段引入minDistance选项。
  •   $unwind阶段不再对非数组操作数报错。如果操作数不解析为数组但不缺失,为null或者一个空数组,$unwind认为操作数为单一元素数组。
      $unwind阶段可以:

    •   通过在阶段规则中指定一个新的选项includeArrayIndex在输出中包含数组元素的索引。
    •   通过在阶段规则中指定一个新的选项preserveNullAndEmptyArrays输出这些数组列缺失,null或者一个空数组的文档。

  为了支持这些新特性,$unwind现在可以采用另一种语法,查看$unwind详细信息。
  优化(Optimization
  
  索引可以覆盖聚合操作。
  MongoDB提高了在大的分片集群的管道的整体性能。
  如果管道以对片键的精确$match开始,整个管道只运行在匹配的分片上。之前,管道会被拆分,合并的操作将会在主分片上执行。
  对于运行在多个分片上的聚合操作,如果操作不需要运行在数据库的主分片上,这些操作可以路由结果到任何分片来合并结果,避免数据库的主分片过载。需要运行在数据库的主分片上的聚合操作是$out阶段和$lookup阶段。
  兼容性(Compatibility
  
  对于兼容性改变,查看Aggregation Compatibility Changes。
  MongoDB工具增强(MongoDB Tools Enhancements
  

  •   mongodump和mongorestore使用新的--archive选项添加对归档文件和标准输出/输入流的支持。该增强允许通过网络设备基于管道导出的数据流。例如,查看

    •   mongodump to an Archive File和mongodump an Archive to Standard Output
    •   Restore a Database from an Archive File和Restore a Database from Standard Input。

  •   mongodump和mongorestore使用新的--gzip选项添加对压缩数据导出的支持。该增强减少了对导出文件的存储空间。例如,查看:

    •   Compress mongodump Output
    •   Restore from Compressed Data。

  加密存储引擎(Encrypted Storage Engine
  
  企业版特性:
  可在MongoDB企业版可用。
  重要:
  只对WiredTiger存储引擎可用。
  安静加密,当联合使用透明加密和好的保护相关帐号、密码和加密密钥的安全策略,可以帮助确保遵守安全和私有标准,包括HIPAA、PCI-DSS和FERPA。
  MongoDB企业版3.2对WiredTiger存储引擎引入了一个本地加密选项。这个特性允许MongoDB加密数据文件以致只有有解密密钥的当事人可以解码和读取数据。更多详细信息,查看Encrypted Storage Engine。
  文本搜索增强(Text Search Enhancements)
  
  文本索引版本3(text Index Version 3)
  MongoDB 3.2引入了text index的版本3。索引的新版本的关键特性是:

  •   提高了case insensitivity。
  •   Diacritic insensitivity。
  •   额外的delimiters for tokenization。
  从MongoDB 3.2开始,版本3对于新的text索引为默认版本。
  也可以查看:
  Text Index Version 3 Compatibility
  $text操作符增强($text Operator Enhancements
  
  $text操作符增加对如下支持:

  •   case sensitive text search带有新的$caseSensitive选项,和
  •   diacritic sensitive text search带有新的$diacriticSensitive选项。
  对于更多信息和示例,查看$text操作符相关部分Case Insensitivity和Diacritic Insensitivity。
  其他语言支持(Support for Additional Languages)
  
  企业版特性:
  只在MongoDB企业版可用。
  从3.2版开始,MongoDB企业版提供了对以下语言的支持:Arabic,Farsi(尤其Dari和Iranian Persian方言),Urdu,简体中文和繁体中文。
  详细信息,查看Text Search with Basis Technology Rosette Linguistics Platform。
  新的存储引擎
  
  inMemory存储引擎
  
  企业版特性:
  只在MongoDB企业版可用。
  MongoDB企业版3.2提供了一个内存中的存储引擎。除了一些元数据,内存中存储引擎不维护任何磁盘数据。通过避免磁盘I/O,内存中的存储引擎允许更可预见的数据库操作延时。
  警告:
  当前处于beta阶段。不能在产品中使用。
  为了选择这个存储引擎,指定

  •   inMemory对于--storageEngine选项或者storage.engine设置。
  •   --dbpath。尽管内存中处理引擎不写数据到文件系统,它维护在--dbpath小元数据文件和诊断数据以及构建大索引的临时文件。
  
  inMemory存储引擎使用文档级别锁。对于更多细节,查看In-Memory Storage Engine。
  ephemeralForTest存储引擎(ephemeralForTest Storage Engine
  
  MongoDB 3.2提供了一个新的用于测试的存储引擎。而不是一些元数据,用于测试的存储引擎不维护任何磁盘数据,不需要在测试运行期间做清理。用于测试的存储引擎是无支持的。
  警告:
  只对测试目的。不能在产品中使用。
  为了选择这个存储引擎,指定

  •   ephemeralForTest对于--storageEngine选项或者storage.engine设置。
  •   --dbpath。尽管用于测试的存储引擎不写数据到文件系统,它在--dbpath中维护小的元数据文件。
  
  ephemeralForTest存储引擎使用集合级别的锁。
  一般增强(General Enhancements
  
  位测试查询操作符(Bit Test Query Operators
  
  MongoDB 3.2提供了新的查询操作符用于测试位值:

  •   $bitsAllSet
  •   $bitsAllClear
  •   $bitsAnySet
  •   $bitsAnyClear
  SpiderMonkey JavaScript引擎(SpiderMonkey JavaScript Engine
  
  MongoDB 3.2对于mongo shell和mongod server使用SpiderMonkey作为JavaScript引擎。
  SpiderMonkey提供了对其他平台的支持并且有一个提高的内存管理模型。
  这个改变影响了所有的JavaScript行为包括命令mapReduce,group,和查询操作符$where;然而,这个改变应该是对用户完全透明的。
  也可以查看:
  SpiderMonkey Compatibility Changes
  mongo Shell和CRUD API(mongo Shell and CRUD API
  
  为了提供和MongoDB驱动的CRUD(Create/Read/Update/Delete)API的一致性,mongo shell引入了其他CRUD方法与驱动的CRUD API保持一致:
  新的API
  描述
  db.collection.bulkWrite()
  等价于初始化Bulk()操作构造器,使用Bulk方法来添加操作和运行Bulk.execute()来执行操作。
  MongoDB 3.2放弃了Bulk()和它的相关方法。
  db.collection.deleteMany()
  等价于db.collection.remove()。
  db.collection.deleteOne()
  等价于db.collection.remove()带有justOne设置为true;例如:
  db.collection.remove( , true ) 或 db.collection.remove( , { justOne: true } )。
  db.collection.findOneAndDelete()
  等价于db.collection.findAndModify()方法带有remove设置为true。
  db.collection.findOneAndReplace()
  等价于db.collection.findAndModify()方法带有update设置为一个替代文档。
  db.collection.findOneAndUpdate()
  等价于db.collection.findAndzModify()方法带有update设置为一个使用update操作符指定修改的文档。
  db.collection.insertMany()
  等价于db.collection.insert()方法带有一个文档数组作为参数。
  db.collection.insertOne()
  等价于db.collection.insert()方法带有一个文档作为参数。
  db.collection.replaceOne()
  等价于db.collection.update( ,  )方法带有一个替换文档作为参数。
  db.collection.updateMany()
  等价于db.collection.update( , , { multi: true, ... })方法带有使用update操作符和multi选项设置为true的指定修改的文档。
  db.collection.updateOne()
  等价于db.collection.update( ,  )方法带有使用update操作符指定修改的一个文档。
  WiredTiger和fsyncLock(WiredTiger and fsyncLock
  
  从MongoDB 3.2开始,WiredTiger存储引擎支持带有lock选项的fsync命令或者mongo shell方法db.fsyncLock()。那就是,对于WiredTiger存储引擎,这些操作可以保证数据文件不改变,确保创建备份一致性的目的。
  放弃32位二进制文件(Deprecation of 32-bit Binaries
  
  从3.2版开始,32位二进制被放弃并且在将来的版本中不可用。
  $type操作符接受字符串别名($type Operator Accepts String Aliases
  
  $type操作符对于BSON类型,除了与BSON类型相关的数字外,接受字符串别名。
  explain()支持distinct()操作(explain() Support for distinct() Operation
  
  db.collection.explain()添加了对db.collection.distinct()方法的支持。对于更多信息,查看db.collection.explain()。
  放弃HTTP界面(Deprecation of the HTTP Interface
  
  从3.2版开始,MongoDB放弃了它的HTTP界面。
  地理空间优化(Geospatial Optimization
  
  MongoDB 3.2引入了2dsphere indexes版本3,在更精细的层次索引GeoJSON geometries。新版在更小的区域提高了2dsphere index查询的性能。此外,对于2d indexes和2dsphere indexes,geoNear查询的性能对于密集数据集已经提高。
  也可以查看:
  2dsphere Index Version 3 Compatibility
  诊断数据捕获(Diagnostic Data Capture
  
  为了让MongoDB工程师促进MongoDB服务器行为的分析,MongoDB 3.2引入了诊断数据收集架构,以一定的时间间隔写服务器统计信息到诊断文件。默认,该架构以1秒的间隔捕获数据。为了修改该间隔,查看diagnosticDataCollectionPeriodMillis。
  MongoDB在mongod实例--dbpath或storage.dbPath下创建了一个diagnostic.data目录。诊断数据在目录下存储为文件。
  诊断文件的最大大小使用diagnosticDataCollectionFileSizeMB配置,并且diagnostic.data目录的最大大小使用diagnosticDataCollectionDirectorySizeMB配置。
  对于捕获间隔的默认值和最大大小被作为有用的数据提供给MongoDB工程师,对性能和存储大小有最小影响。典型地,这些值只需要被MongoDB工程师为特定的诊断目的的请求而修改。
  写确认(Write Concern
  

  •   对于复制集使用protocolVersion: 1,辅助副本成员在写入它们各自的磁盘journals后确认写操作,忽略j选项。
  •   对于复制集使用protocolVersdion: 1,w: “majority”意味着j: true。
  •   使用j: true,MongoDB只会在请求数量的成员,包括主成员,已经写入journal后返回。之前j: true在复制集中的写确认只需要主成员写入journal,忽略了w: 写确认。
  WiredTiger引擎的journalCommitInterval(journalCommitInterval for WiredTiger
  
  MongoDB 3.2对于WiredTiger存储引擎增加了对指定journal提交间隔的支持。查看journalCommitInterval选项。在之前的版本中,选项只应用于MMAPv1存储引擎。
  对于相关的配置文件设置,MongoDB 3.2增加了storage.journal.commitIntervalMs设置和放弃了storage.mmapv1.journal.commitIntervalMs。放弃的storage.mmapv1.journal.commitIntervalMs设置作为对storage.journal.commitIntervalMs设置的别名。
  影响兼容性的改变(Changes Affecting Compatibility
  
  一些MongoDB 3.2的改变可能影响兼容性并且可能需要用户行动。对于详细的兼容性改变的列表,查看Compatibility Changes in MongoDB 3.2。
  升级过程(Upgrade Process
  
  查看Upgrade MongoDB to 3.2获取完整的升级指南。
  在3.2.1中的已知问题(Known Issues in 3.2.1
  
  在3.2.1版本中已知问题的列表:

  •   当节点间的时钟漂移大于electionTimeOut,客户端可能发现新的主节点失败:SERVER-21744。
  •   fromMigrate标记不会在oplog中设置用于删除:SERVER-21678
  •   在一个3.2版mongo shell连接到一个3.0版mongos或者在一个3.0版mongo shell连接到一个3.0版mongos带有read preference运行explain,带有3.2版本的分片是不兼容的:SERVER-21661
  •   connPoolStats命令的结果不再正确:SERVER-21597
  •   ApplyOps后端索引创建可能会死锁:SERVER-21583
  •   对于protocolVersion 1的复制集使用w:majority写的性能回归:SERVER-21581
  •   UNICODE感知文本处理逻辑(文本索引第3版)的性能回归:SERVER-19936
  在3.2.0中的已知问题(Known Issues in 3.2.0
  
  在3.2.0版本中已知问题的列表:

  •   findAndModify操作不会被profiler捕获:SERVER-21772
  •   getMore命令不会设置nreturned操作计数器:SERVER-21750
  •   当节点间的时钟漂移大于electionTimeout,客户端可能发现新的主节点失败:SERVER-21744
  •   fromMigrate标记不会在oplog中设置用于删除:SERVER-21678
  •   在一个3.2版mongo shell连接到一个3.0版mongos或者在一个3.0版mongo shell连接到一个3.0版mongos带有read preference运行explain,带有3.2版本的分片是不兼容的:SERVER-21661
  •   connPoolStats命令的结果不再正确:SERVER-21597
  •   ApplyOps后端索引创建可能会死锁:SERVER-21583
  •   对于protocolVersion 1的复制集使用w:majority写的性能回归:SERVER-21581
  •   UNICODE感知文本处理逻辑(文本索引第3版)的性能回归:SERVER-19936
  •   在Windows下的WiredTiger引擎的插入工作负载中服务器性能回归:SERVER-21792
  下载(Download
  
  下载MongoDB 3.2,去到downloads page。
  也可以查看:

  •   All Third Party License Notices.
  •   All JIRA issues resolved in 3.2.
  其他资源(Additional Resources)
  

  •   Get ready for MongoDB 3.2?Get our help.



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-626492-1-1.html 上篇帖子: mongodb3.2二进制单机版安装 下篇帖子: MongoDB安全的3A -- 认证(Authentication)、授权(Authorization)和审计(Audit
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表