阅读关注“本地”

读取关注为"local"的查询从实例返回数据,但不能保证数据已被写入大多数副本集成员(即可以回滚)。

阅读关注"local"是以下情况的默认值:

无论read concern级别如何,节点上的最新数据都可能无法反映系统中数据的最新版本。

因果一致的会话

阅读关注local可用于因果一致的会话。

Example

考虑以下写入三个成员副本集的操作 Write0 的时间轴:

Note

为了简化,该示例假定:

  • Write0 之前的所有写操作已成功复制到所有成员。

  • Writeprev 是 Write0 之前的上一次写入。

  • Write0 之后未发生其他写操作。

Time Event 最近写 最新 w:“多数”写道
t0 主要适用 Write0 小学 :写 0

中学 1:写上一页
中学 2:写上一页
小学 :写上一页
中学 1:写上一页
中学 2:写上一页
t1 中学 1 应用 write0 小学 :写 0
中学 1:写 0
中学 2:写上一页
小学 :写上一页
中学 1:写上一页
中学 2:写上一页
t2 辅助 2 应用 write0 主要 :写 0
中学 1:写 0
中学 2:写 0
小学 :写上一个
中学 1:写上一页
中学 2:写上一页
t3 Primary 知道成功复制到 Secondary1 并将确认发送给 Client 端 Primary :写 0
中学 1:写 0
中学 2:写 0
小学 :写 0
中学 1:写上一页
中学 2:写上一页
t4 Primary 知道成功复制到 Secondary2 Primary :写 0
中学 1:写 0
中学 2:写 0
小学 :写 0
中学 1:写上一页
中学 2:写上一页
t5 Secondary1 收到通知(通过常规复制机制)以更新其最新 w 的快照:“多数”写 主要 :写 0
中学 1:写 0
中学 2:写 0
小学 :写 0
中学 1:写 0
中学 2:写上一页
t6 Secondary2 收到通知(通过常规复制机制)以更新其最近 w 的快照:“多数”写 主要 :写 0
中学 1:写 0
中学 2:写 0
小学 :写 0
中学 1:写 0
中学 2:写 0

然后,下表总结了在时间T时具有"local"读关注的读操作将看到的数据状态。

Read Target 时间T 数据状态
Primary After t0 数据反映 Write0.
Secondary1 Before t1 数据反映 Writeprev
Secondary1 After t1 数据反映 Write0
Secondary2 Before t2 数据反映 Writeprev
Secondary2 After t2 数据反映 Write0
首页