【发布时间】:2021-09-21 03:11:24
【问题描述】:
假设我有一个包含数万个文档的集合,我将整个集合存储在客户端的缓存中,以避免每次打开应用程序时进行大量不必要的读取。要获取最新的内容,客户端只需要在上次获取之后查询所有具有last_modified 时间的文档。这在创建或更新集合中的文档时非常有用,但是当您想要删除某些内容时会发生什么?如果一个客户端将它从数据库中删除,那么其他客户端将永远不会意识到它丢失了,如果您添加一个 deleted 字段,那么它将永远占用服务器上的存储空间以及曾经获取它的每个客户端。
有什么技术可以处理这种事情?如果有必要解决这个问题,我愿意对我描述的架构进行重大更改,所以我更喜欢“重新开始并像这样做”的答案,而不是“这是不可能的”。我考虑过在添加新内容而不是创建新内容时重用已删除的文档,但这仍然意味着数据库永远不会缩小。
总的来说,我的应用的要求是:
- 我需要以某种方式进行缓存,因为我有太多文档需要不断阅读它们,而且离线支持很重要
- 我需要能够添加、编辑和删除文档,以便多个客户端可以有效地获取这些更新,并且删除文档可以释放空间
编辑:我用来提高查询性能的方法来自this page 底部的文档。我正在制作一个时间跟踪器,其中每个活动都是一个非常轻量级的文档(
【问题讨论】:
-
我认为article 可能会有所帮助。