google-cloud-firestore - 如何保持大量的唯一计数?
问题描述
我想保持对用户 ID 的计数(在许多文档中),鉴于 Firestore 的 1 MiB 文档限制,我不知道处理它的最佳方法。理想情况下,我想将每个唯一的用户 ID 存储在一个数组中并以这种方式获取计数。这使得任务具有幂等性,因为 (1) 每个用户只能从数组中添加和删除他们自己的 ID,并且 (2) 获得准确的计数就像获得数组的计数一样容易。但是,数组的大小受到文档大小限制的限制,并且文档应该很小。
另一种选择是保留每个用户可以添加或减去的计数器。如果用户想将自己添加到集合中,客户端将首先获取计数器属性的当前值并添加到它。虽然这解决了文件大小问题,但该任务不是幂等的。客户端检索属性的当前值并设置它所花费的时间足以让另一个用户通过更快的连接和足够的同时用户来做同样的事情,这似乎不太可靠。
最好的第三种选择是什么?
解决方案
如果您有多个客户端写入同一个文档,您应该使用事务来确保写入是一致的并且不会相互干扰。
推荐阅读
- sql - 从 SQL Server 表列的行中筛选记录
- c# - 如何使用 Enumerable.Range 动态创建数据表列?
- java - 使用自定义对象映射器在 Vertx 4.0 中注册杰克逊编解码器的地方在哪里
- json - 从 cloudfromation 将 json 输出存储在 bash 中
- php - PHP print_r 不返回 json 请求
- javascript - JS:在 addEventListener 中添加命名函数
- r - 将大型数据框从 R 推送/导出到 Vertica 数据库
- android - 连接到 Firebase 时出现 Build.gradle 文件错误
- mathematical-optimization - 优化 min{x/(x+1)}
- django - 如何从 Django REST 框架(JWT 令牌)获取真实密码。对于用户列表视图