论文部分内容阅读
近年来,随着Internet的迅速发展,XML已经成为网络上数据描述和数据交换事实上的标准。网络上信息的本质特性和XML内在的灵活性,使得XML非常适合用来作为网络上数据的载体。因此,人们提出了多种XML数据的存储模型,同时也提出了相应的XML数据查询方法,用于高效地在大量的XML数据中获得有用的信息。作为查询处理的重要组成部分,查询优化技术往往是影响查询效率的关键因素,然而人们在传统的关系数据库中已经运用得相当成熟的查询优化技术,在面对XML数据的时候却遇到了不少困难,主要表现为这些针对关系数据的查询优化技术无法处理包含在XML数据中的结构信息。因此,XML数据的查询优化技术成为了一个新的研究热点。
本文在回顾了现有查询优化技术的基础上,提出一套基于代价估算的XML查询优化策略。XML查询处理中一个关键而频繁的动作是结构连接,同时也是查询处理过程中最耗时的操作之一,因而预先估算结构连接的代价并从中选择一条代价最低的执行路径,是XML查询优化的目标。本文首先提出一种能快速捕捉XML节点包含关系的层次编码,在该层次编码的基础上设计了一个用于快速估算结构连接结果集大小的算法,并根据不同查询模式的特点,讨论了该算法的实现思路。该算法能对常见的包含关系查询(包括父子关系和祖先-后代关系)作出准确估算,同时能支持现有研究很少涉及的顺序关系查询。在该算法的基础上,本文从CPU运算和I/O访问次数等两方面分析了XML查询处理代价的计算模型,并进一步研究了利用估算结果生成查询计划的方法和思路。
最后,本文给出了一个原生XML数据库系统原型XSQS(XML Storage and Query System)的查询处理模块的具体实现。针对XSQS的查询处理模块的具体实现,本文给出了在XSQS中生成层次编码以及利用层次编码进行代价估算的实现方法,并通过实验测试了基于层次编码的代价估算算法在内存消耗、编码构造时间以及代价估算时间等方面的实际性能。初步实验表明,基于层次编码的代价估算算法在上述方面具有良好的表现,适合用于XML查询优化。