Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 跨多个子集合的增量计数器_Firebase_Google Cloud Firestore_Nosql_Denormalization - Fatal编程技术网

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

Firebase 跨多个子集合的增量计数器,firebase,google-cloud-firestore,nosql,denormalization,Firebase,Google Cloud Firestore,Nosql,Denormalization,我正在构建一个应用程序,用户可以在点击活动“开始”时增加一个与会者计数器。为了简化读取,事件在遵循特定组织者的用户的“事件”子集合中重复。当组织者有10000个追随者时,例如用户每次单击事件上的“go”时,此计数器必须在所有子集合中递增,在这种情况下为10000个文档写入。在这种情况下,复制数据是正确的做法吗?还是我应该加入阅读组织者的帖子,这样我就不必在组织者的所有追随者中更新这些数据。“Go”是一个非常频繁执行的操作,它不会更新可能一年发生一次的个人资料图片,但我希望每个用户每天在某个事件上

我正在构建一个应用程序,用户可以在点击活动“开始”时增加一个与会者计数器。为了简化读取,事件在遵循特定组织者的用户的“事件”子集合中重复。当组织者有10000个追随者时,例如用户每次单击事件上的“go”时,此计数器必须在所有子集合中递增,在这种情况下为10000个文档写入。在这种情况下,复制数据是正确的做法吗?还是我应该加入阅读组织者的帖子,这样我就不必在组织者的所有追随者中更新这些数据。“Go”是一个非常频繁执行的操作,它不会更新可能一年发生一次的个人资料图片,但我希望每个用户每天在某个事件上单击“Go”几次,因为该应用程序允许频繁改变想法

在建模方面没有“对”或“错”。如果你的应用程序通过你所实现的东西满足了它的需求,结合你的知识,做你想做的任何事情

但是,如果您的目标是通过执行额外的查找来避免10000次写操作,那么请尽一切努力为自己省去这些麻烦和成本。您可能希望对这两种方法进行成本或性能评估,并选择一种更便宜或更快的方法,或者选择此解决方案所需的任何方法


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

使用云函数在没有事务或批写入的情况下执行500多个文档的更新是一种安全的方法吗?e、 在服务器端执行并行的单独写操作。你说的“安全”是什么意思?您担心什么?这些更新是否有可能被中断?我知道,如果我在客户端执行这些更新,那么在进行这些更改时,应用程序可能会崩溃或网络连接断开。我想知道在服务器端执行更新后,是否会有让部分数据库处于不一致状态的危险。任何API调用都有失败的可能。不管电话从哪里打来,你都得检查一下,然后恢复。我明白。非常感谢。