首页 > 解决方案 > 如何保持大量的唯一计数?

问题描述

我想保持对用户 ID 的计数(在许多文档中),鉴于 Firestore 的 1 MiB 文档限制,我不知道处理它的最佳方法。理想情况下,我想将每个唯一的用户 ID 存储在一个数组中并以这种方式获取计数。这使得任务具有幂等性,因为 (1) 每个用户只能从数组中添加和删除他们自己的 ID,并且 (2) 获得准确的计数就像获得数组的计数一样容易。但是,数组的大小受到文档大小限制的限制,并且文档应该很小。

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

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

标签: google-cloud-firestore

解决方案


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


推荐阅读