数据缓存、查询反转与 SQL 数据库的应用
1. 缓存与集合
事实查询的结果总是集合,它们不强制排序,也不允许重复。因此,由查询生成的任何缓存或视图的核心都是一个集合。虽然可能会在此集合上应用排序或通过聚合函数进行投影,但起始的是无序的、不同事实的集合。
只要缓存或视图保留事实集合,就能轻松防止将每个潜在变化都视为实际变化的假设。当反向操作报告引入的事实添加了一组结果时,缓存只需执行集合并集操作,忽略集合中已有的结果,仅添加真正新的结果。同样,处理删除结果的反向操作时,缓存执行集合差集操作,仅删除集合中原本就有的结果。
创建视图时,人们可能会简单地跟踪投影的 DOM、XAML 或其他视觉元素。如果缓存的用户只对某些事实的可变投影感兴趣,而不是原始的不可变结果本身,那么缓存似乎只需要存储可变投影。然而,解决缓存失效问题的最简单方法是保留导致投影的集合。响应查询反向操作时,执行集合并集或差集操作,然后投影已更改的部分。
操作步骤
- 添加结果 :
- 接收反向操作报告的添加结果集合。
- 对缓存集合和添加结果集合执行并集操作。
- 忽略缓存集合中已有的结果,仅添加新结果。
- 删除结果 :
- 接收反向操作报告的删除结果集合。
- 对缓存集合和删除结果集合执行差集操作。
- 仅删除缓存集合中原本就有的结果。
超级会员免费看
订阅专栏 解锁全文
1050

被折叠的 条评论
为什么被折叠?



