我需要跟踪“照片”收藏集中的照片数量。因此,我想实现一个Aggregate Query,如链接文章中所述。
我的计划是使Cloud功能在创建或删除Photo文档时运行,然后根据需要增加或减少聚合计数器。
这可以工作,但是我担心会遇到1个写入/文档/秒的限制。假设用户在一个导入操作中添加了10张图像。也就是说,Cloud Function几乎同时执行10次,因此10次同时或多或少地写入Aggregate Query文档。
环顾四周,我发现有几次提到(like here),即1个写入/文档/秒的限制是针对恒定负载的持续时间,而不是短暂的突发。这听起来让人放心,但要说服雇主说,如果您所要做的只是“某人说在Google网上论坛上还可以”,那么您相信DB的选择是一个安全可靠的选择还不够真正。是否有官方消息表明短写突发是可以的,如果可以,“短突发”有什么定义?
或者是否有其他方法来维护聚合查询结果文档,而又不使所有聚合文档在所有聚合文档中都受到非常严格的1个写入/秒限制?
答案 0 :(得分:0)
如果您认为每秒的写入速度将超过一次,请考虑将聚合划分为多个分片。在这种情况下,您有N个聚合文档,并且每个客户端/函数随机选择一个要写入的文档。然后,当客户需要汇总时,它将读取所有这些子文档并将其添加到客户端。这种方法在https://docs.corda.net/docs/corda-os/4.4/api-vault-query.html#api-vault-query的Firebase文档中已得到很好的解释,也是distributed counters Firebase Extension中使用的方法。