物化视图通过将预计算的结果保存下来,能极大地减少查询时候的计算开销,提高查询效率。本文主要介绍物化视图的更新算法的基础框架,即给定一个物化视图的定义,推导出计算物化视图的变更的执行计划。
一些定义
关系代数运算符定义
我们首先定义一些关系代数运算符,其中这些运算符假设的是bag模型,而不是set模型,即一个relation里的tuple是可以重复的。
上述运算符的具体含义可以我们通过下面的式子来定义,其中代表在中出现的次数:
物化视图表达式
对于一个物化视图和事务,我们是要求得如下的等式:
其中 表示使用之前的数据库的状态计算出来的新的的值,其中表示删除的值,表示增加的值。由于这样的表达式可能有很多,1中定义了2个性质:
更新算法
在1中作者提出了change propagation equation:
根据这个等式,1和2中作者提到了递归计算视图变更的方法:
其中,
参考文献
- Griffin, Timothy, and Leonid Libkin. "Incremental maintenance of views with duplicates." Proceedings of the 1995 ACM SIGMOD international conference on Management of data. 1995.
- Quass, Dallan. "Maintenance expressions for views with aggregation." (1996).
- Colby, Latha S., et al. "Algorithms for deferred view maintenance." Proceedings of the 1996 ACM SIGMOD international conference on Management of data. 1996.