是否可以观察到原子 Firestore 写入的部分变化?

Is it possible to observe partial changes from an atomic Firestore write?

Firestore docs says 事务和批量写入都是原子操作 - 要么写入所有更改,要么什么都不更改。

这个问题是关于 Firestore 中原子操作的变化是否可以部分观察,或者全有或全无保证是否也适用于读者?


示例:

假设我们有一个包含至少两个文档 X 和 Y 的 Firestore 数据库。

假设至少有两个客户端(A 和 B)连接到该数据库。

在某个时候客户端 A 执行批量写入更新文档 X 和 Y。

稍后,客户端B读取文档X,观察客户端A所做的更改。

现在,如果客户端 B 也将读取文档 Y,是否可以保证 A(在同一个批处理写入操作中)所做的更改将被观察到?

(假设没有对这些文档进行其他更改)


我已经对其进行了测试,但从未发现任何不一致之处。但是,仅仅测试这件事是不够的。它归结为 Firestore 在所有情况下(高写入频率、大数据集、故障转移等)提供的一致性级别

可能允许 Firestore(在有限的时间内)向客户端 B 公开文档 X 的更改但仍然不公开文档更改的情况Y. 这两项改动 最终都会 公开。

问题是;它们会作为原子操作公开,还是只为写入提供这种原子性?

我收到了来自 Firebase Google 组的 Gil Gilbert 的 excellent response

简而言之; Firestore 确实保证读取也是一致的。没有我担心的部分观察结果。

但是,Gil 提到了两种情况,客户端可能会因为离线缓存和会话处理而观察到这种不一致。

详情请参考吉尔的回复(link以上)。