《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > XML數(shù)據(jù)流基于組著色的XPath查詢(xún)模型

XML數(shù)據(jù)流基于組著色的XPath查詢(xún)模型

2009-07-28
作者:劉景超,劉先鋒

  摘 要: 提出了一種新的XML數(shù)據(jù)流XPath查詢(xún)模型GBRender,該模型通過(guò)組著色序列來(lái)直接處理元素,具有較高的處理效率與較強(qiáng)的適應(yīng)性。
??? 關(guān)鍵詞: XML數(shù)據(jù)流;組著色;XPath查詢(xún)

?

  由于XML已經(jīng)成為Web上數(shù)據(jù)交換的標(biāo)準(zhǔn),用于各種應(yīng)用和信息源之間的數(shù)據(jù)交換,而許多應(yīng)用的特征是數(shù)據(jù)以快速、實(shí)時(shí)的數(shù)據(jù)流形式持續(xù)到達(dá),適宜用數(shù)據(jù)流建模。因此,處理XML流數(shù)據(jù)的理論和技術(shù)目前成為流數(shù)據(jù)研究領(lǐng)域中的一個(gè)熱點(diǎn)。XML流數(shù)據(jù)處理系統(tǒng)通常運(yùn)行在Web上,用戶(hù)查詢(xún)通常用XPath[1]語(yǔ)言表示。由于一個(gè)用戶(hù)可以提交若干查詢(xún),使查詢(xún)的數(shù)量十分巨大。XML流數(shù)據(jù)處理研究的一個(gè)關(guān)鍵問(wèn)題是如何同時(shí)有效處理大量來(lái)自用戶(hù)的查詢(xún)并及時(shí)將結(jié)果返回給用戶(hù)。
  根據(jù)數(shù)據(jù)流環(huán)境的特點(diǎn),對(duì)XML數(shù)據(jù)流和處理通常有以下要求:每一個(gè)XML元素節(jié)點(diǎn)最多只能訪問(wèn)1次;使用有限和最少的內(nèi)存空間存儲(chǔ)臨時(shí)數(shù)據(jù),處理算法具有盡可能小的空間復(fù)雜度;對(duì)每個(gè)節(jié)點(diǎn)的處理必須有很高的效率,以滿足實(shí)時(shí)處理的需要。
  目前針對(duì)XML流處理系統(tǒng)所采用的主要方法是基于自動(dòng)機(jī)的方法。其他方法有:基于索引的方法[2]、基于Bloom-Filter[3]的方法、Fist[4]方法等[5]?;谧詣?dòng)機(jī)的方法是將1個(gè)或1組XPath表達(dá)式表示為某種形式的自動(dòng)機(jī),通過(guò)狀態(tài)轉(zhuǎn)換來(lái)達(dá)到查詢(xún)所需信息的目的?;谒饕姆椒ㄊ窃跀?shù)據(jù)傳送之前加入索引信息或接收端引入某種索引機(jī)制來(lái)提高查詢(xún)效率。以上方法處理XPath的方式都是通過(guò)對(duì)XPath本身形成處理器,即處理的過(guò)程主要集中在XPath本身,而且基于索引或通過(guò)DTD的優(yōu)化或多或少都依賴(lài)于對(duì)XML結(jié)構(gòu)信息的了解。而由XML數(shù)據(jù)流的應(yīng)用環(huán)境決定了很多應(yīng)用是在結(jié)構(gòu)未知的情形下的數(shù)據(jù)序列查詢(xún)?;诂F(xiàn)有的研究及上述問(wèn)題,本文提出了一種新的XML數(shù)據(jù)流XPath查詢(xún)模型,以適合在結(jié)構(gòu)未知的情況下的XPath查詢(xún),同時(shí)有效地減少流查詢(xún)過(guò)程中對(duì)XPath的依賴(lài)程度。
1 背景及相關(guān)問(wèn)題
  由于流數(shù)據(jù)處理的廣泛應(yīng)用以及XML已經(jīng)成為Web上數(shù)據(jù)交換的標(biāo)準(zhǔn),流數(shù)據(jù)處理的研究已引起廣泛的興趣。
  很多研究都采用自動(dòng)機(jī)方法處理XML數(shù)據(jù)流。自動(dòng)機(jī)技術(shù)用于XML文件查詢(xún)的主要思想是:將1個(gè)或1組XPath表達(dá)式表示為某種形式的自動(dòng)機(jī),在要查詢(xún)的XML文件上運(yùn)行自動(dòng)機(jī),自動(dòng)機(jī)根據(jù)當(dāng)前狀態(tài)及讀入文檔的節(jié)點(diǎn)判斷下一步的行動(dòng),運(yùn)行結(jié)束根據(jù)自動(dòng)機(jī)是否處于接收狀態(tài)來(lái)判斷文件是否符合給定的XPath的查詢(xún)條件。自動(dòng)機(jī)查詢(xún)模型如圖1所示。

?


??? XFilter首次利用基于有限狀態(tài)自動(dòng)機(jī)FSM(Finite State Machine)的方法來(lái)過(guò)濾XML文檔,它對(duì)每一個(gè)路徑查詢(xún)使用一個(gè)單獨(dú)的FSM,并在文檔處理的過(guò)程中,同時(shí)運(yùn)行所有的FSM。YFilter在XFilter的基礎(chǔ)上進(jìn)行了改進(jìn),它將所有的XPath查詢(xún)合并成一個(gè)單獨(dú)的非確定有限自動(dòng)機(jī)NFA(Non-deterministic Finite Automaton)[6],并共享所有查詢(xún)的公共前綴,YFilter主要考慮了謂詞中的AND謂詞查詢(xún),采用后置處理的方式,這種方式產(chǎn)生大量中間結(jié)果影響系統(tǒng)性能。
  XEBT(XPath Evaluation Based on Tree automata)[7]利用樹(shù)自動(dòng)機(jī)技術(shù)作為查詢(xún)處理器,它基于表達(dá)能力豐富的樹(shù)自動(dòng)機(jī),無(wú)須附加中間狀態(tài)或保存中間結(jié)果,就能處理支持{[]}操作符的XPath,所以能較高效地處理XPath查詢(xún)。在優(yōu)化策略上,主要包括基于DTD的XPath查詢(xún)自動(dòng)機(jī)的構(gòu)造、在空間代價(jià)有限增加的情況下采用局部確定化減少并發(fā)執(zhí)行的狀態(tài)、采用自上而下和自下而上相結(jié)合的查詢(xún)處理策略等。
  其他處理XML流的方法主要有基于索引(Index-Filter)的方法[2]、基于Bloom Filter[3]的方法以及FiST[5]方法。Index-Filter[2]采用基于索引的技術(shù)處理XML流數(shù)據(jù),利用XML文檔流的文檔標(biāo)記動(dòng)態(tài)地建立XML文檔的索引,從而避免處理一部分文檔。在Index-Filter的方法中,建立索引要花費(fèi)一定的時(shí)間,而且不能單遍處理XML文檔?;贐loom Filter的XML包過(guò)濾器具一種近似查詢(xún)方法,利用Bloom Filter方法,將XPath表達(dá)式作為字符串,將XPath與XML包之間的匹配轉(zhuǎn)換為字符串之間的匹配,從而提高查詢(xún)性能,但它只是用來(lái)處理簡(jiǎn)單的XPath表達(dá)式且有一定的失誤率。FiST方法針對(duì)Twig Pattern提出的一種有別于YFilter的方法,將一組Twig Pattern轉(zhuǎn)換為prufer序列,并對(duì)一組Twig Pattern與XML流數(shù)據(jù)進(jìn)行整體性匹配。
2 GBRender模型
2.1 GBRender相關(guān)定義
  當(dāng)XML以流的形式進(jìn)行處理時(shí),在邏輯上實(shí)際是以先序遍歷的形式對(duì)XML樹(shù)中的結(jié)點(diǎn)進(jìn)行訪問(wèn),通常采用基于事件的SAX模型來(lái)進(jìn)行解析。這樣,在對(duì)XML結(jié)構(gòu)未知的情況下,可以根據(jù)接收的元素信息來(lái)分析其結(jié)構(gòu),并根據(jù)得到的結(jié)構(gòu)信息為后續(xù)服務(wù)。
??? 為了用來(lái)更好地描述GBRender查詢(xún)模型,下面介紹幾個(gè)定義:
??? 定義1(組):XML的任何一個(gè)元素都有一個(gè)從根開(kāi)始的標(biāo)簽路徑,但很多元素都會(huì)有相同標(biāo)簽路徑,即1個(gè)標(biāo)簽路徑可以表示1組對(duì)應(yīng)的元素。這里把XML文檔中每一個(gè)不同的標(biāo)簽路徑稱(chēng)為組。如圖2所示,root/person/name即為一個(gè)組。


??? 定義2(組樹(shù)):組樹(shù)是在處理XML數(shù)據(jù)流過(guò)程中,記錄組、組之間關(guān)系的樹(shù)形結(jié)構(gòu)。其組織結(jié)構(gòu)如圖3所示。組樹(shù)中,各組有指向其子組的鏈接,每個(gè)組有指向父組的鏈接,同時(shí),同一層的組串接起來(lái)以便于處理時(shí)的需要。
  定義3(終結(jié)元素):XPath表達(dá)式對(duì)應(yīng)的最后一個(gè)路徑元素,稱(chēng)為終結(jié)元素,它表示XPath請(qǐng)求所需的結(jié)果。如//A/B//C,C即終結(jié)元素。
  定義4(著色):尋找每一個(gè)組的標(biāo)簽路徑處于XPath表達(dá)式中的哪個(gè)位置,即當(dāng)前XML元素的路徑與XPath路徑的關(guān)系并標(biāo)記該組,這個(gè)過(guò)程稱(chēng)為著色過(guò)程。例如,組root/person/name對(duì)應(yīng)XPath表達(dá)式//name的終結(jié)元素name,則可以標(biāo)記該組為該XPath的終結(jié)組。
2.2 GBRender結(jié)構(gòu)模型
  目前的XML數(shù)據(jù)流XPath查詢(xún)處理,基本結(jié)構(gòu)模型如圖4所示,以XML數(shù)據(jù)流作為XPath分析器的輸入,分析器可能有多個(gè),也可能合并為1個(gè)。對(duì)XPath查詢(xún)包含的索引信息有2種:一是傳輸之前的索引信息;二是接收端進(jìn)行處理形成的索引信息。


  GBRender查詢(xún)模型如圖5所示,采用基于著色的方式來(lái)處理查詢(xún),當(dāng)某個(gè)組首次出現(xiàn)時(shí),通過(guò)著色器對(duì)其與XPath的關(guān)系進(jìn)行著色。著色之后,再次遇到該組時(shí)不再依賴(lài)于XPath而只依賴(lài)其記錄的組著色信息,尤其在單枝查詢(xún)的情況下,可以直接對(duì)查詢(xún)進(jìn)行回應(yīng)。在GBRender模型中,組著色的過(guò)程,實(shí)際上相當(dāng)于XPath確定化的過(guò)程。例如,對(duì)于圖2的文檔進(jìn)行//name查詢(xún),當(dāng)首次出現(xiàn)name時(shí),其組標(biāo)簽路徑為root/person/name,即是對(duì)//祖孫關(guān)系在此文檔上進(jìn)行的確認(rèn)化,而且當(dāng)name出現(xiàn)在另一組時(shí),會(huì)再一次進(jìn)行確認(rèn)化且不會(huì)相互影響。而常采用的DTD優(yōu)化策略通常也是完成確認(rèn)化的工作,當(dāng)遇到2個(gè)不同組均存在name標(biāo)簽時(shí),//就需要特殊處理了。


??? 為了同時(shí)響應(yīng)多個(gè)XPath查詢(xún),本文引入了著色序列的定義。
  定義5(著色序列):根據(jù)XPath請(qǐng)求序列,對(duì)同一組生成對(duì)應(yīng)的著色信息序列,此序列即稱(chēng)為著色序列。因?yàn)椴煌腦Path有不同的著色信息,因此也稱(chēng)XPath著色序列。
??? 每組均有著色序列,其組樹(shù)中組的結(jié)構(gòu)如圖6所示。

2.3 GBRender處理模型
??? 基于組樹(shù)的動(dòng)態(tài)建立與組著色機(jī)制,GBRender的任意組,僅當(dāng)首次出現(xiàn)時(shí)進(jìn)行XPath著色處理,之后則根據(jù)著色情況進(jìn)行處理。
  GBRender的查詢(xún)處理,其數(shù)據(jù)輸入是XML的SAX解析事件流,包括startDocument、endDocument、startElement、endElement和Text事件,這里只給出GBRender處理模型在每一類(lèi)事件的響應(yīng)動(dòng)作,而不討論數(shù)據(jù)緩存處理。
  startDocument: initiate the GroupTree GT and context?? //初始化組樹(shù)GT
  StartElement(element)??      // element為新接收元素
  If(not existsGroup(element))InsertGroupAndDrawXpathColor(element);??

              ??    //如果不存在該組,則生成該組并進(jìn)行著色產(chǎn)生著色序列
  setCurrentElement(element);   //置element為當(dāng)前元素
??? Text (value)???          // 當(dāng)前元素的值
?????? Add value into currentElement.currentValue;
                   ?// 增加到當(dāng)前元素值
  ? EndElement(element)??
?????? ProcessXPathColor(element);?? // 根據(jù)當(dāng)前元素的著色序列信息進(jìn)行處理
?????? setCurrentElement(element.parentGroup); //
??? EndDocument?
?????? cleanUp( );????        // 處理全部結(jié)束,清理
2.4 GBRender查詢(xún)模型的主要特征
  ? GBRender查詢(xún)模型處理的操作方向與目前主要的查詢(xún)處理不同,分析器并不是與XPath綁定,而是綁定到XML文檔結(jié)構(gòu)上,它對(duì)XPath只在組首次出現(xiàn)時(shí)進(jìn)行著色的處理,之后則根據(jù)著色情況來(lái)進(jìn)行處理。這種模型具有較強(qiáng)的靈活性,主要特點(diǎn)如下:
??? (1)對(duì)XML文檔結(jié)構(gòu)無(wú)需任何考慮。因?yàn)橐越邮盏牧鲾?shù)據(jù)為依據(jù)來(lái)動(dòng)態(tài)建立組樹(shù)。根據(jù)XML流數(shù)據(jù)的順序性與元素之間關(guān)系的局部性,組樹(shù)的訪問(wèn)總是發(fā)生在相鄰元素之間,因此效率很高。
??? (2)無(wú)需依賴(lài)XPath分析器。一旦著色,相當(dāng)于就對(duì)該組進(jìn)行了確定化。同時(shí),對(duì)于簡(jiǎn)單的XPath表達(dá)式在當(dāng)前組即可直接判定作出處理。
??? (3)可以方便地利用現(xiàn)有的其他XPath查詢(xún)處理機(jī)制,如自動(dòng)機(jī)模型。因?yàn)樵谀撤N程度上,著色類(lèi)似確定化XPath,當(dāng)處理復(fù)雜謂詞時(shí),其著色信息處理可以方便地吸收自動(dòng)機(jī)模型的思想。
??? (4)非常容易擴(kuò)展XPath查詢(xún)數(shù)目,著色序列長(zhǎng)度的增加對(duì)效率影響很小。
??? (5)方便進(jìn)行類(lèi)似關(guān)鍵詞查詢(xún)的流數(shù)據(jù)處理。如不考慮數(shù)據(jù)來(lái)源的結(jié)構(gòu),用戶(hù)只關(guān)心信息中的author或name的信息。本文模型可以很容易且高效的去完成處理,僅需傳入//author、//name的XPath表達(dá)式串,就可以應(yīng)用于任意的XML流數(shù)據(jù)源。
3 GBRender的主要算法
  以單枝查詢(xún)?yōu)槔?jiǎn)要介紹GBRender查詢(xún)模型中的著色算法與處理算法。
  在單一分枝的查詢(xún)中,由于XPath表達(dá)式中僅有//與/關(guān)系,組標(biāo)簽對(duì)于XPath路徑中的元素只存在3種關(guān)系,即無(wú)、中間元素或終結(jié)元素,而本文關(guān)心的正是那些終結(jié)元素且此處暫不需考慮緩存,為了便于描述,用Color.Empty、Color.Mid以及Color.End來(lái)表示2種著色狀態(tài)。
??? (1)單一分枝下的組著色算法:
??? GroupRendering(G, XPaths)
??? 輸入:組G是當(dāng)前元素所在組,表達(dá)式串XPaths是XPath表達(dá)式集合
??? {
???   Foreach(xpath in XPaths)
???   {
???   ? If(G.tagPath not satisfy part xpath)?? //未發(fā)現(xiàn)匹配,e.tagPath為標(biāo)簽路徑
???      ? G.XPathColorList.add(Color.Empty);
  ???   If(G.tagPath satisfy part xpath)??   //有匹配
   ??????? If(G.tagPath is 終結(jié)元素)??     //是終結(jié)元素
???????????? G.XPathColorList.add(Color.End);
????????? else????                 //不是終結(jié)匹配但匹配中間元素
????????????? G.XPathColorList.add(Color.Mid);
???   }
??? }
??? (2)endElement時(shí)根據(jù)組著色情況對(duì)元素進(jìn)行處理的算法:
??? ProcessXPathColor (G)
??? 輸入:組G是當(dāng)前元素所在組
??? {
????   Foreach(color in G.XPathColorList)
????   {? //單枝查詢(xún)情況下只需要對(duì)Color.End元素進(jìn)行處理
  ??????? Costomeri ++;? // XPath逐個(gè)對(duì)應(yīng)
  ??????? If(color is Color.End)
  ??????? {
  ?????????? ToCustomer(Customeri,G.currentElement.Value); // 輸出結(jié)果
  ??????? }
  ??? }
??? }
4 實(shí)驗(yàn)
  本文實(shí)現(xiàn)了GBRender查詢(xún)模型并應(yīng)用在單枝查詢(xún)上,軟件環(huán)境是Windows xp+eclipse3.3+jdk1.5。硬件環(huán)境是:聯(lián)想旭日410M筆記本電腦,配置為:CPU雙核T2080,內(nèi)存1 GB,硬盤(pán)120 GB。
??? 在實(shí)驗(yàn)中,綜合了文檔大小與查詢(xún)數(shù)目的多少并與YFilter和Index-Filter作比較,結(jié)果發(fā)現(xiàn),當(dāng)文檔相對(duì)較大時(shí)查詢(xún)數(shù)量無(wú)論多少,GBRender都顯得非常有效;當(dāng)文檔相對(duì)較小而查詢(xún)數(shù)量較大時(shí),GBRender與YFilter較為有效。實(shí)驗(yàn)結(jié)果如圖7所示。


??? 本文提出了一種新的XML數(shù)據(jù)流XPath查詢(xún)模型GBRender,給出了該模型的結(jié)構(gòu)特征、處理機(jī)制以及單枝查詢(xún)下的多XPath查詢(xún)算法和組著色的概念。通過(guò)大量的實(shí)驗(yàn),證明了GBRender模型對(duì)XML任意數(shù)據(jù)流查詢(xún)的有效性及其適用性強(qiáng)的優(yōu)點(diǎn)。
??? GBRender模型具有較強(qiáng)的適應(yīng)性與靈活性,對(duì)某些結(jié)構(gòu)簡(jiǎn)單的XPath查詢(xún)極其有效。但在根據(jù)著色信息進(jìn)行處理機(jī)制上有待進(jìn)一步的研究。今后主要的工作是如何有效地在組著色機(jī)制中利用已有的好的查詢(xún)機(jī)制或新的有效的處理機(jī)制進(jìn)行復(fù)雜XPath查詢(xún)處理,進(jìn)一步完善系統(tǒng)。


參考文獻(xiàn)
[1] BERGLUND A, BOAG S, CHAMBERLIN D, et al. XML path language(XPath)2.0 W3C working draft 16. Technical Report,WD-xpath20-20020816,World Wide Web Consortium,2002.http://www.w3.org/TR/2002/WD-xpath2002-08-06.
[2] BRUNO N, GRAVANO L, KOUDAS N, et al. Navigation-vs. index-based XML? multi-query processing.In: Dayal U, Ramaritham K, Vijayaraman TM, eds.Proc of the 19th Int’l Conf. on Data Engineering(ICDE 2003). Bangalore: IEEE Computer Society, 2003:139-150.
[3] ZWON J, RAO P, MOON B, et al. FiST:scalable XML document filtering by sequencing twig patterns.Proc. of the 31st Int'l Conf on Very Large Data Bases (VLDB 2005).Trondheim:VLDB Endowment, 2005. 217-228.
[4] 楊衛(wèi)東,王清明,施伯樂(lè).針對(duì)XML流數(shù)據(jù)的復(fù)雜Twig Pattern查詢(xún)處理.軟件學(xué)報(bào),2007,18(4):893-904.http://www.jos.org.cn/1000-9825/18/893.htm
[5] DIAO Y, FISCHER P. YFilter: efficient and scalable filtering of XML documents. In: Proc of the 18th Int'l Conf. on Data Engineering, 2002:341-345.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。