MongoDB 的发行说明 3.0

在本页面

2015 年 3 月 3 日

MongoDB 3.0 现已推出。 Key features 包括对 WiredTiger 存储引擎,可插拔存储引擎 API,SCRAM-SHA-1身份验证机制和改进的explain功能的支持。

MongoDB Ops Manager,包括自动化,备份和监控,现在也可用。有关详细信息,请参阅Ops Manager 文档Ops Manager 发行说明

次要版本

3.0.15 - 2017 年 5 月 15 日

问题已解决:

  • SERVER-27164:CRUD 操作在同一数据库上隐式创建集合时,在初始同步或稳定 state 复制期间出现死锁。

  • SERVER-28548:在 MMAPv1 中,如果 record 不再存在,则索引 readers/writers 可以 return 无效数据。

  • 所有问题在 3.0.15 结束

3.0.14 - 2016 年 11 月 4 日

问题已解决:

  • 3.0.13 上的 memory 访问不正确会导致分段错误:SERVER-26889

3.0.13 - 2016 年 10 月 31 日

问题已解决:

3.0.12 - 2016 年 5 月 9 日

问题已解决:

3.0.11 - 2016 年 3 月 31 日

问题已解决:

  • 对于 MongoDB 3.0.9 和 MongoDB 3.0.10,在块迁移期间,对迁移块中的文档的 insert 和更新操作不会反映在目标分片中:SERVER-23425

3.0.10 - 2016 年 3 月 8 日

问题已解决:

3.0.9 - 2016 年 1 月 26 日

问题已解决:

  • 如果同时更新文档,则指定排序和批量大小的查询可以_retret 结果 order。 SERVER-19996

  • 在 WiredTiger 下,大量的创建和删除集合可能导致listDatabases变慢。 SERVER-20961

  • 身份验证失败消息包括服务器 IP 地址而不是 client IP 地址。 SERVER-22054

  • 所有问题在 3.0.9 结束

3.0.8 - 2015 年 12 月 15 日

问题已解决:

3.0.7 - 2015 年 10 月 13 日

问题已解决:

3.0.6 - 2015 年 8 月 24 日

问题已解决:

3.0.5 - 2015 年 7 月 28 日

问题已修复和改进:

3.0.4 - 2015 年 6 月 16 日

问题已解决:

3.0.3 - 2015 年 5 月 12 日

问题已解决:

3.0.2 - 2015 年 4 月 9 日

问题已解决:

3.0.1 - 2015 年 3 月 17 日

问题已解决:

主要变化

可插拔存储引擎 API

MongoDB 3.0 引入了可插拔存储引擎 API,允许第三方为 MongoDB 开发存储引擎。

WiredTiger

MongoDB 3.0 引入了对WiredTiger存储引擎的支持。通过对 WiredTiger 的支持,MongoDB 现在支持两个存储引擎:

  • MMAPv1,以前版本的 MongoDB 中提供的存储引擎和 MongoDB 3.0 的默认存储引擎,以及

  • WiredTiger,仅在 MongoDB 3.0 的 64-bit 版本中可用。

WiredTiger 用法

WiredTiger 是默认 MMAPv1 存储引擎的替代品。 WiredTiger 支持所有 MongoDB features,包括报告服务器,数据库和集合统计信息的操作。但是,切换到 WiredTiger 需要更改on-disk 存储格式。有关将存储引擎更改为 WiredTiger 的说明,请参阅将 MongoDB 升级到 3.0文档中的相应部分。

MongoDB 3.0 副本集和分片集群可以拥有不同存储引擎的成员;但是,性能可能会因工作量而异。有关详细信息,请参阅将 MongoDB 升级到 3.0文档中的相应部分。

WiredTiger 存储引擎需要最新的官方 MongoDB 驱动程序。有关更多信息,请参阅WiredTiger 和 Driver Version 兼容性

也可以看看 支持触摸命令WiredTiger 存储引擎文档

WiredTiger Configuration

要配置 WiredTiger 存储引擎的行为和 properties,请参阅storage.wiredTiger configuration 选项。你可以设置命令 line 上的 WiredTiger 选项

也可以看看 WiredTiger 存储引擎

WiredTiger 并发和压缩

3.0 WiredTiger 存储引擎提供 document-level 锁定和压缩。

默认情况下,WiredTiger 使用瞬间 compression library 压缩集合数据。 WiredTiger 默认在所有索引上使用前缀压缩

也可以看看 Production Notes中的WiredTiger部分,博文MongoDB 中的新压缩选项 3.0

MMAPv1 改进

MMAPv1 并发改进

在 version 3.0 中,MMAPv1 存储引擎添加了对 collection-level 锁定的支持。

MMAPv1 Configuration 更改

为了支持多个存储引擎,MMAPv1 的某些配置设置已更改。见Configuration 文件选项更改

MMAPv1 Record 分配行为更改

MongoDB 3.0 不再实现动态 record 分配并弃用paddingFactor。使用 MMAPv1 的实例中的集合的默认分配策略是2 分配的力量,已对其进行了改进以更好地处理大型文档大小。在 3.0 中,usePowerOf2Sizes flag 被忽略,因此 2 策略的强大功能用于没有设置noPadding flag 的所有集合。

对于包含仅包含插入或 in-place 更新(例如递增计数器)的工作负荷的集合,您可以禁用 2 策略的强大功能。要为集合禁用 2 策略的强大功能,请使用带有noPadding flag 的collMod命令或带有noPadding选项的db.createCollection()方法。

警告 如果工作负载包括删除或可能导致文档增长的任何更新,请不要设置noPadding。有关更多信息,请参阅没有填充分配策略

当磁盘空间不足时,MongoDB 3.0 不会在所有写入时出错,但仅在所需磁盘分配失败时才会出错。因此,MongoDB 现在允许 in-place 更新,并在磁盘空间不足时删除。

也可以看看 动态 Record 分配

副本 Sets

副本集成员数量增加

在 MongoDB 3.0 中,replica sets 最多可包含 50 个成员。 [1]以下驱动程序支持较大的副本 sets:

  • C#(.NET)司机 1.10

  • Java 驱动程序 2.13

  • Python 驱动程序(PyMongo)3.0

  • Ruby 驱动程序 2.0

  • Node.JS 司机 2.0

C,C,Perl 和 legacy PHP 驱动程序以及早期版本的 Ruby,Python 和 Node.JS 驱动程序,以串行方式发现和监视副本集成员,因此不适合与大型副本集一起使用。

[1]投票成员的最大数量仍为 7。

副本集 Step Down 行为更改

副本集成员用于 step down 的 process 具有以下更改:

  • 在下台之前,replSetStepDown将尝试终止 long running 用户操作,这些操作会阻止主服务器退出,例如索引 build,写操作或 map-reduce job。

  • 为了帮助防止回滚,replSetStepDown将等待一个可选的辅助节点在降级之前赶上主节点的 state。以前,主服务器会在降级之前等待辅助服务器赶上主服务器(i.e.辅助服务器,复制延迟为 10 秒或更短)的 10 秒内。

  • replSetStepDown现在允许用户指定一个secondaryCatchUpPeriodSecs参数来指定主要应该等待辅助节点在退出之前赶上的长度。

其他副本集操作更改

  • 初始同步为每个集合更有效地构建索引,并使用线程批量应用 oplog 条目。

  • w:“多数”写入关注的定义已更改为大多数投票节点。

  • 副本集 Configuration加强限制。有关详细信息,请参阅副本集配置验证

  • 对于辅助成员上的 pre-existing 集合,MongoDB 3.0 不再自动构建缺少的_id索引。

也可以看看 MongoDB 中的兼容性更改 3.0 in MongoDB 中的兼容性更改 3.0

Sharded Clusters

MongoDB 3.0 为分片群集提供以下增强功能:

也可以看看 MongoDB 中的兼容性更改 3.0 in MongoDB 中的兼容性更改 3.0

安全改进

MongoDB 3.0 包括以下安全增强功能:

  • MongoDB 3.0 添加了一个新的SCRAM-SHA-1 challenge-response 用户身份验证机制。如果当前驱动程序 version 不支持SCRAM-SHA-1SCRAM-SHA-1需要驱动程序升级。对于支持SCRAM-SHA-1的驱动程序版本,请参阅要求

  • 使用Localhost Exception访问 MongoDB 时增加限制。有关详细信息,请参阅Localhost Exception 已更改

也可以看看 安全变化

改进

新的查询反思系统

MongoDB 3.0 包括一个新的查询内省系统,它提供了改进的输出格式和对查询计划和查询执行的 finer-grained 内省。

有关详细信息,请参阅新的db.collection.explain()方法和新的说明命令以及更新的cursor.explain()方法。

有关新输出格式的信息,请参阅解释结果

增强了 Logging

为了提高 log 消息的可用性以进行诊断,MongoDB 将特定组件或操作下的一些 log 消息分类,并提供为这些组件设置详细程度 level 的功能。有关信息,请参阅Log 消息

MongoDB 工具增强功能

除了mongosniffmongoperf之外的所有 MongoDB 工具现在都用 Go 编写并作为单独的项目进行维护。

  • 并行化mongodumpmongorestore的新选项。您可以使用--numParallelCollections选项控制mongorestore将在 time 恢复的集合数。

  • mongodump的新选项-excludeCollection--excludeCollectionsWithPrefix用于排除集合。

  • 除了从文件读取 BSON 数据外,mongorestore现在可以接受来自标准输入的 BSON 数据输入。

  • mongostatmongotop现在可以使用--json选项以 JSON 格式 return 输出。

  • 添加了可配置的写关注mongoimportmongorestoremongofiles。使用--writeConcern选项。默认的 writeConcern 已更改为“w:majority”。

  • mongofiles现在允许您使用--prefix选项配置 GridFS 前缀,以便您可以在单个数据库中使用自定义命名空间和 store 多个 GridFS 命名空间。

也可以看看 MongoDB 工具更改

索引

  • 如果受索引构建影响的数据库或集合发生dropDatabase下降dropIndexes操作,则后台索引构建将不再自动中断。 dropDatabase下降dropIndexes命令仍将失败并显示错误消息a background operation is currently running,如 2.6.

  • 如果为createIndexes命令指定多个索引,

  • 该命令仅扫描集合一次,并且

  • 如果要在前台构建至少一个索引,则操作将 build 前台中的所有指定索引。

  • 对于分片集合,如果索引包含分片 key,则索引现在可以覆盖查询mongos执行。

也可以看看 MongoDB 中的兼容性更改 3.0 in MongoDB 中的兼容性更改 3.0

查询增强功能

MongoDB 3.0 包括以下查询增强功能:

  • 对于地理空间查询,添加对$geoIntersects$geoWithin查询的“大”多边形的支持。 “大”多边形是 single-ringed GeoJSON 多边形,其面积大于单个半球的面积。有关详细信息,请参阅$geometry$geoIntersects$geoWithin

  • 对于aggregate(),添加一个新的$dateToString operator 以便于将 date 转换为格式化的 string。

  • 添加$eq query operator 以查询相等条件。

也可以看看 2 d 索引和地理空间近查询

分发和支持的版本

现在,大多数 non-Enterprise MongoDB 发行版都包含对 TLS/SSL 的支持。以前,只有 MongoDB Enterprise 发行版附带 TLS/SSL 支持;对于 non-Enterprise 发行版,您必须使用--ssl flag(i.e.scons --ssl)在本地 build MongoDB。

32-bit MongoDB 版本可用于测试,但不适用于 production 使用。 32-bit MongoDB 版本不包括 WiredTiger 存储引擎。

MongoDB for Solaris 不支持 WiredTiger 存储引擎。

MongoDB 版本可用于 Windows Server 2003 和 Windows Vista(作为“64-bit Legacy”),但最低官方支持的 Windows version 是 Windows Server 2008。

也可以看看 平台支持

包 Repositories

Non-Enterprise MongoDB 3.0 及更高版本的 Linux 软件包位于新的 repository 中。按照相应的Linux 安装说明从新位置安装 3.0 包。

MongoDB Enterprise Features

审计

MongoDB Enterprise 中的审计可以过滤审计消息中的任何字段,包括PARAM文档中返回的字段。此增强功能与auditAuthorizationSuccess参数一起使审计可以过滤 CRUD 操作。但是,启用auditAuthorizationSuccess审核所有授权成功会降低 performance,而不仅仅是审核授权失败。

附加信息

影响兼容性的变化

3.0 中的某些更改可能会影响兼容性,并且可能需要用户操作。有关兼容性更改的详细列表,请参阅MongoDB 中的兼容性更改 3.0

升级 Process

有关完整升级说明,请参阅将 MongoDB 升级到 3.0

下载

要下载 MongoDB 3.0,请转到下载页面

也可以看看