论文部分内容阅读
随着Web应用的快速增长,XML数据逐渐成为数据存储的一种新的标准。作为XML的标准查询语言XQuery,其处理技术也得到了国内外研究人员广泛关注,形成了两套相对成熟查询处理方式(基于导航的与基于代数的处理方法)。最近W3C提出了XQuery更新操作的语言子集XQuery/Update,但关于XQuery/Update处理技术的研究还不是特别多,目前的一些研究工作主要讨论基于XQuery导航式处理基础上处理XQuery/Update。而XML代数处理相对导航处理具有一次处理多结点,可优化,效率高的特点。本文将讨论基于XQuery代数处理基础上有效处理XQuery/Update,通过扩展现有XML代数操作符来有效处理XQuery/Update,同时也提出XQuery/Update代数查询计划的生成算法。 XQuery/Update除了定义了更新存储在数据库的XML数据的语言外,还定义了一种特殊的查询,Transform查询。Transform查询类似于关系数据库中的假设查询,也可以表示成假设查询的一般形式:“Q when{U}”,即查询Q的查询结果是假设数据库执行了{U}更新后的结果,而U更新操作实际不修改数据库的状态。Transform查询除了支持在XML的假设查询的功能外,还可以用于模拟更新XML的虚拟视图,以及访问控制等。 Transform查询需要拷贝数据库中的结点,对拷贝的结点执行更新操作,从而不影响数据库的状态,但Transform查询通常需要拷贝与更新大量与查询结果无关的结点。如何减小拷贝与更操作操作的代价是Transform查询处理优化的关键所在。本文讨论了基于XQuery代数处理Transform查询的优化方法,提出了(1)Transform查询等价转换,将Transform查询转换等价的XQuery查询;(2)“Lazy”优化方法来从而避免拷贝,更新与查询结果无关的数据;(3)”混合”处理方法;三种Transform查询的优化处理策略,并通过实验进行了验证与性能比较。