溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關系型數(shù)據(jù)庫引擎中XML索引技術的示例分析

發(fā)布時間:2021-09-17 15:36:39 來源:億速云 閱讀:204 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關關系型數(shù)據(jù)庫引擎中XML索引技術的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

xml(可擴展標記語言)已成為Web應用中數(shù)據(jù)表示和數(shù)據(jù)交換的標準,隨著Internet的快速發(fā)展,尤其是電子商務,Web服務等應用的廣泛使用,XML類型的數(shù)據(jù)成為當前主流的數(shù)據(jù)形式。因此XML數(shù)據(jù)的管理技術尤其是XML數(shù)據(jù)查詢技術成為當前的研究熱點。

相比起關系型數(shù)據(jù),XML有著各種各樣的優(yōu)點,但有個最大的缺陷就是它的效率。因為關系型數(shù)據(jù)文件中,數(shù)據(jù)的字段名只需出現(xiàn)一次即可,而XML數(shù)據(jù)文件中,元素名將反復出現(xiàn),這必須會影響到查詢的效率。為了盡可能的提高XML的查詢效率,需要為XML類型提供了索引功能。

萬維網(wǎng)聯(lián)盟于2007年1月23日將XPath3.0和XQuery1.0確定為推薦標準,結束了此前各種查詢語言群雄逐鹿的局面。 基于此標準, 除傳統(tǒng)廠商外,各科研機構紛紛提出了對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)品的索引技術基礎上為達夢XML查詢引擎設計一種較為合理的索引結構,以使該引擎能發(fā)揮較優(yōu)性能。

XML索引技術簡介

目前,人們對XML的研究主要分為兩個方面。一個是對XML這種半結構化數(shù)據(jù)的存儲、查詢和管理的的原生數(shù)據(jù)庫,其中的數(shù)據(jù)和元數(shù)據(jù)完全采用XML結構表示,與其底層的數(shù)據(jù)存儲格式(如對象模型、關系模型等)無關。另一個是它與關系數(shù)據(jù)庫之間的相互轉換,利用關系數(shù)據(jù)庫的成熟技術對XML數(shù)據(jù)進行處理。由于后一個方向比較有現(xiàn)實意義,因此成了XML研究中的重點。

而除了存儲方案之外,索引技術也是決定一個數(shù)據(jù)庫系統(tǒng)最重要的因素之一。如果對XML文檔不構建索引結構,那么針對XML數(shù)據(jù)的任何查詢都很可能導致對整個文檔樹的遍歷,隨著XML數(shù)據(jù)集的增大,這種開銷是不可忍受的。故此,對XML索引技術的研究具有較高的理論和實用價值。

雖然傳統(tǒng)的索引技術經(jīng)過長期的積累已經(jīng)相對成熟,但是,這類索引技術針對的主要是根據(jù)值(而不是具有某種關系的模式)定位數(shù)據(jù)記錄的功能,不太關注數(shù)據(jù)記錄間的邏輯關系;而 XML 數(shù)據(jù)查詢的基本特征就是根據(jù)模式特征(正則路徑表達式形式描述的結構關系)的輸入提取符合該模式的數(shù)據(jù),所以,XML 索引的主要內(nèi)容就是設計適用于模式匹配的技術。

XML索引分類

基于路徑的XML索引

基于路徑的索引是以XML樹結構中節(jié)點的路徑信息為基礎,采取某種約簡方式,使得約簡后的樹結構只維護不同的路徑信息,而不會存在具有相同路徑的兩個節(jié)點。 已經(jīng)提出的這類索引有:DataGuides索引、Index Fabric索引、XML數(shù)據(jù)的自適應路徑索引(Adaptive Path Index for XML Data, APEX )

Dataguides 索引是從根結點為起始的精練路徑的一種結構摘要。邊標簽串聯(lián)在一起形成的字符串路徑在 Dataguides 中只描述一次。Dataguides 減少了遍歷路徑查詢時所需的部分結點,它對從根部遍歷 XML文檔是有效的。但對于含有通配符的路徑查詢或對帶有XPath標準中定義的descendant-or-self軸的路徑查詢要進行多次的連接操作,查詢效率較低,并且存在數(shù)據(jù)冗余。

然后編寫關于這2個大字段的java對象文件TestLob.java,分別定義類型為CLOB和BLOB屬性字段為String和byte[]類型,其中由于CLOB是處理大文本類型所以它對應了Java中的String類型,BLOB是處理一些以二進制流形勢存儲的沒有嚴格定義的大文件所以讓它使用byte[]類型,然后分別定義這2個屬性的Getter和Setter方法,相關代碼如下:

Dataguides 索引是從根結點為起始的精練路徑的一種結構摘要。邊標簽串聯(lián)在一起形成的字符串路徑在 Dataguides 中只描述一次。Dataguides 減少了遍歷路徑查詢時所需的部分結點,它對從根部遍歷 XML文檔是有效的。但對于含有通配符的路徑查詢或對帶有XPath標準中定義的descendant-or-self軸的路徑查詢要進行多次的連接操作,查詢效率較低,并且存在數(shù)據(jù)冗余。

Index Fabric是在Patricia Trie樹上發(fā)展而來的一種索引結構,它把到每個元素節(jié)點的每條標記路徑都用一個字符串編碼,再將這些編碼值插入到Patricia Trie樹中去,從而將按照路徑方式對XML數(shù)據(jù)的查詢轉化為對字符串的查詢。在查詢時先將查詢路徑編碼成字符串的形式,再在索引樹中進行查找。Index Fabric索引優(yōu)點是存儲了XML數(shù)據(jù)的層次結構信息,統(tǒng)一處理了有模式和無模式信息情況下的XML數(shù)據(jù)的檢索,并且使對XML數(shù)據(jù)的查詢和更新所需要的時間與層次相關而不是與索引關鍵字的長度相關。Index Fabric索引的缺點在于丟失了元素節(jié)點間的結構關系,因為它只保留了有文本值的元素節(jié)點的信息。因此,與DataGuides索引類似,Index Fabric索引處理帶有XPath標準中定義的descendant-or-self軸的部分匹配查詢表達式效率不高

為此,APEX[14]引入了依賴于XML數(shù)據(jù)查詢分布的信息:將經(jīng)常出現(xiàn)的XML查詢語句對應的標簽節(jié)點預先保存在一個哈希結構中。它的作用類似于Cache的功能:當有新的查詢要求處理時,首先在哈希表中搜索是否有滿足的節(jié)點集合。但它對于帶有元素值或屬性值的查詢表達式的處理效率較低。

基于節(jié)點的索引

基于節(jié)點的索引本質上即是將XML數(shù)據(jù)分解為數(shù)據(jù)單元的記錄集合,同時在記錄中保存該單元在XML數(shù)據(jù)中的位置信息。與基于路徑的索引不同,基于節(jié)點的索引打破了必須通過標簽路徑查找節(jié)點這一限制,將XML數(shù)據(jù)分解成規(guī)范形式的節(jié)點記錄。由于保存了節(jié)點的位置信息,而且能夠很好地結合到成熟的關系數(shù)據(jù)庫管理系統(tǒng)中,因此它是目前應用最廣泛的一種索引。

根據(jù)對位置信息的編碼方式不同,基于節(jié)點的索引一般可以分為一下幾類:

1. 基于前綴的索引

基于前綴的索引主要是根據(jù)Dewey[12]編碼生成的索引,文獻[13]的 ORDPATH 編碼采用的也是類似的方法,并給出了壓縮 ORDPATH的方法,該方法已應用于SQL Server 2005的索引組織中。


前綴編碼的基本思想是直接將一個節(jié)點的雙親節(jié)點的編碼作為該節(jié)點編碼的前綴,對于前綴編碼,要判斷一個節(jié)點v是否另一個節(jié)點u的后裔,只要判斷u的編碼是否v的編碼的前綴。前綴編碼索引的一個重要性質是它們的字典有序:以節(jié)點r為根的子樹中的任意一個節(jié)點u,它的前綴編碼c(u)大于(小于)它的左兄弟子樹(右兄弟子樹)中所有節(jié)點的前綴編碼。因此,基于前綴的索引不僅能夠有效地支持包含關系的運算,而且能夠有效地支持文檔位置關系的計算。

2. 基于區(qū)間編碼的索引

對于區(qū)間編碼索引,樹T中的每一個結點被賦予一個區(qū)間編碼[begin,end],滿足:一個結點的區(qū)間編碼包含它的后裔結點的區(qū)間編碼.也就是說,樹T中 的節(jié)點u是節(jié)點v的祖先,當且僅當start(u)

第一個區(qū)間編碼方案是Dietz編碼,樹T中的每一個結點被賦予一個具有先序遍歷序號和后序遍歷序號的二元組.由于樹T中的一個祖先結點u在先序遍歷(后序遍歷)中必然出現(xiàn)在它的后裔結點v之前(之后),因此, 節(jié)點u和v是祖先/后裔關系,當且僅當PRe(u)

另一個區(qū)間編碼索引的典型例子是XISS索引,它為每個節(jié)點賦予一個數(shù)字對,其中order為擴展的前序編碼,size為節(jié)點的子孫的范圍。對一棵文檔樹中的任意節(jié)點X和Y,當且僅當order(x)

XISS索引通過將原始查詢語句分解為子表達式。然后分別針對這些子表達式實現(xiàn)查詢,最后對這些中間結果進行聯(lián)結獲得查詢結果集。從而能較好地支持含通配符的查詢語句。不過,它是對每一個中間結果進行聯(lián)結后得到最終查詢結果。雖然這樣一種方法的確能夠解決所有的通配符問題,可是,這種中間結果的聯(lián)結很有可能是非常耗時的,特別是對于長路徑的簡單表達式。

兩種索引機制的比較

基于路徑的索引主要基于節(jié)點合并的策略,通過節(jié)點等價、路徑等價等技術,得到比原始文檔小得多的索引結構,它的結構仍然是樹型的,所以在處理查詢時,基本上仍須遍歷整個索引樹才能得到結果。基于路徑的索引可以很好地支持簡單路徑表達式的查詢,但是對于正則路徑表達式,它效果不是很理想。

基于節(jié)點的索引通過編碼技術索引每一個節(jié)點,節(jié)點之間的結構關系通過編碼可以在常數(shù)時間內(nèi)確定它可以很好地支持正則路徑表達式,但是對于長的路徑表達式,尤其是在查詢產(chǎn)生的中間結果很多的時候,節(jié)點索引的連接操作代價高昂。

基于路徑的索引和基于節(jié)點的索引各有優(yōu)缺點,但可以優(yōu)勢互補。目前在實際應用中,基于節(jié)點的索引應用更為廣泛,研究得也比較成熟,因此,達夢公司有關XML索引結構研究主要以基于節(jié)點的索引為主,并適當參考基于路徑的索引加以改進。

感謝各位的閱讀!關于“關系型數(shù)據(jù)庫引擎中XML索引技術的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI