在MongoDB中,为什么因果关系一致的会话中的次要对象具有“读取”默认选项?

问题描述 投票:0回答:1

我对因果一致性如何影响在阅读关注的“本地”与“可用”之间做出选择的决定感到困惑。

为什么在非因果关系一致的会话中,默认的次要读取关注点“可用”?

我了解分片群集的“可用”行为与未分片集合的“本地”行为。

我只是无法基于阅读文档进行连接。

如果有人帮助我架桥,我将非常感激。谢谢你。

database mongodb database-replication sharding
1个回答
2
投票

这里是关于分片群集的已读关注级别的摘要:

  • 多数:仅返回已写入多数投票节点且不会回滚的数据。
  • local:返回本地节点上的数据,但过滤出孤立的文档。这要求节点与分片的主节点(如果此读取在辅助节点上)或配置服务器进行通信以为读取提供服务。在降级的分片群集中,此读取可能会无限期停止。但是,对于未分片的集合,这不是问题。可能返回可以回滚的数据。
  • available:返回任何可用数据。这是为了使读取可用性优先于正确性。可能返回可以回滚的数据。参见Read Concern "available"

分片副本默认为“可用”,以维护与MongoDB 3.4的行为兼容性(请参阅SERVER-31032)]

因果一致性可以根据所使用的读和写关注点提供不同的保证(有关详尽的详细信息,请参见Causal Consistency and Read and Write Concerns),在此情况下,通过使用不同级别的读写问题。

由于因果一致性提供了某种程度上的数据完整性保证,因此它与“可用”读取关注点不兼容,因为“可用”是指不提供关于完整性的保证,而是强调可用性。

© www.soinside.com 2019 - 2024. All rights reserved.