如何保持大量唯一计数?

时间:2018-12-07 17:59:00

标签: google-cloud-firestore

我想不断记录用户ID(在许多文档中),鉴于Firestore的MiB文档限制为1,因此我不知道处理该ID的最佳方法。理想情况下,我想将每个唯一的用户ID存储在一个数组中,并以此方式获得计数。这使任务成为幂等,因为(1)每个用户只能在阵列中添加和删除自己的ID,以及(2)获得准确的计数与获得阵列的计数一样容易。但是,数组的大小受到文档大小限制的限制,并且文档本应很小。

另一个选择是保留一个计数器,每个用户可以添加或减去。如果用户希望将自己添加到集合中,则客户端将首先获取counter属性的当前值并将其添加到该属性中。虽然这解决了文件大小问题,但任务不是幂等的。客户端检索属性的当前值并设置该时间花费的时间足以让另一个用户通过更快的连接和足够多的同时用户来执行相同的操作,这似乎不太可靠。

最好的第三种选择是什么?

1 个答案:

答案 0 :(得分:0)

如果有多个客户端在写同一文档,则应使用transaction来确保写入是一致的并且不会互相干扰。