MongoDB 2.0的发布说明

升级

虽然主要版本号发生了变化,但MongoDB 2.0是一个标准的增量生产版本,可以作为MongoDB 1.8的替代版本。

准备

在升级之前,请仔细阅读所有发布说明,并确保没有变化会影响您的部署。

如果您在2.0中创建新索引,那么可以降级到1.8,但您必须重新索引新集合。

mongoimportmongoexport现在正确遵守CSV规范来处理CSV输入/输出。这可能会破坏依赖之前行为的现有导入/导出工作流程。有关更多信息,请参阅服务器-1097。

默认情况下,在2.0中为64位版本启用日志。如果您仍然喜欢在没有日记的情况下跑步,请使用--nojournal运行时选项开始mongod。否则,MongoDB会在启动期间创建日志文件。第一次开始写日记时,当mongod创建新文件时,你会看到延迟。此外,您可能会看到写入吞吐量下降。

2.0个mongod实例可与1.8个mongod实例互操作;但是,为了获得最佳效果,请使用以下过程升级您的部署:

升级独立产品mongod
  1. 从下载v2.0.x二进制文件MongoDB下载页面。
  2. 关闭您的mongod实例。将现有的二进制文件替换为2.0.x mongod二进制文件,然后重新启动MongoDB。
升级复制集
  1. 通过关闭mongod并将1.8二进制文件替换为2.0.x二进制文件,一次升级集合的辅助成员MongoDB下载页面。

  2. 为了避免丢失故障转移的最后几个更新,您可以暂时停止应用程序(故障转移应该少于10秒),或者您可以在应用程序代码中设置写入问题,以确认每次更新到达多台服务器。

  3. 使用rs.stepDown()下调低主程序,以允许正常的故障转移过程。

    rs.stepDown()replSetStepDown提供了比简单地直接关闭主故障转移程序更短、更一致的故障转移程序。

    当主制文件下台时,关闭其实例并升级,将mongod二进制文件替换为2.0.x二进制文件。

升级分片集群
  1. 首先以任何顺序升级所有配置服务器实例。由于配置服务器使用两阶段提交,碎片配置元数据更新将停止,直到所有更新都启动并运行。
  2. 以任何顺序升级mongos路由器。

变化

Compact 命令

compact的命令现在可用于压缩单个集合及其索引。以前,压缩的唯一方法是修复整个数据库。

并发性改进

当进入磁盘时,服务器在写入不太可能内存中的数据时会产生写入锁。此功能的初始实现现在存在:

服务器-2563了解更多信息。

2.0中的具体操作收益率是:

  • 更新者_id
  • 移除
  • 长光标迭代
默认堆栈大小

MongoDB 2.0减少了默认堆栈大小。当有许多(例如1000多个)客户端连接时,这种更改可以减少总内存使用量,因为每个连接都有一个线程。虽然如果未使用,线程堆栈的部分内容可能会被交换出来,但一些操作系统这样做的速度足够慢,以至于这可能是一个问题。默认堆栈大小小于系统设置或1MB。

索引性能增强

v2.0 包含对首页。指数通常小25%,快25%(取决于用例)。从以前的版本升级时,只有当您创建新索引或重新索引旧索引时,才能实现新索引类型的好处。

日期现已签署,最大索引键大小从819字节略微增加到1024字节。

默认情况下,所有创建新索引的操作都将导致2.0索引。例如:

  • 对旧版本索引的结果进行重新索引会导致2.0索引。然而,在2.0之前的版本中,对辅助索引进行重新索引不起作用。不要对辅助内容进行重新索引。有关变通办法,请参阅服务器-3866。
  • repairDatabase命令将索引转换为2.0索引。

要将给定集合的所有索引转换为2.0型,调用compact的命令。

创建新索引后,降级到1.8.x将需要重新索引使用2.0创建的任何索引。看/教程/roll-back-to-v1.8索引。

分层身份验证

应用程序现在可以对分片集群使用身份验证

复制品套装
分片集群中的隐藏节点

在2.0中,mongos实例现在可以确定副本集的成员何时变得“隐藏”,而无需重新启动。在1.8中,mongos,如果您将成员重新配置为隐藏成员,则必须重新启动mongos,以防止查询到达隐藏成员。

优先事项

每个副本集成员现在可以有一个优先值,包括从0到1000的浮点。优先级允许您控制您更喜欢将集合中的哪个成员作为主成员,具有最高的优先级的成员将看到集合的大多数成员将被选为主成员

例如,假设您有一个包含A、B和C三个成员的副本集,并假设他们的优先级设置如下:

  • A优先级是2
  • B优先级是3
  • C优先级是1

在正常运行期间,该集将始终选择B作为主。如果B不可用,该集将选择A作为主。

有关更多信息,请参阅priority文档。

数据中心意识

您现在可以“标记”复制集成员来指示他们的位置。您可以使用这些标签来设计跨数据中心、机架、特定服务器或任何其他架构选择的自定义写入规则

例如,管理员可以定义“非常重要的写入”或customerData或“审计跟踪”等规则,以复制到某些服务器、机房、数据中心等。然后在应用程序代码中,开发人员会说:

db.foo.insert(doc, {w : "very important write"})

如果它符合DBA为“非常重要的写作”定义的条件,它就会成功。

有关更多信息,请参阅数据中心意识。

驱动程序还可以支持标签感知读取。您指定 slaveOk,而不是指定 slaveOk,并带有标签,指示要从哪个数据中心读取。有关详细信息,请参阅驱动器文件。

wmajority

您还可以将w设置为majority,以确保写入传播到大多数节点,有效地提交它。当您从集合中添加或删除节点时,“多数”的值将自动调整。

有关更多信息,请参阅写入关注。

与少数派重新配置

如果一个集合中的大多数服务器已经永久丢失,您现在可以强制重新配置该集,以使其重新上线。

有关更多信息,请参阅使用不可用成员重新配置副本集

下台前被抓到的次要检查

为了最大限制度地减少没有主选项的时间,如果主方法在最新优化后10秒内没有看到次要,rs.stepDown()方法现在将失败。无论如何,您都可以强制主服务器下台,但默认情况下,它会返回错误消息。

另请参阅强迫成员成为初级会员。

延长主机的关机时间,以尽量减少中断

当您调用shutdown命令时,主命令将拒绝关闭,除非有一个次要选项在主命令的10秒内。如果没有这样的辅助设备,主调将下台,等待长达一分钟,等待次要完全赶上,然后再关闭。

请注意,要获得此行为,您必须显示发出shutdown命令;向进程发送信号不会触发此行为。

您也可以强制关闭主数据苦,即使没有最新的辅助数据库也行

维护模式

repairDatabasecompact辅助运行时,辅助数据库将自动进入“恢复”模式,直到操作完成。这可以防止客户在繁忙时尝试从中阅读。

地理空间特征

多地点文稿

现在,索引支持具有多个位置对象的文档,嵌入内联或嵌入式文档。还支持附加命令选项,允许结果不仅返回距离,还可以返回用于生成距离的位置。

有关更多信息,请参阅2d索引的多位置文档。

Polygon搜索

现在也支持多边形内的多边形$within查询。有关详细信息,请参阅$within运营商文档。

日志增强功能

  • 现在默认情况下,64位平台启用日志。使用--nojournal命令行选项禁用它。
  • 现在,日志被压缩,以便更快地提交到磁盘。
  • 存在一个新的--journalCommitInterval运行时选项,用于指定您自己的组提交间隔。默认设置不会改变。
  • 一个新的{ getLastError: { j: true } }选项可用于等待组提交。当客户端等待{j: true}时,组提交将更快地发生。如果日志记录被禁用,{j: true}是禁止操作。

ContinueOnError选项

continueOnError驱动程序中设置大容量插入的选项 ,以便大容量插入将继续插入所有剩余的文档,即使插入失败,例如重复的密钥异常或网络中断。该getLastError 命令将报告是否有任何插入失败,而不仅仅是最后一次插入失败。如果发生多个错误,客户端将仅接收最新getLastError结果。

注意

对于分片群集上的批量插入,getLastError 仅此命令不足以验证成功。应用程序必须在应用程序逻辑中验证批量插入是否成功。

Map Reduce

输出到分片集合

使用新的sharded标志,可以将地图/还原的结果发送到分片集合。结合reduceormerge标志,可以继续将数据添加到地图/减少作业的非常大集合中。

有关更多信息,请参阅Map-ReducemapReduce参考。

性能改进

“地图”/“降低”性能将受益于以下各项:

  • 更大的内存缓冲区大小,减少作业期间所需的磁盘I/O量
  • 更大的javascript堆大小,允许更大的对象和更少的GC
  • 支持使用jsMode标志执行纯JavaScript。请参阅mapReduce参考。

新的查询功能

其他正则表达式选项:s

允许点(.)匹配所有字符,包括新行。这是目前支持的imx的补充。请参阅$regex

$and

一个特殊的布尔$and查询运算符现已可用。

命令输出更改

validate命令和system.profile集合中的文档的输出都已增强,可以将信息作为BSON对象返回,每个值都有键,而不是作为自由形式字符串。

Shell 特色

自定义提示

您可以为mongo shell 定义一个自定义提示,您可以通过将prompt变量设置为字符串的定义javaScript函数来随时更改提示

默认shell Init脚本

启动时,shell将检查用户主目录中的.mongorc.js文件。shell将在连接到数据库和显示提示之前执行此文件。

如果您希望shell不自动运行.mongorc.js文件,请使用--norc启动shell。

有关更多信息,请参阅mongo参考。

大多数命令都需要身份验证

在2.0中,当使用身份验证(例如authorization)运行时,以下命令所有数据库命令都需要身份验证。

资源img

译者:韩鹏帅 参见

原文 - Release Notes for MongoDB 2.0

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""