You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloud Firestore缓存机制下删除操作运行逻辑及多客户端同步解决方案问询

解决方案:增量同步+定时清理墓碑机制

完全满足你的缓存、多端同步、存储空间释放需求,不需要对现有业务逻辑做过度修改,也不需要提前合并大文档这类过早优化操作:

核心架构调整步骤

  1. 新增两类辅助数据结构
  • 为每个用户单独维护1个user_sync_meta私有文档,仅存储2个字段:latest_tombstone_clear_time(最近一次清理删除标记的时间戳)、last_sync_version(全局同步版本号,也可直接用时间戳代替)
  • 新增tombstones用户私有子集合,所有删除操作生成的墓碑记录仅存在该集合中,每条墓碑仅保留deleted_doc_id(被删除的原文档ID)、delete_time(删除操作时间戳)两个字段,单条记录体积远小于1KB
  1. 删除操作逻辑调整
    用户触发删除时,先在tombstones集合写入对应墓碑记录,再直接删除原业务文档,不需要给原文档加deleted软删字段,原文档的存储空间会被立即释放。
  2. 同步逻辑调整
    所有客户端启动同步前,先比对本地存储的last_full_sync_time和服务端user_sync_meta中的latest_tombstone_clear_time:
  • 若本地last_full_sync_time < latest_tombstone_clear_time:说明本地缓存可能包含已经被永久清理的删除记录,直接拉取当前用户的全量业务文档覆盖本地缓存,同步完成后更新本地last_full_sync_time为当前时间
  • 若本地last_full_sync_time >= latest_tombstone_clear_time:走增量同步,拉取两类数据:
    • 业务集合中last_modified大于本地上次同步时间的新增/更新文档
    • tombstones集合中delete_time大于本地上次同步时间的墓碑记录,拿到后直接删除本地缓存中对应ID的文档即可
  1. 墓碑定期清理逻辑
    在服务端配置定时运行的云函数,执行周期可设置为30/90天(可根据你的用户活跃特性调整),每次运行时:
  • 清理所有用户tombstones集合中delete_time早于当前时间减去运行周期的墓碑记录
  • 更新对应用户user_sync_meta中的latest_tombstone_clear_time为当前运行时间

适配性验证

完全匹配你的业务需求:

  • 离线缓存能力不受影响:本地始终保留用户全量历史记录,离线状态可正常读写,不影响统计计算逻辑
  • 同步效率高:99%的活跃用户每次打开应用仅走增量同步,仅超过清理周期未登录的用户才需要执行一次全量同步,单用户1万条记录全量拉取体积不足10MB,完全无性能压力
  • 存储空间完全释放:原业务文档删除后立即释放空间,墓碑记录仅保留最多一个清理周期,不会永久占用服务端存储

冲突处理补充

多端同时操作同一条记录时,直接使用Firestore原生事务校验last_modified时间即可,冲突时默认取最新版本的操作结果,符合时间记录类产品的使用逻辑。

内容的提问来源于stack exchange,提问作者Lionel Foxcroft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:15:03