在 MongoDB 中,为什么非因果一致会话中的辅助节点的读关注“可用”默认选项?

C. *_* O. 2 database sharding mongodb database-replication

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

当它是非因果一致会话时,为什么辅助节点的读取关注“可用”是默认值?

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

我只是无法根据阅读文档建立联系。

如果有人帮助我建立桥梁,我将非常感激。先谢谢了。

kev*_*adi 7

以下是分片集群的读取关注级别的摘要:

  • 大多数:只返回写入多数投票节点的数据,不会回滚。
  • local:返回本地节点上的数据,但过滤掉孤立文档。这需要节点与分片的主节点通信(如果此读取位于辅助节点上),或者与配置服务器通信以提供读取服务。在降级的分片集群中,此读取可能会无限期地停止。不过,对于未分片的集合来说,这不是问题。可以返回可回滚的数据。
  • available:返回任何可用的数据。这是为了允许读取可用性优先于正确性。可以返回可回滚的数据。请参阅阅读关注“可用”

分片辅助节点默认为“可用”读取关注点,以保持与 MongoDB 3.4 的行为兼容性(请参阅SERVER-31032

因果一致性可以根据所使用的读写关注点提供不同的保证(有关详尽的详细信息,请参阅因果一致性和读写关注点),其中可以实现读自己写、单调读、单调写以及读后写之间的平衡通过使用不同级别的读写关注点。

由于因果一致性提供了数据完整性的表面保证,因此它与“可用”读关注不兼容,因为“可用”并不意味着提供有关完整性的保证,而是强调可用性。