基于MQTree的多XML视图查询重写方法
1. 问题定义
在处理XML数据库查询时,我们面临的问题是:给定一个XML数据库T,以及一组使用XPath {//,/,*,[]} 定义在T上的预定义物化视图V,如何高效地为XPath {//,/,*,[]} 查询q生成关于视图集V的最大包含查询重写计划?
2. MQTree的构建
为了提高多XML视图查询重写的效率,我们将XML视图树模式组织成一个MQTree(Multiple Queries tree),具体构建方式如下:
- 给定一个定义在同一XML文档上的XPath树模式集Q = {q1, … qn},为qi(1 ≤ i ≤ n)中的每个节点分配一个唯一的id[qi],并使用isMain来指示该节点是否在主路径上。
- MQTree T = (V, E, r) 的根节点r初始化为IDS[r] = {id[q0]} ∪ … {id[qn]},表示r是qi(1 ≤ i ≤ n)根节点的映射节点。
- 如果MQTree中从根节点到节点n的路径与qi中从根节点到节点m的路径等价,则IDS[n] = IDS[n] ∪ {id[qi]},n是m的映射节点;否则,将m添加到T中节点k的下方,k是qi中n的父节点的映射节点,且IDS[m] = {id[qi]}。
下面是一个MQTree构建的示例:
假设有两个XPath树模式p1和p2,通过合并它们的共享路径可以得到MQTree p3。单(双)线表示节点之间的PC(AD)关系。可以看到,MQTree的根节点是由p1和p2的根节点合并而来的。例如,p1中的节点q3和p2中的节
超级会员免费看
订阅专栏 解锁全文

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



