Cloud Firestore 事务的限制

Ani*_*Ani 6 database firebase google-cloud-datastore google-cloud-platform google-cloud-firestore

我已阅读有关Firestore 上的事务更新操作的文档。根据配额和限制,交易只有两个限制:

  • 交易的最大大小:10 MiB
  • 交易时限:270秒,60秒空闲过期时间

没有明确提到与事务相关的限制,在事务期间可以读取和/或修改多少文档或集合,或者对发生事务更新的集合是否存在任何其他约束。

  1. 这是否意味着,只要更新保持在这些限制和其他一般限制范围内,客户端就可以对最多 500 个文档(每个文档位于不同的集合中)进行事务更新?

  2. 如果客户端在一个事务中读取多个文档,但只更新其中一个 - Firestore 是否仍然(静默)写入未修改的文档(用于序列化等)...所以我必须考虑每次写入 1 次的写入限制每秒的文档数,即使对于客户端未明确修改的文档也是如此。

PS:我问的原因是,Datastore 的事务限制为 25 个实体组,并且还会看到实体(“文档”)中的热点,这些热点在许多写入事务中是只读的。例如,请参阅Dan McGrath 的回答。我只是想知道 Firestore 具有哪些 Datastore 特征,并且在设计 Firestore 数据库时必须考虑这些特征。

Dan*_*ath 5

请参阅“可传递给提交操作的最大文档数”行,该行定义了 500 个文档的限制。这是您的事务限制,因为我们需要使用单次提交应用事务中的所有内容。

我认为不再需要静默写入来确定文档在事务中是否已更改。

没有相当于 25 个实体组限制的相关限制。

  • 如果我们想要进行超过 500 次更新,我们应该使用多个批次吗?或者我们如何才能实现这一目标?我有一个情况,我需要动态更新“用户源”的“参考”。我将 Id + 我关注的用户所做的每个“帖子”的一些信息添加到集合中,并且如果我取消关注用户,则我需要删除此引用。现在一切正常,但如果将来我的应用程序增长并且用户有超过 500 个帖子,我的“云功能”将在尝试更新此数据时崩溃。 (2认同)