我读了很多MongoDB文档,但我不理解readConcern和readPreference选项之间的区别.
例如:如果我在我的阅读关注选项中设置"多数",并将"主要"设置为我的阅读偏好选项,结果会是什么?这两种 Select 似乎是矛盾的.
我知道在查询级别我只能设置readConcern首选项,但在客户端级别我也可以设置readPreference.
我读了很多MongoDB文档,但我不理解readConcern和readPreference选项之间的区别.
例如:如果我在我的阅读关注选项中设置"多数",并将"主要"设置为我的阅读偏好选项,结果会是什么?这两种 Select 似乎是矛盾的.
我知道在查询级别我只能设置readConcern首选项,但在客户端级别我也可以设置readPreference.
在副本集中,主MongoDB实例是接收所有写操作的主实例.
primary读取首选项是默认模式,与MongoDB客户端有关;driver/client option美元.这意味着您从首先写入数据的主实例中读取数据(在复制到其他副本集成员之前)
Read concern是副本集的query option.默认情况下,读取关注点为local.这将返回执行查询时可用的最新数据.数据可能尚未持久化到大多数副本集成员,可能会回滚.该选项可以设置为majority,这将使查询读取已持久化到大多数副本集成员且不会回滚的最新数据.但是,您必须正确设置(仅适用于WiredTiger引擎和其他一些要求…)而且,您可能会错过大多数副本集成员已写入但未持久化的较新数据.
假设您对阅读偏好和阅读关注使用默认选项.然后,MongoDB驱动程序将读取请求路由到主副本集成员(主实例),该实例将返回当时可用的最新数据.该数据可能没有持久化到大多数副本集成员,可能会回滚.
类似地,您可以考虑使用不同的阅读关注点和阅读偏好选项组合的用例.
MongoDB文档中描述了这些选项.有些组合在某些情况下可能有意义,而有些组合在其他情况下可能有意义.为了完整起见,我只是在这里列出了它们.我的解释如下: