当前位置: 首页 > 知识库问答 >
问题:

在MongoDB中,read首选项和readSwen之间的区别是什么?

松高爽
2023-03-14

我读了很多MongoDB文档,但我不理解readConcern和readPreference选项之间的区别。

例如:如果我在我的阅读关注选项中设置“多数”,并将“主要”设置为我的阅读偏好选项,结果会是什么?这两种选择似乎是矛盾的。

我知道在查询级别我只能设置readConcern首选项,但在客户端级别我也可以设置readPreference。

共有2个答案

祁彬
2023-03-14

这意味着,如果我们有一个副本集,那么readcare多数将允许将数据保存(持久化)到副本集的大多数,所以我们可以放心,如果复制有问题,这个文档不会被回滚。

readPreference-可以帮助平衡负载,因此我们可以有一个报告生成器进程,它将始终从辅助服务器读取数据,并离开主服务器为在线用户提供数据。

微生青青
2023-03-14

在副本集中,主MongoDB实例是接收所有写操作的主实例。

主要读取首选项是默认模式,与MongoDB客户端有关;这是一个驱动程序/客户端选项。这意味着您从首先写入数据的主实例中读取数据(在复制到其他副本集成员之前)
如果使用主读取首选项以外的其他模式,则有读取过时数据的风险。

Read concern是副本集的一个查询选项。默认情况下,读取关注点是本地的。这将返回执行查询时可用的最新数据。数据可能尚未持久化到大多数副本集成员,可能会回滚。该选项可以设置为“多数”,这将使查询读取已持久化到大多数副本集成员的最新数据,并且不会回滚。但是,您必须正确设置(仅适用于WiredTiger引擎和其他一些要求…)而且,您可能会错过大多数副本集成员已写入但未持久化的较新数据。

假设您对阅读偏好和阅读关注使用默认选项。然后,MongoDB驱动程序将读取请求路由到主副本集成员(主实例),该实例将返回当时可用的最新数据。该数据可能没有持久化到大多数副本集成员,可能会回滚。

类似地,您可以考虑使用不同的阅读关注点和阅读偏好选项组合的用例。

  • 本地/主要首选

MongoDB文档中描述了这些选项。有些组合在某些情况下可能有意义,而有些组合在其他情况下可能有意义。为了完整起见,我只是在这里列出了它们。我的解释如下:

  1. 根据读取首选项选项(驱动程序选项)路由请求
  2. 第二,根据读取关注选项(查询选项)执行请求
 类似资料:
  • 本文向大家介绍RDBMS和MongoDB之间的区别,包括了RDBMS和MongoDB之间的区别的使用技巧和注意事项,需要的朋友参考一下 关系数据库管理系统 RDBMS代表关系数据库管理系统。它以实体形式将数据存储为表格。它提供了有关信息安全性的多层。每个表可能有也可能没有主键(用于标识表中的唯一记录)和外键(用于标识两个表之间的关系)。RDBMS使用SQL语言查询数据库。流行的RDBMS的示例是o

  • 本文向大家介绍MySQL和MongoDB之间的区别,包括了MySQL和MongoDB之间的区别的使用技巧和注意事项,需要的朋友参考一下 MySQL是一个关系数据库。MongoDB是NoSQL数据库。 以下是MySQL和MongoDB之间的重要区别。 序号 键 的MySQL MongoDB 1 拥有/开发 MySQL由Oracle拥有。 MongoDB由MongoDB Inc.开发。 2 数据存储

  • 问题内容: 我想使用mongodb数据库,但是我注意到有两个不同的数据库,它们都有自己的网站和安装方法:mongodb和mongoose。因此,我问自己一个问题:“我使用哪个?”。 因此,为了回答这个问题,我问社区是否可以解释这两者之间的区别?以及是否有利弊?因为它们看起来和我非常相似。 问题答案: 我假设您已经知道MongoDB是一个NoSQL数据库系统,它以BSON文档的形式存储数据。但是,您

  • 最后,本文介绍了新的Java 8<code>Optional<code>,指出: Optional远不如Scala中的Option[T]强大(但至少它不允许包装null)。该API不像空处理那样简单,而且可能要慢得多。但是编译时检查的好处加上可读性和可选使用的文档价值大大超过了缺点 我对Scala有着非常基本的了解,而且我对Java 8<code>Optional<code>也越来越熟悉,所以乍一

  • 问题内容: MongoDB的和方法之间有什么区别? 问题答案: 在MongoDB Java驱动程序 的Javadoc中,它说: DBCursor.count():计算与查询匹配的对象数。这 没有 考虑限制/跳过。 DBCursor.size():计算与查询匹配的对象数。这确实考虑了限制/跳过。

  • 在Java 7之前,JVM内存中有一个名为PermGen的区域,JVM以前在这里保存它的类。在Java 8中,它被移除并被称为元空间的区域所取代。 PermGen和Metaspace之间最重要的区别是什么? 我知道的唯一区别是,并且忽略了VM参数。