论文部分内容阅读
XML是标准的通用标记语言,它的半结构化特性、良好的可扩展性、自描述等特性,使它成为数据交换事实上的标准。XML的查询语言主要有XPath和XQuery两种。
传统的数据处理方式中数据源多是数据库或者文件,查询系统在对数据进行内存建模后进行处理。随着Web的发展,数据在Web上的交互不断增加。使用XML语言作为中间语言能够解决Web中异构系统之间的数据交互问题,同时也带来了新的挑战。因为Web中大量XML数据的存在方式是数据流,而传统的数据查询主要是数据库查询技术,这些技术并不适用于XML流数据的查询,需要一套新的查询解决方案来处理XML流查询的需求。
本文的目标是研发出一个功能强大的、能在XML流上执行多XQuery查询的查询引擎XSIEQ-XQ,它是本实验室正在研发的XSIEQ(XML Stream Query with Immediate Evaluation)系统的一部分。XSIEQ-XP是XSIEQ中已研制的、能对XML流进行大量XPath式同时查询的XPath查询引擎。XSIEQ-XQ的研发充分利用了XSIEQ-XP的已有工作成果,开发出的原型系统能够兼容XQuery和XPath查询。
XOuery查询分为预处理,查询处理和后处理三个阶段。预处理阶段对查询条件进行简化;查询处理阶段进行XPath查询;后处理阶段进行XQuery结果构造。,本文的研究工作集中于预处理和查询处理两个阶段,主要的工作和成果有:
1、追踪XQuery标准的发展,对XQuery语言进行深入的分析与研究,找到了在现有的XPath查询引擎XSIEQ-XP的基础上扩展支持XQuery查询的途径。
2、提出了一套查询改写规则,通过改写提高了查询效率:利用DTD对FLWOR表达式中的XPath式进行具体化,定义了一套改写规则,改写FLWOR表达式,消除表达式中的冗余查询、将查询条件像更有利于系统查询的方向变换。
3、提出并设计、实现了一种高效的XML流查询算法:定义了扩展的XSIEQ机E-XSIEQ(Extended XML Stream Query with Immediate Evaluation),并在E-XSIEQ基础上为XQuery查询提出并实现一种流查询算法TreeBuf。TreeBuf有效地处理了前缀XPath式的查询问题,同时给普通XPath查询提供了优化的可能性。
4、作为主要成员,设计和实现了XSIEQ-XQ原型系统:它用Java编写,系统支持嵌套、order by子句的多关键字排序等XQuery查询的复杂特性。
5、通过实验说明了系统的高效性:优化前后的性能对比实验说明了查询条件改写对系统性能的帮助,和XSIEQ-XP的性能对比实验说明了系统能有效地处理XML数据流。