我正在阅读 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)上提供的示例中,似乎有信息不同意这一点。具体来说,他们有一个图表(我在下面复制了):
在该图中,在时间 t3,写入被确认。在收到写入确认后,majority
在 t4 对任一辅助节点的读取关注将返回旧值,这与第一个声明相矛盾,即只要您使用majority
写入 + 读取关注点,“单个线程可以读取自己的写入”。
如果该声明被修改为“从具有多数或可线性化关注的主要内容中读取”,我认为这将成为现实……但是,我想知道我是否误解了某些东西。
有人可以提供以下方面的见解:
a) 本文档的含义,以及
b) 如何在 3.6 的因果会话之前获得 read-your-own-writes 语义?
谢谢!