admin 管理员组文章数量: 1086019
2024年3月10日发(作者:获取resultset对象第一行数据)
Computer Engineering and Applications计算机工程与应用
XML数据流上查询优化算法
基于LazyDFA的XPath在
张晓琳,崔敏,谭跃生
ZHANG Xiao—lin,CUI Min,TAN Yue—sheng
内蒙古科技大学信息工程学院,内蒙古包头014010
Information Engineering College,Inner Mongolia University of Science and Technology,Baotou,Inner Mongolia 014010,China
E—mail:btcm45@yahoo.eom.cn
ZHANG Xiao—lin,CUI Min,TAN Yue-sheng.LazyDFA based XPath query optimized algorithm over XML data stream.
Computer Engineering and Applications,2008,44(28):125-127.
Abstract:This paper gives a solution based on lazyDFA technology and presents the optimized algorithm which aims at the
XPath query processing and query optimization problem over XML data stream.Shared NFA state table,which divides the states
in NFA into two sets,they are shared set and exclusive set.By this algorithm we can reduce the memory usage of lazyDFA.
Another optimizational algorithm adds a state transition table in lazyDFA structure,which can improve lazyDFA query speed.
The experimental results show that the method is superior to the traditional algorithms in the impkmentati0nal eficiency and f
spacial cost.
Key words:XML data stream;XPath;lazyDFA;query optimization
摘要:针对XML数据流上XPath查询处理及查询优化问题,给出了一种基于lazyDFA技术的解决方案,并提出了优化算法。共
享NFA状态表,通过将NFA中的状态分成共享和独享两个状态集来降低lazyDFA的内存使用量;建立状态转移表优化算法通过
在lazyDFA状态结构中增加一个状态转移表,来提高lazyDFA的查询速度。实验结果表明,提出的方法能够在执行效率和空间代
价方面优于传统算法
关键词:XML数据流;XPath;lazyDFA;查询优化
DOI:10.3778/j.issn.1002—8331.2008.28.042 文章编号:1002—8331(2008)28—0125—03 文献标识码:A 中图分类号:TP3l1.13
1引言
随着XML成为Interact环境中的数据表示和交换的标准,
出现了许多基于XML数据流的应用,如:基于内容的XML路
是基于确定化自动机的,利用支持表达路径之间AND/OR关系
的AFA解决了NFA的表达能力的问题,可提高系统的查询效
率,但也同样面临着指数级别的空间代价问题。
由、信息的选择传播(SDI)I”、股票行情等。这些应用的普遍需求
是在不问断的XML数据流上执行大量的XPath查询。
xPathl2提供了一种XML文档选定部分的定位及导航的方 l
本文应用lazyDFA及其优化技术来解决XML数据流上的
XPath查询问题,实验结果表明,该方法可以有效地处理XML
数据流上的XPath查询。共享NFA状态表优化算法将NFA状
态分成共享和独享两个集合,共享集合是由NFA状态中那些
具有自循环边的状态构成的,那么不具有自循环边的状态就构
法,定义了如何在XML文档中精确定位和匹配XML元素节
点。根据XPath语法,任意一个XPath路径表达都可以转化成
一
个正则表达式,依据自动机理论,则必然存在一个接受该语
YFilterI:1根据XPath构造了NFA,它减少了不同查询处理
言的有限状态机(Finite State Machine,简称FSM)。
成了独享集合,在这两个集合上分别执行不同的转移算法,得
到最终结果。针对该优化算法降低空间消耗是以查询速度为代
中的重复计算,能高效地处理不包含f『1)的XPath。xtrieHJ是对基
于NFA查询处理的一种扩展,它减少了对元素输入序列可能
响应的查询处理器的数量,从而提高了处理效率。Dan SueiutsJ
根据XPath构造了NFA,并在NFA之上执行确定化,这种方法
价的缺陷,提出了建立状态转移条件表的优化算法,该优化算
法是对共享NFA状态表优化算法的进一步改进。通过在
lazyDFA的状态结构中增加一个状态转移条件表,避免为了不
需要的事件而去查找NFA状态表这种情况的出现,从而提高
lazyDFA的查询速度。
可能导致相对于查询数目指数级别的空间复杂性。XPush ̄61也
基金项日:国家社会科学基金(the National Social Science Foundation of China under Grant No.07XTQ003);内蒙古自然科学基金(the Natural
Science Foundation of Inner Mongolia of China llnder Grant No.200508010808)
作者简介:张晓琳(1966一),女,博士,教授,研究方向:对象数据库、XML数据处理;崔敏(1974一),女,硕士研究生,研究方向:XML数据流;谭跃生
(1959一),男,教授,研究方向:数据库理论与技术。
收稿日期:2007—11-16 修回口期:2008一O1—28
126 2008,44(28) Computer Engineering and Applications计算机工程与应用
件有:startDOCUment()、startE1ement()、endE1ement()、endDocu—
2 lazyDFA的优化算法
2.1 NFA的构造
根据XPath语法和自动机理论,必须存在一个接受XPath
查询语言的有限状态机(FSM)。因为XPath路径表达式中存在
ment(o lazyDFA的数据模型及构造算法如下。
数据模型如图2。
DFA状态DVertexlnfo
图1 NFA的数据模型
if(stack.top.satisifed)
get dest,push dest;
算法1 XPath表达式的NFA构造。
输入:XPath表达式xpath
输出:NFA状态集合
(1)new current;
(2)NFA.add(current);
else
get(NFAstate table);
DFA.state=m0ve(NFAstate table.state,qName);
push(DFA.state)l;
endElement(String qName)
{pop(statck.top);)
endDoeument()
(3)if(XPath表达式的前缀=“//”)
new next,next自反性=true;
new edge(e,next),current.edgeList.add(edge)
clear stack;}
NFA.add(current),current=next,new next;
lazyDFA的大小是由两个因素决定的,一个是lazyDFA的
状态数,另一个是lazyDFA的每个状态对应的NFA状态集合
的大小。其中lazyDFA的状态数不会随XPath表达式的数量而
发生变化,它只与XML文档的结构有关;而lazyDFA的每个状
态对应的NFA状态集合的大小随XPath表达式的数量呈线性
增长,所以lazyDFA的大小就会随着XPath表达式的数量呈线
(4)if(XPath表达式的前缀是“/”)
new edge(XPath node,next),current.edgeList.add(edge);
NFA.add(current);
NFA的不确定性决定了NFA中的一个状态在同一个状态
转移条件下会发生不确定的状态转移,即目的状态不确定,这
对于海量的XML数据流上的XPath查询来说,NFA的执行效
率会随着XPath表达式数量的增加而下降。将NFA确定化,产
生与之相等价的确定性自动机(Deterministic Finite Automata,
简称DFA),可唯一确定自动机的目的状态,但DFA的状态数
随XPath表达式中所含…//’路径关系和“ ’通配符的数量呈指
数级增长,DFA的执行效率下降。
性增长。因此为了降低lazyDFA处理XML数据流上大量XPath
表达式的内存消耗,需要对lazyDFA的构造算法进行优化。
2.3 lazyDFA构造算法的优化
2.3.1共享NFA状态表
lazyDFA的每个状态对应的NFA状态集是影响lazyDFA
大小的主要因素,所以减小NFA状态集的大小可减少lazyDFA
的内存使用量。
在共享NFA状态表优化算法中,将lazyDFA状态对应的
NFA状态集中的状态分成两个集合:一个是共享状态集合,一
个是独享状态集合。共享状态集合包含的是NFA中那些具有
自循环边的状态,那些不具有自循环边的状态就构成了独享状
态集合。如果一个lazyDFA状态的NFA状态表里包含了共享
状态集合,那么这个集合将存在于该lazyDFA状态的所有后代
lazyDFA是NFA在运行阶段生成的,lazyDFA的状态数与
XPath表达式数量无关,只与XML文档的结构有关,因此应用
lazyDFA处理XML数据流上的XPath查询时,lazyDFA的状态
数不会随XPath表达式的数量呈指数级增长,执行效率也不会
随XPath表达式的数量而下降。
2.2 lazyDFA的构造
lazyDFA是在运行阶段由NFA惰性地构造。lazyDFA的一
个状态对应 FA的一个状态集合,lazyDFA的状态转移是由
状态的NFA状态表中,这是因为共享状态集合中的状态的转
移条件是通配符“ ’。
例1 XPath表达式Q=la/Ibl*/d/e,根据Q构造的NFA和
SAX解析器解析XML文档产生的事件来触发的,包括的事
张晓琳,崔 敏,谭跃生:基于LazyDFA的XPath在XML数据流上查询优化算法
DFA如图3所示。状态s2是NFA中具有白循环边的一个状
态,它构成了NFA的共享状态集shared=set={S2},NFA中其余
状态构成了NFA的独享状态集exclusive= ̄et={SO,S1,53,s4,
55,s6)。DFA状态{s1,52}包含了共享状态集shared_set,从图中
可以看到shared_set存在于状态{sl,s2}的所有后代状态中。
,,
2008,44(28) 127
2.3.2建 状态转移表
lazyDFA的状态对应NFA的一个状态集,因为lazyDFA的
构造是基于事件机制的,所以在自动机构造过程中,会出现为
了不需要的事件而去查找NFA状态表的情况,这会浪费查询
时间。
假设例1中,当前的lazyDFA状态是T={S2,S4},如果当前
毫
/ /
、
.
、一/ /
宣 、
\一一 一,
、 e
\一,
、
解析到的事件是e,正常情况下处理器会建立一个新的
lazyDFA状态并检查s2和_s4的状态转移条件,发现在s2和
s4中部没有e转移条件,则丢弃这个新建的lazyDFA状态。事
件e就是不需要的事件,而为了这个不需要的事件去查找状态
对应的NFA状态表,浪费了查询时『日J。
图3 NFA与对应的DFA
在这个优化算法中要对lazyDFA状态的结构进行改进,在
lazyDFA状态中新增一个NFA状态转移条件表,它存储的是
lazyDFA状态对应的NFA状态集中的状态的转移条件,该状态
转移条件表不包括 和 转移条件,一旦lazyDFA状态建立,
这个表就相应地建立了。
数据结构如图4。
含有共享状态表的lazyDFA状态在状态转移条件下生成
一
个新状态,新状态对应的NFA状态集不仅包含共享状态集
合,而且还包含目的独享状态集合。优化算法中将共享状态集
合从lazyDFA状态对应的NFA状态集中独立出来,这时
lazyDFA状态对应的NFA状态集是一个独享状态集合。构造
lazyDFA时分别对共享状态集合和独享状态集合进行运算,得
到的两个结果集合中不具有自循环边的状态构成了一个新的
lazyDFA状态。通过这种方法可以减少lazyDFA对应的NFA状
态集的大小,从而降低lazyDFA的内存消耗。
算法3 lazyDFA的优化——共享NFA状态表。
startDocument()
{get(NFA.initia1),DFA.startState=NFA.initial,push(DFA.startState)1
startElement(String qName)f
exclusive
dyer=get(DFAStack.top);
exclusive
dest=move(exclusivedyer,qName);
shared
dest=move(shared,qName);
DFA图存储在An'ayI,ist数组l}】
new
ed
dest));
dver=e—closure(union(exclusive
dest,shar
图4优化算法的数据模型
theStack.push(new
dver);l
例如,r={s2,S4l,由图3中的NFA可看到,状态s2的状态
endElement(String qName)
转移条件是“ 和b,状态s4的状态转移条件是d,则与集合
{pop(DFAStack.top);}
endDocument()
{clear(DFAStack);】
{s2,s4}相对应的状态转移表Trans_table={b,d}。当解析到事件
e时,查询处理器将检查这个状态转移表,发现71中不存在转
移条件e,这意味着事件e是不需要的事件,查询处理就可以
跳过e及其下面的元素,这样大大缩短了查询时间。图5是状
例2以例1的XPath查询语句为例,待查的XML数据
流片断为:<n><6><c><d><e><,e><,d></c></6></0>,表1为
lazyDFA运行时的独享NFA状态集合及相应的共享NFA状态
集合。
表1 lazyDFA运行时的状态及共享集合
态 所包含的NFA状态集和相应的状态转移条件表。
5状态 对应的NFA状态集及状态转移条件表
3性能测试与分析
本文用Java语言实现了NFA、lazyDFA构造算法和
lazyDFA构造的优化算法,并进行了性能测试。实验平台为:操
作系统为WindowsXP,CPU为P4,主频为1.7 G,内存512 M。实
验数据是NASA的XML数据集合,XPath表达式使用YFilte的
通过实验可知,共享NFA状态表的优化算法可以有效地
XPath表达式生成工具生成。图6是lazyDFA优化前后的内存
减少lazyDFA的内存使用量,但是以查询时问为代价。为了在
减少lazyDFA内在使用量的同时提高lazyDFA的查询速度,在
该优化算法基础上进行了进一步的优化。
使用量比较,从实验结果可以看出共享NFA状态表的优化算
法可以减少lazyDFA的内存使用量。图7是lazyDFA优化前后
(下转139页)
陈园园,陈治平:一种基于代表点和点密度的聚类算法 2008,44(28) 139
参考文献:
塑瓣
(a)Dataset2:K=9,6=0.70 (b)Dataset2:K:9,6=0.67
[11 Hart JW,Kambr M.Data mining concepts and techniques[M].Bei—
jing:Higher Education Press,2001.
[2]Ester M,Kregel H P,Sander J,et a1.A density—based algorithm for
discovering clusters in large spatial databases with noise[C]//Pro-
ceedings of 2nd International Conference on Knowledge Discovery
and Data Mining,Portland,Oregon,U S A,1996.
图5 CBRD算法在Dataset2上的聚类结果
本实验表明,当簇密度分布不均时,本文的算法比DBSCAN
算法可以得到更好的聚类结果。
通过对这两个数据集的实验比较,可以发现CBRD算法不
仅可以象DBSCAN算法一样可以发现任意形状的聚类,同时
[3】Ankerst M,Breunig M,Kriegel H P,et a1.OPTICS:Ordering Points
To Identify the Clustering Stmcture[C]//Proc ACM SIGMOD’99,Int
Conf on Management of Data,Philadelphia,PA,1999.
[4]Lin Chih—Yang,Chang Chin—Chen,Lin Chia—Chen.A new density-
based scheme for clustering based on genetic algorithm[JI.Funda-
menta Informaticae,2005,68(4):315—331.
[5]Ma Daoying,Zhang Aidong.An adaptive density-based clustering
lgoriathm for spatial database with noise[C]//ICDM’04.Fourth IEEE
International Conference on Data Mining,1-4 Nov 2004:467-470.
还解决了DBSCAN算法不能发现密度分布不均的数据样本的
问题。
5小结
本文提出了一种基于代表点和点密度的聚类算法,算法以
[6]Dash M,Liu M,Xu X.1+1>2:merging distance and density based
clustering[C]//Proc of 7th lnt Conf Database Systems for Advanced
Applicati0ns(DASFAA’01),Hong Kong,April 2001:18-20.
点k近邻的平均距离作为点密度,首先通过点密度及其近邻点
的平均密度比,获取一满足密度阈值的点作为种子点。以此种
子点作为第一个代表点,以后反复地在代表点的代表区域中寻
找代表点,这些区域相连的代表点及其代表区域构成了一个
类。算法不需要全局的密度分布隋况,因此对于样本分布不均
[7]马帅,王腾蛟,唐世渭,等.一种基于参考点和密度的快速聚类算法IJJ -
软件学报,2003,14(6):1089—1095.
【8]Derya Birant,Alp Kut.ST—DBSCAN:an algorithm for clustering
的数据集的聚类不受密度分布不均的影响,总能正确找到相应
的聚类,实验结果证明本算法具有较好的聚类结果。但是算法
在计算点的密度过程中需要消耗大量的时问和内存,如何提高
算法的执行效率、减少内存消耗将是下一步的工作重点。
spatial—temporal data[J1.Data&Knowledge Engineering,2007,60
(1):208—221.
[9]Geo ̄e K,Han E H,Kumar V.CHAMELEON:a hierarchical clus~
tering algorithm using dynamic modeling[J].IEEE Computer,1999,
27(3):329—341.
(上接127页)
径表达式查询问题。并针对lazyDFA的执行效率,从时间和空
间两方面对lazyDFA的构造进行了优化。由实验结果可以看出
lazyDFA及其优化技术可以有效地处理XML数据流上的
XPath查询问题。
的运行时间比较,可以看到,在lazyDFA状态的结构中建立一
个状态转移条件表会提高自动机的查询速度。实验结果可以表
明,lazyDFA构造的优化算法可以提高lazyDFA的执行效率。
舞
l k 】0 k 100 k
匿
参考文献:
[1]Ahinel M,Franklin M.Eficifent filtering of XML documents for
selective dissemination of information[C]//Proceedings of VLDB,
Cairo,Egypt,September 2000:53-64.
【2]Clark J.XML Path language(XPath)[0 LJ.[1999].Available from the
W3C,http://www.w3.org/TR/XPath.
(3】Diao Y,Fischer P.YFilter:efficient and scalable filtering of XML
documents[C]//Proc of the 18th Int’1 Conf on Data Engineering,
2002:341—345.
『4]Chan C,Felber P,Garofalakis M,et a1.Efficient filtering of XML
document with XPath expressions[C]//Proc of the Int’1 Conf on
Data Engineering.San Jose:IEEE Computer Society,2002:235—244.
xpath大小
[5]Green rrJ,Miklau G,Onizuka M,et a1.Processing XML streaming
with deterministic automata[C]//Calvanese D,Lenzerini M,Motwani
R.Proc of the Int’1 Conf on Data Theory,Siena,Italy.New York,
USA:ACM Press.2004:752—788.
图7优化前后的lazyDFA的运行时间比较
4结束语
本文给出了NFA、lazyDFA、优化的lazyDFA的数据结构,
[6]Gupta AK,Suciu D.Stream processing of XPath queries with
predicates[C]//Halevy AY,Ives ZG,Doan AH.Proc of the 2003ACM
SIGMOD[nt’1 Conf on Management of Data
[S.1.]:ACM,2003:
.
并在相应的数据模型上实现了NFA、lazyDFA构造算法和
lazyDFA构造的优化算法,解决了XML数据流上简单XPath路
41 9-430.
版权声明:本文标题:基于LazyDFA的XPath在XML数据流上查询优化算法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1710020813a553971.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论