我已阅读有关 transactional update operations on Firestore 的文档.根据Quotas and Limits关于交易只有两个限制:
- Maximum size for a transaction: 10 MiB
- Time limit for a transaction: 270 seconds, with a 60-second idle expiration time
没有明确提到与事务相关的限制,在事务期间可以读取和/或修改多少文档或集合,或者是否对发生事务更新的集合有任何其他限制。
这是否意味着只要更新保持在这些和其他一般限制范围内,客户就可以对多达 500 个文档进行事务性更新,每个文档位于不同的集合中?
如果客户端在事务中读取多个文档,但只更新其中一个 - Firestore 是否仍(静默地)写入未修改的文档(用于序列化等)...所以我必须考虑写入- 限制为每秒每个文档写入 1 次,即使对于客户端未明确修改的文档也是如此。
P.S.:我问的原因是 Datastore 在事务中有 25 个实体组的限制,并且还会看到在许多写入事务中只读的实体(“文档”)中的热点。例如,参见 this answer by Dan McGrath .我只是想知道 Datastore 的哪些特征会转移到 Firestore,并且在设计 Firestore 数据库时必须考虑。
最佳答案
请参阅“可以传递给提交操作的最大文档数”行,它定义了 500 个文档的限制。这是您的事务限制,因为我们需要使用一次提交来应用事务中的所有内容。
我认为不再需要静默写入来确定文档在事务中是否已更改。
没有相当于 25 个实体组限制的相关限制。
关于database - Cloud Firestore 事务的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46585334/