這篇文章給大家分享的是有關(guān)關(guān)系型數(shù)據(jù)庫引擎中XML索引技術(shù)的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、二七網(wǎng)站維護、網(wǎng)站推廣。xml(可擴展標記語言)已成為Web應(yīng)用中數(shù)據(jù)表示和數(shù)據(jù)交換的標準,隨著Internet的快速發(fā)展,尤其是電子商務(wù),Web服務(wù)等應(yīng)用的廣泛使用,XML類型的數(shù)據(jù)成為當前主流的數(shù)據(jù)形式。因此XML數(shù)據(jù)的管理技術(shù)尤其是XML數(shù)據(jù)查詢技術(shù)成為當前的研究熱點。
相比起關(guān)系型數(shù)據(jù),XML有著各種各樣的優(yōu)點,但有個大的缺陷就是它的效率。因為關(guān)系型數(shù)據(jù)文件中,數(shù)據(jù)的字段名只需出現(xiàn)一次即可,而XML數(shù)據(jù)文件中,元素名將反復(fù)出現(xiàn),這必須會影響到查詢的效率。為了盡可能的提高XML的查詢效率,需要為XML類型提供了索引功能。
萬維網(wǎng)聯(lián)盟于2007年1月23日將XPath3.0和XQuery1.0確定為推薦標準,結(jié)束了此前各種查詢語言群雄逐鹿的局面。 基于此標準, 除傳統(tǒng)廠商外,各科研機構(gòu)紛紛提出了對XPath和XQuery的實現(xiàn)(文獻中提及的有十數(shù)種),其存儲模型不同,查詢算法各異,優(yōu)化途徑也各有所長,在這樣的背景下,達夢數(shù)據(jù)庫公司根據(jù)自身發(fā)展戰(zhàn)略,也提出了自己的XML查詢引擎模型,目前,達夢的XML查詢引擎正在緊張開發(fā)中,而對XML數(shù)據(jù)建立有效的索引是影響XML數(shù)據(jù)查詢性能的重要因素。在深入分析當前已有的數(shù)據(jù)庫產(chǎn)品的索引技術(shù)基礎(chǔ)上為達夢XML查詢引擎設(shè)計一種較為合理的索引結(jié)構(gòu),以使該引擎能發(fā)揮較優(yōu)性能。
XML索引技術(shù)簡介
目前,人們對XML的研究主要分為兩個方面。一個是對XML這種半結(jié)構(gòu)化數(shù)據(jù)的存儲、查詢和管理的的原生數(shù)據(jù)庫,其中的數(shù)據(jù)和元數(shù)據(jù)完全采用XML結(jié)構(gòu)表示,與其底層的數(shù)據(jù)存儲格式(如對象模型、關(guān)系模型等)無關(guān)。另一個是它與關(guān)系數(shù)據(jù)庫之間的相互轉(zhuǎn)換,利用關(guān)系數(shù)據(jù)庫的成熟技術(shù)對XML數(shù)據(jù)進行處理。由于后一個方向比較有現(xiàn)實意義,因此成了XML研究中的重點。
而除了存儲方案之外,索引技術(shù)也是決定一個數(shù)據(jù)庫系統(tǒng)最重要的因素之一。如果對XML文檔不構(gòu)建索引結(jié)構(gòu),那么針對XML數(shù)據(jù)的任何查詢都很可能導(dǎo)致對整個文檔樹的遍歷,隨著XML數(shù)據(jù)集的增大,這種開銷是不可忍受的。故此,對XML索引技術(shù)的研究具有較高的理論和實用價值。
雖然傳統(tǒng)的索引技術(shù)經(jīng)過長期的積累已經(jīng)相對成熟,但是,這類索引技術(shù)針對的主要是根據(jù)值(而不是具有某種關(guān)系的模式)定位數(shù)據(jù)記錄的功能,不太關(guān)注數(shù)據(jù)記錄間的邏輯關(guān)系;而 XML 數(shù)據(jù)查詢的基本特征就是根據(jù)模式特征(正則路徑表達式形式描述的結(jié)構(gòu)關(guān)系)的輸入提取符合該模式的數(shù)據(jù),所以,XML 索引的主要內(nèi)容就是設(shè)計適用于模式匹配的技術(shù)。
XML索引分類
基于路徑的XML索引
基于路徑的索引是以XML樹結(jié)構(gòu)中節(jié)點的路徑信息為基礎(chǔ),采取某種約簡方式,使得約簡后的樹結(jié)構(gòu)只維護不同的路徑信息,而不會存在具有相同路徑的兩個節(jié)點。 已經(jīng)提出的這類索引有:DataGuides索引、Index Fabric索引、XML數(shù)據(jù)的自適應(yīng)路徑索引(Adaptive Path Index for XML Data, APEX )
Dataguides 索引是從根結(jié)點為起始的精練路徑的一種結(jié)構(gòu)摘要。邊標簽串聯(lián)在一起形成的字符串路徑在 Dataguides 中只描述一次。Dataguides 減少了遍歷路徑查詢時所需的部分結(jié)點,它對從根部遍歷 XML文檔是有效的。但對于含有通配符的路徑查詢或?qū)в蠿Path標準中定義的descendant-or-self軸的路徑查詢要進行多次的連接操作,查詢效率較低,并且存在數(shù)據(jù)冗余。
然后編寫關(guān)于這2個大字段的java對象文件TestLob.java,分別定義類型為CLOB和BLOB屬性字段為String和byte[]類型,其中由于CLOB是處理大文本類型所以它對應(yīng)了Java中的String類型,BLOB是處理一些以二進制流形勢存儲的沒有嚴格定義的大文件所以讓它使用byte[]類型,然后分別定義這2個屬性的Getter和Setter方法,相關(guān)代碼如下:
Dataguides 索引是從根結(jié)點為起始的精練路徑的一種結(jié)構(gòu)摘要。邊標簽串聯(lián)在一起形成的字符串路徑在 Dataguides 中只描述一次。Dataguides 減少了遍歷路徑查詢時所需的部分結(jié)點,它對從根部遍歷 XML文檔是有效的。但對于含有通配符的路徑查詢或?qū)в蠿Path標準中定義的descendant-or-self軸的路徑查詢要進行多次的連接操作,查詢效率較低,并且存在數(shù)據(jù)冗余。
Index Fabric是在Patricia Trie樹上發(fā)展而來的一種索引結(jié)構(gòu),它把到每個元素節(jié)點的每條標記路徑都用一個字符串編碼,再將這些編碼值插入到Patricia Trie樹中去,從而將按照路徑方式對XML數(shù)據(jù)的查詢轉(zhuǎn)化為對字符串的查詢。在查詢時先將查詢路徑編碼成字符串的形式,再在索引樹中進行查找。Index Fabric索引優(yōu)點是存儲了XML數(shù)據(jù)的層次結(jié)構(gòu)信息,統(tǒng)一處理了有模式和無模式信息情況下的XML數(shù)據(jù)的檢索,并且使對XML數(shù)據(jù)的查詢和更新所需要的時間與層次相關(guān)而不是與索引關(guān)鍵字的長度相關(guān)。Index Fabric索引的缺點在于丟失了元素節(jié)點間的結(jié)構(gòu)關(guān)系,因為它只保留了有文本值的元素節(jié)點的信息。因此,與DataGuides索引類似,Index Fabric索引處理帶有XPath標準中定義的descendant-or-self軸的部分匹配查詢表達式效率不高
為此,APEX[14]引入了依賴于XML數(shù)據(jù)查詢分布的信息:將經(jīng)常出現(xiàn)的XML查詢語句對應(yīng)的標簽節(jié)點預(yù)先保存在一個哈希結(jié)構(gòu)中。它的作用類似于Cache的功能:當有新的查詢要求處理時,首先在哈希表中搜索是否有滿足的節(jié)點集合。但它對于帶有元素值或?qū)傩灾档牟樵儽磉_式的處理效率較低。
基于節(jié)點的索引
基于節(jié)點的索引本質(zhì)上即是將XML數(shù)據(jù)分解為數(shù)據(jù)單元的記錄集合,同時在記錄中保存該單元在XML數(shù)據(jù)中的位置信息。與基于路徑的索引不同,基于節(jié)點的索引打破了必須通過標簽路徑查找節(jié)點這一限制,將XML數(shù)據(jù)分解成規(guī)范形式的節(jié)點記錄。由于保存了節(jié)點的位置信息,而且能夠很好地結(jié)合到成熟的關(guān)系數(shù)據(jù)庫管理系統(tǒng)中,因此它是目前應(yīng)用最廣泛的一種索引。
根據(jù)對位置信息的編碼方式不同,基于節(jié)點的索引一般可以分為一下幾類:
1. 基于前綴的索引
基于前綴的索引主要是根據(jù)Dewey[12]編碼生成的索引,文獻[13]的 ORDPATH 編碼采用的也是類似的方法,并給出了壓縮 ORDPATH的方法,該方法已應(yīng)用于SQL Server 2005的索引組織中。
前綴編碼的基本思想是直接將一個節(jié)點的雙親節(jié)點的編碼作為該節(jié)點編碼的前綴,對于前綴編碼,要判斷一個節(jié)點v是否另一個節(jié)點u的后裔,只要判斷u的編碼是否v的編碼的前綴。前綴編碼索引的一個重要性質(zhì)是它們的字典有序:以節(jié)點r為根的子樹中的任意一個節(jié)點u,它的前綴編碼c(u)大于(小于)它的左兄弟子樹(右兄弟子樹)中所有節(jié)點的前綴編碼。因此,基于前綴的索引不僅能夠有效地支持包含關(guān)系的運算,而且能夠有效地支持文檔位置關(guān)系的計算。
2. 基于區(qū)間編碼的索引
對于區(qū)間編碼索引,樹T中的每一個結(jié)點被賦予一個區(qū)間編碼[begin,end],滿足:一個結(jié)點的區(qū)間編碼包含它的后裔結(jié)點的區(qū)間編碼.也就是說,樹T中 的節(jié)點u是節(jié)點v的祖先,當且僅當start(u)
第一個區(qū)間編碼方案是Dietz編碼,樹T中的每一個結(jié)點被賦予一個具有先序遍歷序號和后序遍歷序號的二元組.由于樹T中的一個祖先結(jié)點u在先序遍歷(后序遍歷)中必然出現(xiàn)在它的后裔結(jié)點v之前(之后),因此, 節(jié)點u和v是祖先/后裔關(guān)系,當且僅當PRe(u)
另一個區(qū)間編碼索引的典型例子是XISS索引,它為每個節(jié)點賦予一個數(shù)字對,其中order為擴展的前序編碼,size為節(jié)點的子孫的范圍。對一棵文檔樹中的任意節(jié)點X和Y,當且僅當order(x)
XISS索引通過將原始查詢語句分解為子表達式。然后分別針對這些子表達式實現(xiàn)查詢,最后對這些中間結(jié)果進行聯(lián)結(jié)獲得查詢結(jié)果集。從而能較好地支持含通配符的查詢語句。不過,它是對每一個中間結(jié)果進行聯(lián)結(jié)后得到最終查詢結(jié)果。雖然這樣一種方法的確能夠解決所有的通配符問題,可是,這種中間結(jié)果的聯(lián)結(jié)很有可能是非常耗時的,特別是對于長路徑的簡單表達式。
兩種索引機制的比較
基于路徑的索引主要基于節(jié)點合并的策略,通過節(jié)點等價、路徑等價等技術(shù),得到比原始文檔小得多的索引結(jié)構(gòu),它的結(jié)構(gòu)仍然是樹型的,所以在處理查詢時,基本上仍須遍歷整個索引樹才能得到結(jié)果?;诼窂降乃饕梢院芎玫刂С趾唵温窂奖磉_式的查詢,但是對于正則路徑表達式,它效果不是很理想。
基于節(jié)點的索引通過編碼技術(shù)索引每一個節(jié)點,節(jié)點之間的結(jié)構(gòu)關(guān)系通過編碼可以在常數(shù)時間內(nèi)確定它可以很好地支持正則路徑表達式,但是對于長的路徑表達式,尤其是在查詢產(chǎn)生的中間結(jié)果很多的時候,節(jié)點索引的連接操作代價高昂。
基于路徑的索引和基于節(jié)點的索引各有優(yōu)缺點,但可以優(yōu)勢互補。目前在實際應(yīng)用中,基于節(jié)點的索引應(yīng)用更為廣泛,研究得也比較成熟,因此,達夢公司有關(guān)XML索引結(jié)構(gòu)研究主要以基于節(jié)點的索引為主,并適當參考基于路徑的索引加以改進。
感謝各位的閱讀!關(guān)于“關(guān)系型數(shù)據(jù)庫引擎中XML索引技術(shù)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站欄目:關(guān)系型數(shù)據(jù)庫引擎中XML索引技術(shù)的示例分析-創(chuàng)新互聯(lián)
文章地址:http://www.rwnh.cn/article46/csehhg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、關(guān)鍵詞優(yōu)化、自適應(yīng)網(wǎng)站、品牌網(wǎng)站制作、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容