段克松,施化吉,李星毅
(江蘇大學 計算機科學與通信工程學院,江蘇 鎮江212013)
在XML查詢中,如何對大量的XML數據流進行查詢匹配是一個關鍵問題。目前,人們已經取得了一定的成果,如XFilter,YFilter,XPush技術等。但是面對海量XML數據流進行查詢處理時依然很難滿足實際應用的需求。最近有學者提出利用能夠自然處理樹狀數據結構的樹自動機來實現XML查詢匹配的方法XEBT[1],提供了一個很好的思路。但該方法存在以下兩個問題:①如果系統中有n條XPath查詢語句,則轉換后系統會存在n個非確定的樹自動機;②在XPath表達式與樹自動機的轉換過程中,把謂詞直接轉換為樹自動機的狀態,造成系統運行時對于每個查詢都要進行謂詞匹配,相對于只在結構匹配成功時才進行謂詞匹配效率明顯比較低。本文針對上述認識,提出了一種高效的XML過濾技術XTAFilter。該技術具有以下特點:通過構建hash表來存儲謂詞信息來替代把謂詞作為樹自動機狀態的方法,使得該技術只有在結構匹配成功時,才進行謂詞匹配,而不是每次查詢都進行謂詞匹配,提高了匹配效率;同時利用共享路徑構建樹自動機,減少了匹配消耗的時間,提高了查詢匹配的效率。
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,因此字符自動機可看作樹自動機特例。
對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 謂詞存儲數據結構
用戶通過路徑表達式XPath來表示他們感興趣的信息,而用戶提交的多個XPath訂購表達式中可能存在相同的XPath片段。如果訂購表達式從根結點開始具有相同的XPath片段,可以通過合并這些片段來構建一個共享XPath路徑樹自動機。這樣一方面降低系統運行的活動狀態,另一方面提高系統匹配效率。如圖3所示。

圖3 構建共享路徑樹自動機
XML是一種樹形數據類型,而XPath采用了路徑表達式的語法,因此對XML數據流進行查詢,很自然的方法是基于導航的查詢執行策略。即當XML數據以數據流的形式出現時,預先存儲的查詢語句對XML數據流進行導航,過濾出與之匹配的XML文檔。為了以下算法描述的需要給出相關定義。
圖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查詢執行實例
在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數據流處理性能。
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.