database - Cloud Firestore 事务的限制

标签 database firebase google-cloud-datastore google-cloud-platform google-cloud-firestore

我已阅读有关 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

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

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

  2. 如果客户端在事务中读取多个文档,但只更新其中一个 - 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/

相关文章:

Java JDBC - ResultSet 和封装。许多字段、太多的 setter 和 getter 需要管理。有更好的技术吗?

MySQL查询恢复

javascript - 如何在 Firebase 中跟踪 child 数量

javascript - Firebase 和主干网

android - 从 mysql 数据库中检索密码发送到 android+ java webservices 中的电子邮件

android - Firebase/android 如何获取子键和值?

google-app-engine - ndb.StructuredProperty 不保存 key ?

google-app-engine - 如何确保 GAE 上的 MemCache 和 Datastore 之间的一致性?

python - ndb 没有按日期正确查询

数据库优化 - 将每一天存储在不同的列中以减少行数