论文部分内容阅读
随着XML日益普遍的应用,如何快速准确地访问XML文档中的数据已成为急需解决的关键问题,这涉及到对XML查询语言XQuery实现的优化研究。目前可以通过多种途径对XQuery进行优化,如:执行策略、物理优化、代数优化等。执行策略主要是根据路径条件选择遍历节点的方式,如自底向上或自顶向下的遍历策略,以减小遍历节点的代价。物理优化主要是采用高速缓存来缓冲CPU运算与内存访问之间的差距,从而达到整体速度的提高。代数优化主要是基于XML的数据模型和传统的逻辑操作对路径表达式进行优化,从而达到优化XQuery的目的。 当前已存在多种基于索引的XQuery实现优化的方法,如Lore系统中的Dataguide、XISS、DBXI等。Dataguide对XQuery中经常出现的“∥”操作没有提供特殊的支持,并且只记录了从文档根节点出发的路径,从而丧失了许多优化的可能性。在XISS系统中,对于复杂的路径表达式在XML数据树中要搜索很多空间,处理每个XML文档所需的结构连接运算的次数至少有N—1次,加大了查询的复杂度,从而影响查询效率。DBXI是一种基于DTD的XML索引方法,当DTD中存在环路时搜索空间会很大。 本文首先分析这些优化方法,指出他们的优缺点,并在此基础上引入一种基于R树的索引机制,解决了快速判断XML文档中节点间祖先、子孙关系的问题。将XML文档以R树的形式进行存储,对树中的节点建立索引。在查询时将节点关系的判断转化为节点域的包含关系的判断,同时利用R树范围查询快速、高效的特征提高查询效率。另外还引入了索引关键字的分割表和最小分割表跳过与查询不相关的节点,减少了磁盘I/O次数,进一步提高查询效率。 在本文的最后,我们还给出使用基于R树索引对XQuery的实现进行优化的实例,并针对存在的一些问题,提出今后进一步的工作。