1

我正在阅读 mongdb 的文档,并且试图了解在引入 Mongo 3.6 的因果一致性会话之前“读取您自己的写入”一致性所必需的内容。

根据此页面:https ://docs.mongodb.com/manual/reference/read-concern-majority/#read-your-own-writes

在 MongoDB 3.6 之前,您必须使用 { w: "majority" } 写入关注点发出写入操作,然后对读取操作使用“多数”或“线性化”读取关注点,以确保单个线程可以读取自己的写入.

但是,在他们在上面同一页面(https://docs.mongodb.com/manual/reference/read-concern-majority/#example)上提供的示例中,似乎有信息不同意这一点。具体来说,他们有一个图表(我在下面复制了):

Mongo DB Read Concern 示例图

在该图中,在时间 t3,写入被确认。在收到写入确认后,majority在 t4 对任一辅助节点的读取关注将返回旧值,这与第一个声明相矛盾,即只要您使用majority写入 + 读取关注点,“单个线程可以读取自己的写入”。

如果该声明被修改为“从具有多数或可线性化关注的主要内容中读取”,我认为这将成为现实……但是,我想知道我是否误解了某些东西。

有人可以提供以下方面的见解:

a) 本文档的含义,以及

b) 如何在 3.6 的因果会话之前获得 read-your-own-writes 语义?

谢谢!

4

1 回答 1

-1

当我要提出与你完全相同的问题时,我找到了你的票。我认为 MongoDB 文档中的这种说法是不正确的。没有因果一致性会话的双重“多数”不能保证“读你自己写”的语义。据我了解,在 3.6 之前,读关注线性化可以提供这种语义,写关注占多数。

于 2019-04-29T07:28:20.010 回答