跨多个子集合的增量计数器

Increment counter across multiple subcollections

我正在构建应用程序,用户可以在其中单击“开始”事件时增加与会者计数器。为了简化阅读,事件在跟随特定组织者的用户的“事件”子集合中被复制。每次用户在事件上单击“开始”时,该计数器都必须在所有子集合中递增。在这种情况下,使连接成为比非规范化数据更好的选择吗?

在建模方面没有"right"或"wrong"。如果您的应用已通过您实施的内容满足其需求,并结合 Firestore's limitations 的知识,请随心所欲。

但是,如果您的目标是通过执行额外的查找来避免 10000 次写入,那么一定要避免麻烦和成本。您可能想对这两种方法进行成本或性能估算,然后选择更便宜或更快的方法,或者从该解决方案中选择您需要的任何方法。

请记住,单个事务中有 500 个文档的限制,因此如果您需要更新 10000 个文档,您将无法以原子方式执行此操作。如果您的代码对错误或不完整的工作没有弹性,那么某些文档可能根本无法获得更新。这可能是不分散写入这么多文档的充分理由。