论文部分内容阅读
XML文档具有比一般半结构化数据更多描述信息的能力和手段,因此XML使得网络在其应用方面体现出强大的功能和灵活性。由于网络中出现了XML数据流,针对它的查询和处理成为了首先要解决的研究课题。本文是基于Hole-Filler模型,对XML文档剪切策略以及查询框架提出的XML分片数据流查询处理研究。
由于数据流的不易预测性、无界性、多样性等特性,使得数据流很难同步。为了达到同步的效果,并且满足数据应用中的时实性以及服务器对数据的重发等要求,在传统的数据流管理系统的体系结构基础上,产生了新的基于分片的数据流广播模型XstreamCast。在这个模型中,服务器对数据流进行无序广播,为了记录每个分片的相关性,Leonidas Fegaras等人提出了Hole-Filler模型(即基于剪切的XML数据流模型)。在模型中,filler所对应的唯一标识ID能够记录每个片段的相关性。首先参考了DP分片规则的算法。该算法的主导思想是将XML文档树中每层扇出大的非叶子节点作为一个片段进行剪切。第二种分片方法叫SP算法,它摒弃了一开始就生成XML文档树的做法,采取了在SAX接口中将文档进行大块剪切,在每一块文档中对进行直接分片的方法。实验结果表明SP算法对宽树型文档的剪切性能最好,而且在增大分片粒度的同时,该算法也能保证管道的传输不受此变化的影响。
针对其中的SP算法生成的大量分片,在客户端又提出了几种查询框架。 对XML流数据处理提出了一个查询框架XFrag。在XFrag中,框架最大的优点是能够处理XQuery和节省内存。但是XFrag的管道处理形式在维持关联表的信息时仍旧会消耗掉大量内存。而且调度操作符也会增加查询的处理时间。在相邻的操作符中产生依靠性的时候它无法避免多余的操作符的大量操作。所以我们提出tid树并且在其上通过消除多余的节点达到对tid树的优化。依据优化的tid树,提出了XFPro查询框架,该框架可以更好的处理查询,节省内存。试验结果表明XFPro在处理时间和内存上都比XFrag有效。
然而,无论是XFrag还是XFPro,通过Hole-Filler模型里的简单编码方式filler id和hole id的匹配来处理查询容易导致查询阻塞。这种编码依据的是先序遍历文档得到的值,它可以直接找到两个分片之间的父子关系,但是却不能直接找到两个分片的祖先后代关系。这是XFPro处理查询的时候,无法加速查询处理的主要原因。因此我们采用了范围编码的方法将其应用到Hole-Filler模式中。并且提出了一系列技术来优化查询计划包括线性模式优化,TWig模式优化和嵌套模式优化。这些技术应用到XFPR(XMLFragment Processor with Region code)的算法中,减少了大量的冗余操作符,进而在查询过程中操作符可以跳过大量相关分片的处理达到加速查询处理的目的。最后,为了证明这个技:术的有效性,我们做了大量的试验。实验结果表明,XFPR算法可以极大地提高杏询效率。