999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

結構編碼與簇集索引相結合的XML混合索引

2008-01-01 00:00:00楊進才李國徽
計算機應用研究 2008年5期

摘要:提出了一種結構編碼與簇集索引相結合的XML混合索引結構(HiSC)。引入簇集索引結構,將XML節點分類,盡量多地保存XML數據的結構信息,縮小查詢范圍,提高了查詢效率并能支持關鍵字的查詢。實驗表明此索引結構可以高效并準確地查詢XML數據中的結構信息。

關鍵詞:可擴展標記語言; 索引結構; 簇集索引結構; 結構編碼; 關鍵字查詢

中圖分類號:TP311;132.4 文獻標志碼:A

文章編號:1001-3695(2008)05-1415-04

XML標準被廣泛運用于Web數據交換[1],現有的查詢語言如Xpath[2]、Xquery[3]都是通過路徑表達式對XML文檔進行查詢。專家和學者針對提高路徑表達式的查詢效率進行了大量研究,并提出了多種XML索引結構,這些索引結構各有優點和適用范圍。Dataguide[4]僅適用于簡單的自根而下的路徑表達式,對于復雜的表達式則無法解決。文獻[5]提出兩種相似的結構連接算法Tree-Merge與Stack-Tree;XISS[6]用元素、屬性作為查詢的基本單元,將復雜路徑分解為簡單路徑,然后對各簡單路徑的處理結果進行連接。文獻[7~9]運用了區間編碼,通過區間編碼可以有效地找到與某個節點相關的節點區間碼,并運用B+樹來優化索引結構。盡管對索引的結構和查詢算法進行了優化,但只能減少查詢中結構連接的次數,不能避免復雜的結構連接運算。DBXI[10]利用DTD的結構信息對XML文檔及其遵循的DTD同時建立索引,結合了區間碼的思想,減少了XML文檔的遍歷。Apex[11]是一種基于工作流的索引結構,運用數據挖掘的方法將常用的查詢數據挖掘出來建立索引,當工作流改變時索引結構也會隨之更新;HOPI[12]基于2-Hop包含的有向圖在XML上建立面向連接的索引,提高了查詢的空間和時間效率,并能很好地支持XLink,但查詢算法過于復雜。結構編碼[13]不同于其他的索引結構,需要先將查詢拆分成若干子查詢,然后將子查詢的結果進行結構連接。結構編碼通過對XML數據和查詢同時編碼,將對XML的查詢轉變為對查詢編碼序列的搜索,在一定程度上避免了復雜的結構連接。結構編碼還支持包含通配符路徑的查詢。應該說,將結構編碼用于XML文檔的查詢是一種新穎的索引方法,但還存在一些不足:a)沒有按節點屬性構建簇集索引,當查詢某節點是否存在時需要遍歷整個文檔。b)其索引結構忽略了XML文檔中的一些結構信息,查詢結果與XML文檔中相關部分不同。c)不支持對關鍵字的查詢。本文將在結構編碼的基礎上結合簇集索引提出一種新的索引結構來彌補結構編碼的不足。

1XML文檔結構及結構編碼

XML文檔是由嵌套的元素結構組成,XML數據通常被描述成樹結構,元素及其屬性由DTD定義。圖1(a)描述了一個交易文檔的結構;(b)表示的是一份由(a)定義的交易XML文檔樹結構。在圖1(b)中,V1~V8表示葉節點標志,即文檔中元素的屬性節點值和元素節點值,非葉節點的標志為元素的首字母。每個節點都加入了區間碼(begin, end),用來標志XML文檔樹中節點的結構關系。節點間的祖先/后裔、雙親/孩子關系可以通過區間碼進行判斷。圖1(b)中,節點S(2,70)與節點I(8, 45),(S.begin=2)<(I.begin=8),(S.end=70)>(I.end=45),由此可以判斷出節點I為S的后裔節點。 XML文檔中的每個節點與區間碼是一一對應的,可以引入傳統關系數據庫成熟的技術如B+樹。

根據結構編碼的定義[13]:XML樹中每個節點被標志為(節點標志,前綴),每個節點被標志為一個字符,節點的前綴就由根節點到達此節點所經過節點的標志所組成的字符串。如例中,根節點P標志為(P,ε),節點S被標志為(S,P),值為V1的節點被標志為(V1,PSN)。

〈!ELEMENTpurchase(seller, buyer)〉

〈!ATTRISTsellerID IDLocation CDATA name CDATA〉

〈!ELEMENTseller(Item)〉

〈!ATTRISTbuyerID IDLocation CDATA name CDATA〉

〈!ELEMENTitem(Item)〉

〈!ATTRISTitemmanufacture CDATA name CDATA〉

(a) 交易文檔的DTD

(b) 一份交易XML文檔的樹結構圖1XML交易文檔結構

2索引基本結構

在XML文檔上建立索引的目的是能夠從大量的XML信息中高效而準確地抽取出滿足查詢條件的結果。圖2所示XML查詢過程其實質是XML文檔經過一定的方式處理后形成XML的索引。查詢時,由輸入查詢的路徑信息運用查詢算法從索引中找到滿足查詢條件的結果,查詢結果實際上是XML文檔中滿足查詢條件的部分。文獻[13]中的索引沒有將節點分類,查詢結果恢復后的信息與文檔中的部分會有出入。例如查詢到節點(13,14)結構編碼為(N,PSII),不能判斷節點N是屬性還是元素節點,這是因為構建索引時忽略了文檔中節點的結構信息。

本文提出的索引結構是在結構編碼的基礎上混合簇集索引(HiSC),其基本思想是將XML中節點根據類型分類并按標志存儲,在查詢時根據節點的屬性迅速定位節點,縮小查詢范圍,減少查詢開銷。將XML文檔按下列規則組織索引:

規則1對每個節點進行結構編碼。

規則2為節點加上區間碼。

規則3將節點的結構編碼的前綴(Qpre)及區間編碼等信息存儲在包(packet)中。節點的區間碼被寫入包頭。

規則4XML樹中標志相同的元素節點存儲在相同的塊(block)中,結構編碼的標志寫入塊段頭。根據節點的區間碼,將包依次存入對應的塊中。

規則5帶(tape)TI用來存放非葉節點標志。元素節點和屬性節點的標志分別存入TI上的元素節點區(area)和屬性節點區。每個標志指向相對應的塊。

規則6用一條帶(tape)TV存儲XML屬性值、元素值、結構編碼前綴和尾部標志(end-id)。元素值末尾標志為(如V2),屬性值末尾標志為@(如 V1)。節點的值與區間碼對應,并按區間碼的順序依次存儲在帶中。

以上的規則中,包、塊、區帶都是邏輯上的單元,它們可以按塊(注:這里的塊指硬盤上的基本存儲單元)存取在磁盤上。圖1例子的索引結構如圖3所示。

圖3中,XML中的非葉節點被分為元素節點和屬性節點,其標志都分別存入TI中對應的區域(元素節點被寫入無陰影的區域,屬性節點被寫入有陰影的區域)。TI、TV中包含“…”部分為空白區域,便于XML文檔存放新的節點。TV存放葉節點。元素值和屬性值用末尾標志符和@來區分。標志(ID)為P、S、N、B、I、L、M被打包并分別存放在對應的塊中,每個塊中包含若干個包,如標志為N的塊中包的個數為4,區間碼分別為(3,6)、(13,20)、(52,60)、(81,85),結構編碼的前綴分別為PS、PSII、PSI、PB。

3查詢算法

本章介紹具體的查詢算法。對XML文檔的結構查詢分為:a)簡單路徑查詢, 即查詢路徑中不存在支路,如P/S/N。b)復雜路徑查詢,即查詢的路徑中帶有支路,如查詢節點P/S/I/M,且節點I的子節點N的屬性值為V3,即I匹配P/S/I/N/V3。c)帶通配符(*和//)的查詢。“*”可以替代任一節點,如查詢路徑P/*/N ,其結果就是路徑P/S/N和P/B/N;“//”則可以替代多個節點。

3.1簡單路徑查詢算法

簡單路徑查詢算法是其他查詢算法的基礎。先對查詢節點結構編碼,算法的輸入為目標節點的結構編碼序列Q=(qn,q1,q2,…,qn-1),輸出結果集θ1=(begin,end,end-id)。其中:(begin,end)為區間碼;end-id為尾部標志,用來標志節點的類型。

算法1判斷目標節點類型。若目標節點為葉節點則掃描TV,為非葉節點則掃描TI中的屬性節點區或元素節點區。通常目標節點的前向遍歷值較大所以應從后向前掃描TI中對應的區域。根據目標節點標志,迅速查詢到儲存目標節點的塊中去匹配結構編碼序列。如要查詢的是P/S/I/M,首先掃描TI中的元素節點區,發現存在標志為M元素節點;然后到標志為M的塊中匹配Qpre=PSI;最后返回包含M的區間碼(9,13)的結果集。若目標節點V為葉節點,算法1在TV中匹配V的節點值Value及Qpre。如輸入為(V3,PSIIN),在TV中查詢節點值為V3,Qpre=PSIIN 的節點。

3.2復雜路徑以及通配符路徑查詢算法

復雜路徑查詢實際上是將復雜路徑拆分成若干簡單路徑,再分別查詢拆分后的簡單路徑,最后運用區間碼將所有查詢結果進行結構連接,得到滿足條件的目標節點。區間碼被用來優化結構連接(詳細算法見文獻[13])。

含有通配符的路徑表達式根據通配符的位置可分為以通配符結尾的表達式(如P/S/N/*)和以其他節點結尾的表達式(如 P/S//I)。為方便描述,將前者定義為Ⅰ型,后者為Ⅱ型。

對算法1稍作改動便可用于Ⅱ型表達式的查詢,具體辦法是:當算法1執行步驟(4)(8)(13)時,Ⅱ型表達式是把“*”作為任意一個標志(“/”作為任意若干個標志)進行匹配;對于Ⅰ型的算法如算法2所示,輸入Q=(q1,q2,…,qn,*)=Q1*,返回結果集合θ2。算法2中(1)(2)是運用簡單路徑查詢算法查詢qn;(4)~(8)將所用qn的子節點找出來,然后匹配子節點的結構編碼后綴(Qpre),將滿足條件的節點區間碼和尾部標志加入θ2。對于查詢含有通配符“/”的Ⅰ型表達式,(6)將“/”代表若干個節點匹配Qpre。

算法2帶通配符“*”的Ⅰ型表達式查詢算法

算法2用來查詢帶通配符的簡單路徑,對于帶有通配符的復雜路徑采用類似一般的復雜路徑的查詢辦法,將其拆分為多個簡單路徑分別查詢,最后進行結構連接。

3.3關鍵字查詢

在XML文檔中,關鍵字查詢主要是針對XML文檔中的元素節點、元素的屬性、元素值進行查詢。在文獻[14]中,提出smallest lowest common ancestor(SLCA) semantics,即關鍵字查詢的結果集中節點應滿足以下兩個條件:a)它們的標志或它們的后代標志中包含關鍵字;b)它們的后代節點中不包含關鍵字。依照SLCA對關鍵字的搜索應該是一種至下而上的,搜索到的結果應該是XML樹中包含關鍵字節點中較底層的節點。本文提出的索引結構采用如下的算法進行關鍵字查詢:對輸入的關鍵字,先掃描TV,因為人們感興趣的關鍵字信息往往存在于元素的屬性和元素的值中;TV中的葉節點通常處于樹結構的底層,并且沒有后裔節點,不用考慮其后裔是否含有關鍵字的問題。返回滿足條件的結果集C1;C1為五元組集合(begin,end,value,end-id,Qpre ),value為節點值(若無節點值則為空);然后掃描T1的節點區,返回滿足條件的結果集C2;接著對C1、C2通過區間碼進行連接,找到可能存在的祖先/后裔、雙親/孩子關系,并從C1中刪除祖先或雙親元素;刪除后的C1與C2的并集C為查詢的目標節點集。若C1為空,則關鍵字包含于非葉節點中,查詢結果是包含關鍵字的元素為節點的XML樹結構。

4實驗結果

筆者對文獻[13]中的算法(ViST)和HiSC索引進行了性能測試和比較,測試代碼用Delphi 7編寫。實驗平臺是Pen-tium Ⅳ PC主頻2.4 GHz CPU,內存256 MB,80 GB硬盤,操作系統為Windows 2000 professional。采用了The XML benchmark database XMARK[8]生成大型XML文檔,大小為68.2 MB。

為全面地測試索引的查詢能力,對XML查詢進行分類后將測試表1中的查詢路徑。其中:Q1為簡單的路徑查詢;Q2是包含元素值的簡單查詢;Q3和Q7分別包含了通配符“*”和“/”的查詢;Q4是包含屬性值的復雜查詢,其路徑是分叉的;Q5和Q8在Q4的路徑中分別包含了通配符“*”和“/”;Q6為關鍵字查詢,因ViST不支持關鍵字查詢,只對HiSC進行測試。對以上查詢測試后,將XML文檔減小,節點總數減為70 529個,然后重復查詢測試,觀察算法在不同大小XML文檔中的表現。

由表2分析測試的結果如圖4所示。從圖4可知HiSC比ViST在查詢效率上普遍好得多,特別是包含了元素值的查詢(Q2)。正如前文所指出ViST中,其元素值和屬性值都被映射成為編碼,查詢時都不可避免地先查詢它們的編碼,并且ViST的索引結構中并沒有將元素值和屬性值區分開。當查詢帶有葉節點的路徑時,算法要遍歷所有葉節點的編碼;而HiSC將葉節點分類,分別進行查詢,這樣在相同條件下ViST需要查詢的范圍比HiSC要大些。HiSC采用簇集索引的形式存放數據,查詢時可以跳過一些不符合條件的值,減少了算法的開銷。觀察查詢結果集可以發現,從ViST查詢結果不能判斷出目標節點是元素節點還是屬性節點,因為ViST沒有完整地保留XML文檔中的結果信息。對于那些具有復雜DTD的文檔,或是對于不熟悉DTD文檔的人來說,很難完整地根據查詢結果恢復出XML文檔中滿足查詢要求的部分。

在圖75中,橫軸是按查詢所需時間遞增排列,虛線和實線分別表示XML文檔減少前后的測試結果。由圖分析:對于相同路徑的查詢, XML文檔的大小對兩種索引結構的影響基本相同,即查詢的效率會因文檔變大而下降。特別是關鍵字的查詢(Q6),其查詢效率很大程度上取決于XML文檔的大小。

當操作者因為不熟悉文檔而輸入無效節點(不存在于XML文檔)時,因為HiSC采取簇集索引結構,能迅速返回無此節點;而ViST須遍歷所有節點之后才能返回結果,顯然在查詢錯誤路徑時,HiSC無疑更優異。本文提出的索引結構缺點是對于海量XML文檔,其關鍵字查詢的效率仍然很低,需要進一步改進以提升其效率;索引結構較ViST復雜,從XML文檔生成索引結構需要更多的時間,但卻能提高查詢效率,提供更多結構信息。

5結束語

本文介紹了一種混合索引結構。在文獻[13]的基礎上混合了簇集索引結構,優化了查詢算法,提高了查詢效率。與文獻[13]相比,本文的貢獻和進步如下:采用簇集索引結構存儲結構編碼,可以迅速判斷出目標節點的有效性(即是否存在于XML文檔中),而無須遍歷所有節點;將XML文檔中的節點進行分類,查詢結果包含更多的節點結構信息,縮小了查詢范圍,提高了查詢效率;支持關鍵字查詢。其不足之處是結構比較復雜,由XML文檔生成索引結構開銷較大;索引結構復雜,不利于文檔的更新;關鍵字查詢受文檔大小的影響較大。這些不足之處還需通過進一步研究來彌補。

參考文獻:

[1]BRAY T, PAOLI J, SPERBERG-McQUEEN C M, et al. Extensible markup language 1.0(2nd ed)[EB/OL].(2005-05-10).http://www.W3c.org/TR/REC -xml/.

[2]CLARK J,DeROSE S.XML path language(XPath) version 1.0[EB/OL].[2005-05-10].http://www.w3.org/TR/2005/WD-xpath20-20050404.

[3]CHAMBERLIN D, FLORESCU D, ROBIE J. XQuery: a query language for XML W3C working draft[EB/OL].[2005-05-10].http://www.w3.org/TR/2005/WD-xquery- 20050404.

[4]GOLDMAN R, WIDOM J. Dataguides: enabling query formulation and optimization in semistructured databases[C]//Proc of the 23rd Int’l Conference on Very Large Data Bases(VLDB). Athens: Morgan Kaufmann, 1997:436-445.

[5]SRIVASTAVA D, Al-KHALIFA S, JAGADISH H, et al. Structural joins: a primitive for efficient XML query pattern matching[C]//Proc of ICDE. 2002:141-152.

[6]HARDING P J, LI Q Z, MOON B. XISS/R:XML indexing and storage system using RDBMS[C]//Proc of the 29th Int’l Conference on Very Large Data Bases (VLDB). Berlin: Morgan Kaufmann Publishers, 2003:1073-1076.

[7]IANG H F, LU H J, WANG W. XR-Tree: Indexing XML data for efficient structural joins[C]//Proc of the 19th Int’l Conf. on Data Engineering(ICDE). Bangalore: IEEE Computer Society, 2003:253-264.

[8]XMARK: The XML-benchmark project[EB/OL].(2002)[2005-05-10].http:// monetdb.ewi.nl/xml.

[9]王靜,孟小峰,王珊.基于區域劃分的XML結構連接[J].軟件學報,2004,15(5):720-729.

[10]王靜,孟小峰,王宇,等. 以目標節點為導向XML路徑查詢處理[J]. 軟件學報,2005,16(5):827-837.

[11]CHUNG C, MIN J, SHIM K. APEX:an adaptive path index for XML data[C]//Proc of SIGMOD. Madison:[s.n.], 2002:121-132.

[12]SCHENKEL R, THEOBALD A, WEIKUM G. HOPI: an efficient connection index for complex XML document collections[C]//Proc of EDBT, LNCS 2992. 2004:237-255.

[13]WANG H X, PARK S, FAN W. ViST: a dynamic index method for querying XML data by tree structure[C]//Proc of ACM SIGMOD Int’l Conference on Management of Data (SIGMOD). San Diego: ACM Press, 2003:110-121.

[14]XU Y, PAPAKONSTANTINOU Y. Efficient keyword search for smallest LCAs in XML databases[C]//Proc of ACM SIGMOD Int’l Conference on Management of Data (SIGMOD). Baltimore: ACM Press, 2005.

[15]萬常選,劉云生,陳升華,等.基于區間編碼的XML索引結構的有效結構連接[J].計算機學報,2005,28(1): 113-127.

[16]WANG W, WANG H Z, LU H J, et al. Efficient processing of XML path queries using the disk-based FB index[C]//Proc of the 31st Int’l Conference on Very Large Data Bases(VLDB). Trondheim: ACM Press, 2005:145-156.

[17]路燕,張亮,施伯樂,等. 一種基于DTD的XML索引方法[J]. 計算機研究與發展,2005,42(1): 30-37.

[18]孔令波,唐世渭,楊冬青,等. XML數據索引技術[J].軟件學報,2005,16(12):2063-2079.

“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”

主站蜘蛛池模板: 99久久精品免费看国产电影| 久操中文在线| 亚洲 欧美 中文 AⅤ在线视频| 成人亚洲国产| 欧美一级99在线观看国产| 免费在线播放毛片| 欧美成人精品一区二区| 99视频在线观看免费| 欧美成人二区| 亚洲色大成网站www国产| 亚洲天堂免费观看| 亚洲国产看片基地久久1024| 国产精品无码AV中文| 国产拍在线| 国产综合精品一区二区| 四虎国产成人免费观看| 老汉色老汉首页a亚洲| 黄色网址手机国内免费在线观看| 亚洲国产中文欧美在线人成大黄瓜| 天堂av综合网| 精品撒尿视频一区二区三区| 亚洲制服丝袜第一页| 国产精品免费电影| 日韩欧美中文亚洲高清在线| 一本无码在线观看| 成人小视频在线观看免费| 久久国产精品嫖妓| 91人妻在线视频| 国产无遮挡裸体免费视频| 亚洲一区二区无码视频| 一级毛片免费不卡在线| 好久久免费视频高清| 亚洲成aⅴ人在线观看| 亚洲黄色片免费看| 精品福利一区二区免费视频| 国产福利一区二区在线观看| 99这里只有精品在线| AV老司机AV天堂| 54pao国产成人免费视频| 亚洲精品无码AV电影在线播放| 国产成年无码AⅤ片在线| 91精品国产一区自在线拍| 国产精品欧美亚洲韩国日本不卡| 激情亚洲天堂| 91精品啪在线观看国产60岁 | 久久精品丝袜| 伊人久久久久久久| 在线观看无码av五月花| 久久无码av三级| 亚洲制服丝袜第一页| 精品无码国产自产野外拍在线| 成人va亚洲va欧美天堂| 国产天天色| 台湾AV国片精品女同性| 国产h视频免费观看| 亚洲国产成人超福利久久精品| 国产午夜精品一区二区三| 2020最新国产精品视频| 国产黑丝一区| 在线观看国产黄色| 国产精品va免费视频| 亚洲精品无码抽插日韩| 国产永久无码观看在线| 国产麻豆永久视频| 国产精品9| 亚洲精品无码久久久久苍井空| 亚洲黄色高清| 久久亚洲天堂| 99在线观看精品视频| 超碰精品无码一区二区| 国产女主播一区| 亚洲欧洲日本在线| 国产欧美日韩91| av免费在线观看美女叉开腿| 国产国模一区二区三区四区| 免费中文字幕一级毛片| 国产成人三级| 欧美日韩国产高清一区二区三区| 亚洲一级毛片| 久久国产亚洲偷自| 国产chinese男男gay视频网| 无码电影在线观看|