在Firestore中存储Countries集合计数器的合适位置是什么?
计数器存储方案说明
不需要新建独立集合,优先选择单统计文档方案
你完全不需要为这个计数器单独创建独立集合,更推荐的做法是:在和Countries集合同级的位置,创建一个全局统计专用的单文档,比如命名为global_stats,直接在这个文档里新增total_countries字段存储当前的国家总数即可。
- 成本优势:用户每次查询国家总数仅消耗1次读操作,远低于全量拉取的195次读成本,也比独立集合方案少了额外的索引开销。
- 维护逻辑简单:只需要在管理员执行国家文档新增、删除操作的事务中,同步对
total_countries字段做增减更新即可,避免多集合维护的复杂度。
仅特殊场景需要独立统计集合
只有当你后续有大量分类统计需求(比如需要存储各洲国家数量、不同发展水平国家数量等十几种更新频率各不相同的统计项)时,才可以考虑单独创建stats集合,每个统计项对应一个独立文档。对你当前的需求来说,创建独立集合属于过度设计,完全没必要。
操作注意事项
- 必须通过事务绑定国家文档的增删操作和计数器的更新操作,避免两者执行不同步导致计数不准。
- 如果你遇到管理员对国家的增删操作频率超过每秒1次的极端场景(对国家基础数据来说几乎不会出现),可以考虑用分布式计数器方案拆分计数字段,普通场景无需额外处理。
内容的提问来源于stack exchange,提问作者Taha Sami
相关产品推荐
相关产品推荐

