APP下载

基于树自动机的XML过滤技术

2012-07-25段克松施化吉李星毅

计算机工程与设计 2012年3期
关键词:谓词自动机数据流

段克松,施化吉,李星毅

(江苏大学 计算机科学与通信工程学院,江苏 镇江212013)

0 引 言

在XML查询中,如何对大量的XML数据流进行查询匹配是一个关键问题。目前,人们已经取得了一定的成果,如XFilter,YFilter,XPush技术等。但是面对海量XML数据流进行查询处理时依然很难满足实际应用的需求。最近有学者提出利用能够自然处理树状数据结构的树自动机来实现XML查询匹配的方法XEBT[1],提供了一个很好的思路。但该方法存在以下两个问题:①如果系统中有n条XPath查询语句,则转换后系统会存在n个非确定的树自动机;②在XPath表达式与树自动机的转换过程中,把谓词直接转换为树自动机的状态,造成系统运行时对于每个查询都要进行谓词匹配,相对于只在结构匹配成功时才进行谓词匹配效率明显比较低。本文针对上述认识,提出了一种高效的XML过滤技术XTAFilter。该技术具有以下特点:通过构建hash表来存储谓词信息来替代把谓词作为树自动机状态的方法,使得该技术只有在结构匹配成功时,才进行谓词匹配,而不是每次查询都进行谓词匹配,提高了匹配效率;同时利用共享路径构建树自动机,减少了匹配消耗的时间,提高了查询匹配的效率。

1 相关概念

XML(extensible markup language)已成为互联网上数据存储、交换和表示的事实性标准。在具体的XML应用中,查询通常使用XPath(XML path language)语言,通过结构 (路径表达式)和内容 (谓词)来进行信息的查询匹配。XPath是XML数据流查询匹配的基本机制,支持丰富的路径查询特性。它由一系列位置步骤组成,每个位置步骤包括轴、节点测试和零个或多个谓词。轴指定节点间的层次关系,节点由一个元素的名称或通配符 ‘*’(匹配任何元素中指定的测试名称)构成,谓词可以用于处理文档中的元素内容或其它元素引用。由于应用很少涉及到所有的特性,所以讨论基本上都集中在XPath的子集上2-4。本文讨论的定位步骤集合PA为:{/a,//a,/*,//*,[]}。

XTAFilter技术是基于树自动机的。树自动机支持两种执行策略,即自上而下和自下而上。因此存在两种树自动机。区别在于自下而上树自动机是指树语言是从叶子节点开始向下被识别的,而自上而下树自动机是指树语言是从根节点开始向下被识别的。本文以未确定化的自上而下执行树自动机进行讨论,以下统称为树自动机,下面给出其定义。

定义1 树自动机T为四元组T= (Q,F,δ,Qf)。其中F是有序字母表,Q是有限状态集,QfQ是终止状态集,X为变量的集合。δ是状态转移函数集,具有以下的形式

q(f(x1,x2,...,xn))→f(q1(x1),q2(x2),...,qn(xn)) (1)其 中n≥ 0,f∈Fn,q1,q2,...qn∈ Q;x1,x2,...xn∈X。

树自动机T基于有序字母表F。它从根节点开始执行,沿着状态和子项向下转换。当n=0,有序字母集F就只有一个常量a,转换规则式 (1)变为q(a)→a,因此字符自动机可看作树自动机特例。

2 XML查询处理过程

2.1 构造树自动机

对XML数据流进行查询匹配主要是基于路径表达式XPath,而任何一个路径表达式XPath都可以转化成一个等价的正则表达式。根据树自动机理论知,存在一个接受该语言的有限树自动机。本文正是基于以上理论采用非确定树自动机代替XPath实现对XML数据流的导航。

Dan Suciu引入了XPath的树模式概念。给定一个支持{/,//,*,[]}的XPath,可以构建一个等价的树模式,反之亦然。根据树模式思想来构造树自动机是简单而直接的,下面利用一个例子来简要说明XPath树模式到树自动机的构建。

例1:给定XPath的查询Q1=a/b//c [*/d][e],建立与之对应的树模式,并依据树模式的思想构建树自动机,如图1所示。

图1 树模式到树自动机的转换

注意到XML过滤过程是将XML数据流和XPath订购消息进行匹配并转发的过程,在匹配过程中,包含结构部分和谓词部分。因此,在设计XTAFilter过滤算法时需同时考虑结构和谓词的匹配效率对过滤性能的影响。依据树模式把XPath转换为树自动机时把谓词树自动机的状态,造成每次结构匹配时都需要进行谓词匹配。为了减少不必要的匹配,在结构匹配不成功时不再进行谓词匹配,XTAFilter技术利用hash表来存储谓词部分。其存储的数据结构如图2所示。

图2 谓词存储数据结构

2.2 构建共享路径树自动机

用户通过路径表达式XPath来表示他们感兴趣的信息,而用户提交的多个XPath订购表达式中可能存在相同的XPath片段。如果订购表达式从根结点开始具有相同的XPath片段,可以通过合并这些片段来构建一个共享XPath路径树自动机。这样一方面降低系统运行的活动状态,另一方面提高系统匹配效率。如图3所示。

图3 构建共享路径树自动机

XML是一种树形数据类型,而XPath采用了路径表达式的语法,因此对XML数据流进行查询,很自然的方法是基于导航的查询执行策略。即当XML数据以数据流的形式出现时,预先存储的查询语句对XML数据流进行导航,过滤出与之匹配的XML文档。为了以下算法描述的需要给出相关定义。

2.3 算法实现

图3 显示了共享XPath路径树自动机的构建过程。一个圆圈代表一个状态。椭圆表示接受状态。边符号表示输入该符号触发状态转换。根据上图可知,如果将每一个查询都转化为一个树自动机,则系统运行时的状态为14,而通过构建共享XPath路径树自动机,系统的运行状态只有6个。因此,通过共享XPath路径构建树自动机,将可以有效地降低系统运行时的活动状态;同时减少匹配的时间,提高查询匹配的效率。

定义2PX是XPath上的位置步骤转换集合,其形式化定义为

式中:Q——状态集,∑——符号集,元素a∈∑,qi,qj∈Q,f——状态转移函数,a (qi)(*)——状态qi的自反与传递闭包,∑(﹡)——字符集的自反与传递闭包。为了降低系统信息描述和匹配时的复杂度,对位置步骤集合中的//*基本操作,通过与位于其后的定位步骤进行合并来实现:①当 “//*”不出现在表达式末尾时,“//*/a”和“//*//a”都等价于 “//a”;②当 “//*”出现在表达式的末尾时,则可采用 “/*”来取代。

定义3 令Q为状态集,∑为符号集,元素a,b∈∑,f为状态转移函数,状态q,qi,qj,qk∈Q,位置步骤组合转换集合CP为:

为了处理谓词的需要,给出谓词关系集合PQ的形式化定义。

③全面开展监测评价。建成11个坡地径流场、163个观测小区和14个沟道控制站,基本覆盖全市的水土流失监测网络。依托科技部中德合作项目,引进德国先进设备,构建土壤蒸渗仪监测点→坡面土壤侵蚀和平原区监测点→小流域监测→大流域监测构成的监测网络,对降水、径流、泥沙、土壤水分循环、水质水量、生物多样性、水文形态特征等开展监测,及时评估水土保持效益,为生态清洁小流域建设提供科学依据。

PQ= {a,a>const,a>=const,a==const,a<const,a<=const,a≠const}

本文采用基于树自动机导航的方式对XML数据流的进行查询匹配,XML查询处理过程中处理的不是XML文档本身,而是经过解析后的事件流。常用的XML解析模型一有两种:基于DOM解析和基于SAX解析。SAX解析时能够立即进行分析,而不是等待所有的数据被处理完成,对于大量、实时的XML数据流,利用SAX解析是比较合适,因此本文匹配的数据为XML的SAX解析事件流。

为了实现XML数据流的导航功能,首先需要构建树自动机,并对可以合并的XPath片段进行共享路径树自动机的构建,然后才能在树自动机的支持下对XML数据流导航。基于以上分析,相应的构建和导航算法如下。

算法1:XPath与树自动机转换算法TA。

江西茶叶出口企业应该重视品牌的力量,加大品牌宣传力度。企业要加强对品牌理论和实践的研究,积极向外国学习创新的品牌营销模式,学习国外品牌发展的建设经验,尤其是值得借鉴跨国公司成功的经验。企业可以增强与国内其他知名品牌(如黄山毛峰)之间的交流和合作,学习借鉴他们的品牌建设模式,强强联合,共同推动国茶走向世界。企业还可以聘请一些品牌营销和策划的专家以及相关方面的人才进行品牌的国际推广,加强品牌的国际宣传,提高国际市场的知名度。

小心翼翼地沿着走廊寻找,终于找到那扇写着“38”的门。透过门上的玻璃看去,里面的病床上躺着一个穿病号服的少年,他似乎睡着了,脸微微侧向一边,嘴角还有一团显而易见的瘀青。

Return false;

输出:树自动机T= (Q,F,δ,Qf)。

TA (Qn,&Q,&F,&δ,&Qf){

δ=Q=Qf= {},F= {ε};

把Qn第一个查询结点放入集合Qf;

While Length (Qn)>0 {

If存在 字符,属性,数据则加入Q中;

If存在px∈CP,则把相应的推导规则f加入δ中;

统计学分析 采用SPSS22.0软件进行统计学分析。正态分布计量资料以均数 ±标准差 (x±s)表示,组间比较采用成组t检验,组内治疗前后比较采用配对t检验。计数资料以率表示,比较采用χ2检验。以P<0.05为差异有显著意义。

If存在k个孩子轴,则把k元函数f(,…,)加入F中;

If存在 谓词,则把谓词存入hash表PQ;

Length(Qn)--;

}//endl

该算法实现是订购表达式XPath到树自动机的转换,该转换是基于XPath是正则表达式这一事实,通过转化为等价的树自动机来实现的。

3)在加木垫板后,锚杆支护预应力场压应力区峰值和压应力扩散范围都出现明显降低。应力峰值降低38%,-0.10、-0.08、-0.02 MPa等各应力等值面面积平均降低27%。

给定XPath查询集QN= {Q1,Q2,…,Qn}进行匹配,如果存在可以合并的XPath,则执行如下算法。

算法2:共享路径树自动机合并算法XTA。

2)中国女篮比澳大利亚、日本女篮的2分球投篮命中率、内线得分更高,说明中国女篮内线实力较强,但是中国女篮的得分点较少;其他得分技术指标均无显著性差异。

输入:XPath订购表达式集合QN,

输出:树自动机XTA= (Q,F,δ,Qf)。

随着我国国民经济的不断发展,城乡居民生活水平的不断提高,自我保健意识增强,进而消费观念改变,对肉品的需求也发生重大变化,简单的藏羊胴体肉已经很难满足人们的需求,加工精细、精致包装、营养价值高的高质量肉品更受到市场的欢迎。为迎合市场需求,藏羊肉加工企业已经开发出少量迎合市场的精深加工食品,以冷鲜羊肉为代表的深加工产品得到了市场的响应,各种羊肉熟制品、风味小吃市场占有率也逐步上升。

For接收序列Qn的每一个满足该状态的元素;{

XTA=T1;

Whilen>0{

XTAFilter(S,XTA,&RA){

n--;

}//endl

基于树自动机导航的XML数据流匹配,其输入数据为XML的SAX解析事件流,返回为查询结果。匹配过程可以形式化描述为:在XML数据流S之上,对于给定XPath查询集QN= {Q1,Q2,…,Qn}进行匹配,返回解果集RA。如果最终能到达接受状态,则表示该XML匹配某些消费者的订购。下面给出树自动机导航下XML数据流的匹配执行。

算法3:基于树自动机的XML数据流过滤算法XTAFilter。

输入:XML数据流S、树自动机XTA,

输出:匹配结果。

If存在px∈CP,XTA=combined(XTA,Tn);

对于自己,即使别人认为我不合时宜,观念迂腐,思想落伍,被无私洗脑等等;别人总劝我要做一个现代女性,不应该再为儿孙辈而放弃自己的生活,应该实现自我价值……我的心里却很明白,每个人的追求不同,不必走和别人一样的道路。

新建栈T,并在栈顶生成一个空层;

开始解析文档,持续解析XML文档产生事件流;{

If输入的事件流是元素,该元素压入栈中;

If输入的事件流是数据,把该数据压入栈中;

If当前输入的字符可以在触发转化,则从栈中弹出该状态,并把转换后的状态压入栈中;{

If转换后的状态属于终结状态集,则把该结果存入结果集RA;

Else继续执行;

If文档不为空,或者栈不为空继续执行;

直到文档解析完成;

}//endl

食醋酿造中需要加入大量的填充料,它的作用在于疏松醋醅、储存大量空气和空气流通。填充料的存在为醋酸菌细胞的生长提供了吸附载体,为醋酸菌提供了好氧发酵的环境。所以,填充料要求接触面积大,其纤维质具有适当的硬度及惰性。常用的填充料有:谷糠、高粱秸秆、玉米秸秆、玉米芯、多空玻璃纤维等。

谓词的匹配过程是基于结构匹配成功的基础上,通过查询谓词表来进一步的进行筛选查询,如果存在所要的结果,则返回;否则查询失败。本文基于树自动机导航,并对XML数据流的谓词匹配中采用SP方法存储谓词信息。SP谓词匹配法充分利用了查询内部各谓词之间的相关性,使用short-cut策略提高谓词匹配的效率。谓词查询算法PQmatch如下。

算法4:基于树自动机导航的谓词匹配算法PQmatch。

输入:XML数据流S、树自动机XTA、谓词表,

输出:匹配结果 (true,flase)。

花五奇朝乔十二郎看了一眼,低头皱眉想着什么,再看一眼,忽然用兵器指着他,尖声叫道:“花灯节!孙悟空!李六爷!”话音未落,几个纵跃抢到乔十二郎面前,手中利刃兜头砍下。事出突然,除了乔十二郎和老太医,其他人根本没听懂花五奇说的是什么,更不明白他为何向一个观战的孩子痛下杀手。

凤河支流官沟流经东半壁店小流域,是流域内主要河流,流域排水一部分通过农田二支渠、三支渠等农田灌溉和排涝渠系排入官沟后入凤河,部分排水直接排入凤河,部分雨水也排入流域坑塘。

BOOL PQmatch(S,XTA,SP).{

For接收状态结构匹配成功;{

宋代的瓷器与玉器都有用于礼仪活动、观赏品鉴和日常使用等方面,宋代瓷器与玉器的发展,受到整个宋代社会的经济政治和文化思潮的深刻影响,玉文化与瓷文化反过来渗透在宋代社会的方方面面。玉器和瓷器作为宋代社会中两种关乎生活方式又蕴含精神属性的重要器物,呈现出诸多相类似的特质,甚至达到一种超越其他朝代的高度契合状态。

此外,今年农产品产量不高且价格偏低,导致农民收入微薄,即便是种植大户也是依靠国家补贴才能勉强维持。而肥料价格的大幅上涨,势必会影响农民购买肥料的积极性,这让原本就不太明朗的冬储市场雪上加霜。

XTA (QN,&Q,&F,&δ,&Qf){

定义4 ∑为符号集,元素a∈∑,XPath中的谓词集合PQ形式化定义如下

接收满足该状态的步骤step number;

If Qn is match{

If按照step number of SP执行失败,退出;

输入:XPath订购表达式Qn,

If all of Qn is match

Reture true;

}//endl

XML片段<a><b><c></c></b></a>在XTAFilter导航下,匹配用户的订购信息,执行过程如图4所示。

图4 XML查询执行实例

3 实验仿真和结果分析

在Linux环境下构建了仿真实验环境。实验数据采用开放平台NASA (national aeronautics and space administration)XML Project提供的XML数据,数据量约为23M。在对数据的处理过程中,采取对XML数据流单边扫描的方式,特定时间只处理一个解析事件。利用XPath生成器获得不同特性组合的XPath查询集合1K,2K,5K,10K,15K,20K,订购数据的参数为:XPath层次数w=6,谓词族数l=5,XML数据深度h=20。实验平台的配置为HP541(NE808PA)),CPU为Intel酷睿2T5670,主存储器2GB,操作系统是RHEL4。7-i386。

在仿真实验中,主要关注以下性能指标:

(1)平均事件匹配时间。当XML数据流经过时,对于已有的某个订购事件,系统需要消耗多长时间才可以找到所有匹配成功的消息,它反映了过滤技术的时间效率。

(2)系统运行时的活动状态。在匹配过程中,不同的匹配技术在系统运行时的活动状态。需要不同的存储空间,反映了过滤技术的空间状态。

仿真实验主要在谓词和共享XPath方面进行分析与比较。为了评估XML流数据的查询时间,实验中每个算法皆执行30次,并将查询时间取平均值计算。图5和图6记录了试验的结果。

图5显示了XTAFilter技术及XEBT (XPath evaluation based on tree automata)技术在相同条件下匹配时间复杂度方面的比较。在试验中,XTAFilter技术集合了共享XPath路径和树自动机的优点,XML数据流查询的时间效率总体上明显比XEBT有一定的提高。这是因此XTAFilter技术采用合并相同订购路径表达式进行树自动机重构并对谓词采用hash表进行存储,减少了重复匹配和不必要的匹配,提高了查询效率。图6显示了XTAFilter及XEBT技术在相同条件下匹配空间复杂度方面的比较。在实验中,XTAFilter技术优于XEBT,这是因为XTAFilter技术采用共享XPath片段构建树自动机,比单纯的依靠树模式构建树自动机在空间状态上有所的提高。这是因为XTAFilter技术通过对可以合并的XPath片段进行重构,减少运行时的活动状态,系统在运行时占用空间更少。

综上所述,XTAFilter技术在查询效率上比XEBT机有明显的提高,系统在运行时的活动状态也有明显的减少,因此XTAFilter技术在一定程度上提高了XML数据流处理性能。

4 结束语

XML在多种领域中已得到广泛的应用。由于XML是一种半结构化数据,对其进行有效管理在技术上带来了新的挑战。对XML数据管理的研究既是一个重要课题,又是一项具有广泛应用前景的技术。本文根据树自动机查询遍历的特点,针对用户多个订购表达式中存在相同的XPath部分的特征,对查询中可以合并的XPath片段进行合并。减少了重复查询的次数,提高了查询效率。下一步的工作将对XML查询中路由协议,XML查询的安全性等问题进行研究。

[1]GAO Jun,YANG Dongqing,TANG Shiwei,et al.Tree automata based efficient XPath evaluation over XML data stream[J].Journal of Software,2005,16 (2):223-232 (in Chinese).[高军,杨冬青,唐世渭,等.基于树自动机的XPath在XML数据流上的高效执行 [J].软件学报,2005,16(2):223-232.]

[2]GOU Gang,Chirkova Rada.Efficient algorithms for evaluating XPath over streams[C].Beijing:International Conference on Management of Data,2007:269-280.

[3]XIN Yefei,HE Zhen,CAO Jinli.Effective pruning for XML structural match queries [J].Data & Knowledge Engineering,2010,69 (6):640-659.

[4]ZHANG Xiaolin,LI Honghui,HAN jianfeng.Research on recursive query over XML data stream based on pushdown automation [J].Computer Engineering & Design,2010,31 (4):763-766(in Chinese).[张晓琳,李宏辉,韩剑锋.基于下推自动机的XML数据流递归查询研究 [J].计算机工程与设计,2010,31 (4):763-766.]

[5]Chien Pingchou,Kuen Fangjea,Heng Hsunliao.A syntactic approach to twig-query matching on XML streams [J].Journal of Systems and Software,2011,84 (6):993-1007.

[6]Sayyed Kamyar Izadi,Theo Harder,Mostafa S.S3:evaluation of tree-pattern XML queries supported by structural summaries[J].Data & Knowledge Engineering,2009,68 (1):126-145.

[7]LEE Hyunho,LEE Wonsuk.Selectivity-sensitive shared evaluation of multiple continuous XPath queries over XML streams [J].Information Sciences,2009,179 (12):1984-2001.

[8]Maged E Sayed,Katica Dimitrova,Elke A Rundensteiner.Efficiently supporting order in XML query processing [J].Data & Knowledge Engineering,2005,54 (3):355-390.

[9]CHEN Qun,Andrew Lim,Kian Win Ong,et al.Indexing XML documents for XPath query processing in external memory[J].Data & Knowledge Engineering,2006,59 (3):681-699.

[10]CHEN Zhiyuan,Gehrke Johannes,Flip Korn,et al.Index structures for matching XML twigs using relational query processors [J].Data & Knowledge Engineering,2007,60(2):283-302.

[11]MIN Junki,LEE Jihyun,CHUNG Chinwan.An efficient XML encoding and labeling method for query processing and updating on dynamic XML data [J].Journal of Systems and Software,2009,82 (3):503-515.

[12]MIN Junki,Park Myung Jae,CHUNG Chinwan.XTREAM:An efficient multi-query evaluation on streaming XML data information sciences[J].Information Sciences,2007,177 (17):3519-3538.

[13]MIN Junki,CHUNG Chinwan,Kyuseok Shim.An adaptive path index for XML data using the query workload [J].Information Systems,2005,30 (6):467-487.

[14]GU Jinguang,XU Baowen,CHEN Xinmeng.An XML query rewriting mechanism with multiple ontologies integration based on complex semantic mapping[J].Information Fusion,2008,10 (9):512-522.

[15]Prakash Ramanan.Worst-case optimal algorithm for XPath evaluation over XML streams [J].Journal of Computer and System Sciences,2009,75 (8):465-485.

猜你喜欢

谓词自动机数据流
{1,3,5}-{1,4,5}问题与邻居自动机
被遮蔽的逻辑谓词
——论胡好对逻辑谓词的误读
汽车维修数据流基础(下)
党项语谓词前缀的分裂式
一种基于模糊细胞自动机的新型疏散模型
一种基于模糊细胞自动机的新型疏散模型
广义标准自动机及其商自动机
一种提高TCP与UDP数据流公平性的拥塞控制机制
也谈“语言是存在的家”——从语言的主词与谓词看存在的殊相与共相
基于数据流聚类的多目标跟踪算法