论文部分内容阅读
XML数据格式因为其固有的优点:可扩展性、内容和形式相分离、便于不同系统之间信息的传输等,在信息管理、电子商务、移动通信、电子文档交换等诸多领域得到了广泛的应用,已然成为新一代Internet上数据表示、传递和交换的标准。随着互联网的飞速发展,很多基于网络的应用系统,如网络日志的信息采集与分析、股票技术分析、互联网的安全监控、位置信息的监测等实时系统中出现了大量的随时间的延续而无限增长的动态数据集合,这些数据被称为流数据,而XML流数据是这种流数据的常见表现形式。对于流数据,我们无法预知其数据的边界及大小,则对流数据进行全部存储就是不切实际的。而传统的XML数据库查询机制对于高速的、有序的、实时的、只单遍扫描的XML数据流已然不再适用,这无疑是给XML流的查询处理提出了新的挑战。因此,怎样高效地对这些流数据进行查询、过滤和解析是目前XML数据流研究中的热点话题。自动机是由输入驱动的计算模型,与XML流数据在线到达并产生SAX解析的事件相吻合;而在以往的XML数据查询处理的研究中,也已有不少利用自动机来处理XML数据的方法。近些年在处理XML流数据的研究中使用的宏森林自动机是一种以XML森林作为输入、XML森林作为输出的有限自动机,其查询处理的性能也已达到了较高水平,也比较适合用来处理XML流数据。XML数据流的查询问题主要归结到XPath的查询,因此自动机技术自然而然地被人们运用到针对XPath的查询处理中,利用自动机来对XPath表达式建模。本文提出一种在多核处理器上基于宏森林自动机来并行处理XPath查询的方法,充分利用了用宏森林自动机处理XML流的高性能优势以及多核处理器的特点来提高查询效率。该方法根据XPath查询表达式生成一个查询自动机,流经解析器的XML数据流转化为一个个的事件流,自动机会以这些个事件流作为输入,然后将根据不同的输入事件在各个状态之间转换,并且将查询中出现的不同任务分配给不同的线程去执行,一旦数据流的某一部分完全匹配既定的XPath查询表达式,自动机就输出查询结果。该方法支持的XPath范围包括PC轴(子女查询child)、AD轴(子孙查询descendant-or-self)以及任意多个并列谓词和任意层次的嵌套谓词,实验表明这种XML流数据的并行查询方法既能支持复杂的XPath查询,同时具有良好的执行效率。