是否可以观察原子Firestore写入的部分更改?

时间:2018-06-05 18:56:36

标签: firebase google-cloud-firestore consistency

事务和批量写入都是原子操作的Firestore docs says - 所有更改都被写入或者没有任何更改。

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

示例:

假设我们有一个Firestore数据库,其中包含至少两个文档X和Y.

我们还说至少有两个客户端(A和B)连接到此数据库。

在某些时候,客户端A执行批量写入,同时更新文档X和Y.

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

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

(假设对这些文件没有其他改动)

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

可能是允许Firestore(在有限的时间内)将文档X的更改公开给客户端B但仍未公开文档Y的更改的情况。两个更改都将最终被曝光。

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

1 个答案:

答案 0 :(得分:0)

我在Firebase Google Group中收到了Gil Gilbert的excellent response

总之; Firestore确保读取也是一致的。我没有担心的部分观察。

然而,Gil提到两个案例是由于离线缓存和会话处理,客户端无论如何都会观察到这种不一致。

有关详细信息,请参阅Gil的回复(上面的链接)。