论文部分内容阅读
随着越来越多的XML数据被存储到数据库中,XML数据的查询效率显得越来越重要。XML查询效率与很多因素有关,其中一个重要的因素就是查询本身的复杂程度和大小。一般来说,查询越复杂,查询规模越大,查询响应时间越慢。因此,如何在保持查询原意的同时降低查询规模,是一个非常有价值的研究问题。
本文研究了XML查询的最小化问题,即如何在保持查询原意的基础上将查询规模降至最小的问题,本文对于XML一个常用片段上的查询的最小化做了一个比较系统而全面的研究。
文章首先定义了一类查询,称为树模式查询(TreePatternQuery,TPQ)。这类查询定义在一个常见的XPath片段之上,该片段含有child轴、descendant轴、descendant-or-self轴、节点测试和谓词,在后来的扩充当中,还使得谓词中能够包含选择条件和连接条件,并可以具有多个输出节点。定义在这个XPath片段之上的树模式查询能够表示大部分常见的XPath查询,还能表示很多的XQuery查询的主干,因而具有一定的代表性。
不同的树模式查询具有不同的特征,最小化的途径和方法也不一样。本文采用两种方法来对树模式查询进行最小化,分别是基于删除的方法和基于改写的方法,这两种方法互为补充,可以对大部分树模式查询有效地进行最小化。
首先研究了基于删除的查询最小化策略,这种策略基于模拟的概念,通过删除查询中的冗余节点来达到最小化的目的。文章先讨论了不考虑完整性约束时的最小化问题,提出了具体的复杂度为P算法。接着引入四种常见完整性约束:孩子约束、后裔约束、双亲约束和兄弟约束,当约束存在时,查询往往能够进一步最小化,但是问题更加复杂。本文利用两种技术来处理约束,即chase和增强模拟,通过对约束的几种典型组合进行分析,总结出了关于约束处理的一些启发式结论,而且得出,无论约束如何存在,所研究片段上的树模式查询都可以在P的时间内最小化。
然后研究了基于改写的查询最小化策略。这种策略针对一类特殊的树模式查询,即谓词中含有节点标识连接条件的树模式查询,该类查询中查询条件往往可以进一步简化,但是通过基于删除的最小化策略无法最小化。基于改写的最小化策略通过改写和合并查询中的某些条件,来消除查询中的冗余,能够有效对这类查询进行最小化。提出三个步骤来对查询进行改写:构造关系图——推理——重构,并讨论了实现时的算法问题。对于这种策略,也讨论了约束的应用,提出利用路径约束来辅助改写,具有很好的效果。
最后研究了常见完整性约束的产生问题,这个问题是查询最小化问题及很多其它问题的基础和补充。提出模式蕴含的概念,使得约束可以从模式中抽取,并针对常见的五种完整性约束研究了从模式中抽取约束的算法及其复杂度,并进行了实验测试,研究显示,这些算法都在P时间内运行,实验结果也证实了算法的效率。
总而言之,对本文定义的这类TPQ查询,其最小化问题属于P,本文的研究扩展了这一类(最小化的复杂度属于P)问题的范畴,并以很多具体的算法丰富了其研究成果。我们计划对XQuery的查询优化做进一步地研究。