專利名稱:基于關(guān)系代數(shù)范圍運算的xml數(shù)據(jù)庫查詢方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機中的數(shù)據(jù)庫應(yīng)用技術(shù)領(lǐng)域,特別是一種基于關(guān)系 代數(shù)范圍運算的XML數(shù)據(jù)庫查詢方法。
背景技術(shù):
隨著互連網(wǎng)的迅速發(fā)展,WEB頁面正在以驚人的速度增長。作為WEB 的基礎(chǔ)語言,HTML取得了很大成功。但HTML固定標簽集的缺點在于缺乏 擴展性,無法支持各種領(lǐng)域種類繁多的數(shù)據(jù)。為此W3C開始制訂XML標 準,目標是具有擴展性、結(jié)構(gòu)性和有效性的標記語言。
目前,XML已經(jīng)在許多領(lǐng)域得到了廣泛應(yīng)用,如模式設(shè)計、內(nèi)容管理、 數(shù)據(jù)集成等等。作為定義、存儲和交換數(shù)據(jù)的有效工具,XML技術(shù)與數(shù)據(jù) 庫技術(shù)也正在相互融合,XML數(shù)據(jù)庫適合管理復(fù)雜數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)集,如 果已經(jīng)以XML格式存儲信息,則XML數(shù)據(jù)庫利于文檔存儲和檢索;可以 用方1"更實用的方式4企索文檔,并能夠提供高質(zhì)量的全文搜索引擎。特別 適合對半結(jié)構(gòu)化數(shù)據(jù)的管理。另外XML數(shù)據(jù)庫能夠存儲和查詢異種的文 檔結(jié)構(gòu),提供對異種信息存取的支持。
作為數(shù)據(jù)存儲、定義、交換和共享的平臺,XML文檔是一種層次結(jié)構(gòu), 4艮自然的,我們用文檔樹來描述XML文檔。文檔樹中包含根節(jié)點、元素 節(jié)點、屬性節(jié)點、文本節(jié)點、注釋節(jié)點、處理指令、命名空間節(jié)點等。 XPath是一種輕量的XML查詢語言,也是其他XML查詢語言如XQuery、 XSLT的基礎(chǔ),它通過帶有搜索路徑表達式來在XML文檔中定位文本數(shù)據(jù)、 元素、屬性以及其他信息。
目前對于XPath的實現(xiàn)存在多種方案基于網(wǎng)絡(luò)層次模型的原生XML 數(shù)據(jù)庫,對關(guān)系數(shù)據(jù)庫的擴展實現(xiàn)方案,數(shù)據(jù)庫中間件等等。其中,對 于關(guān)系數(shù)據(jù)庫的擴展實現(xiàn)方案較好的結(jié)合了關(guān)系模型和半結(jié)構(gòu)化層次模 型的優(yōu)點,但諸如SQL Server等流行的關(guān)系型數(shù)據(jù)庫的XPath實現(xiàn)上依 賴于字符串的匹配和LIKE運算,因為計算機在字符串運算上的效率相對 于整數(shù)運算較低,所以尚存在一些性能問題,本發(fā)明以整數(shù)的范圍運算 為基礎(chǔ)構(gòu)建XPath查詢算法,充分利用CPU整數(shù)運算性能強的特點。 所依據(jù)的技術(shù)文獻和標準
W3C Candidate Recommendation
《XQuery 1. 0: An XMiL Query Language》
《XML Path Language (XPath) 2.0》
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種通過整數(shù)的范圍查詢來實現(xiàn)XPath查詢的 基于關(guān)系代數(shù)范圍運算的XML數(shù)據(jù)庫查詢方法,。
為了實現(xiàn)上述目的,本發(fā)明所采用的方法是把XPath查詢的路徑 表達式轉(zhuǎn)化為整數(shù)的范圍查詢,利用B樹索引有效的存儲和索引XML。
上述方法的具體步驟是
第一步驟注冊XML模式形成數(shù)據(jù)模型的標準即數(shù)據(jù)在XML文檔 中應(yīng)該遵循的規(guī)則,內(nèi)容包括文檔中允許的元素(標簽)、各個元素(標簽) 之間的關(guān)系、可以分配給每個元素的屬性、每個標簽允許的數(shù)據(jù)類型(文 本、其他元素、組合)等等,將XML模式進行分析,使得XML模式中的每 個元素和屬性節(jié)點分配一個特定的整數(shù)區(qū)間,保證各個區(qū)間之間沒有交
集;
第二步驟對基于模式、良構(gòu)的XML文檔進行分析,得到其信息集 (Infoset)結(jié)構(gòu)對于同類型的元素或?qū)傩怨?jié)點根據(jù)其在XML模式中的所 屬類型和XML文檔中的相對位置,確定對應(yīng)于XML模式中的整數(shù)區(qū)間,并 在此區(qū)間內(nèi)分配唯一的整數(shù)標識值給當前節(jié)點,換言之,元素和屬性節(jié) 點的標識整數(shù)值所落在的整數(shù)范圍,這樣XPath查詢工作的一部分就轉(zhuǎn) 化為整數(shù)的范圍子查詢;
第三步驟根據(jù)第二步驟查詢的方案,形成適應(yīng)于樹模型的嵌套查 詢,選出符合XPath樹模式的最后結(jié)果集,該結(jié)果集也是一個序列。
本發(fā)明的先進性在于利用整數(shù)的范圍查詢實現(xiàn)XML的XPath查詢, 因為關(guān)系引擎以B樹索引為基礎(chǔ),釆用對于主鍵的比較查詢搜索數(shù)據(jù), 而計算機中整數(shù)的比較運算是最快的,這樣的實現(xiàn)避免了字符串匹配運 算的開銷,效率很高。
圖1為本發(fā)明的系統(tǒng)框圖。
具體實施例方式
下面結(jié)合附圖和實施例對本發(fā)明作進一步的詳細描述,但該實施例 不應(yīng)理解為對本發(fā)明的限制。
B樹索引是關(guān)系數(shù)據(jù)庫中廣泛使用的索引,如果能利用它有效存儲和 索引XML,將會降低關(guān)系數(shù)據(jù)庫支持XML開發(fā)的難度。B樹索引檢索基于 對于主鍵的比較運算,而計算機中整數(shù)的比較運算是最快的。
首先對于XML模式中所登記的元素和屬性節(jié)點進行登記,形成下面的 表格,存儲在ML模式庫中
節(jié)點標識節(jié)點名路徑節(jié)點類型節(jié)點ID范圍
其中節(jié)點名是節(jié)點的元素名或者屬性名,路徑對于根據(jù)從文檔樹根 到此節(jié)點的路徑所經(jīng)過的各個節(jié)點的標識串聯(lián)節(jié)點的祖先-后代關(guān)系進 行了編碼,節(jié)點類型區(qū)分元素節(jié)點、屬性節(jié)點、文本節(jié)點、處理指令節(jié)
點等。節(jié)點范圍定義了某種類型的節(jié)點在XML文檔的信息集合表(Infoset)
中節(jié)點編號的取值范圍。
其次,對于XML文檔進行分析,將文檔中的各種元素、屬性、文本等 節(jié)點信息進行記錄,存儲在如下的Infoset表中
節(jié)點編號ID
節(jié)點值Value
父親節(jié)點編號ParentID
其中,節(jié)點編號ID所在的范圍決定了節(jié)點的名字、類型、路徑等信 息。它具有以下特性
(1) 不同名字的節(jié)點的編號所在范圍不同;
(2) 相同名字的節(jié)點的編號所在范圍相同;
(3) 相同名字的兩個節(jié)點的ID,前驅(qū)節(jié)點的ID較??;
(4) 相同名字的兩個節(jié)點的ID,后繼節(jié)點的ID較大;
(5) 父親節(jié)點編號ParentID,來自于另一記錄的節(jié)點編號ID,同一 記錄中父親節(jié)點編號ParentID、節(jié)點編號ID標識了節(jié)點間的父子關(guān) 系。
對于給定的XPath查詢,分為幾種情況考慮 (1)簡單的XPath路徑,例如/B00K/SECTI0N 處理方法
(a) 查詢XML模式表,得到路徑所對應(yīng)的節(jié)點編號范圍[min, max]
(b) 構(gòu)造關(guān)系查詢SEELCT * FROM Infoset WHERE ID 〉= min AND ID O max
(c) 將獲得的節(jié)點集合規(guī)格化為結(jié)果XML文本
(2 )XPath路徑,最后一個路徑步帶有謂詞,例如/BOOK /SECTION/Ti Ue
處理方法
(a) 查詢XML才莫式表,得到為此前面路徑所對應(yīng)的節(jié)點編號范圍[min, max],同時耳又最后的謂詞為Predicate
(b) 構(gòu)造關(guān)系查詢?yōu)閹в蟹秶樵兒蚉redicate的與運算的查詢 SEELCT * FROM Infoset WHERE ID 〉= min AND ID <= max AND Predicate
(c) 將獲得的節(jié)點集合規(guī)格化為結(jié)果XML文本 (3)XPath路徑,中間的路徑步帶有謂詞,例如/BOOK[AUTHOR-, Willy]/SECT工ON/Title
處理方法
(a) 假設(shè)XPath為Pathl [Predicate] /Path2
查詢XML才莫式表,得到Pathl所對應(yīng)的節(jié)點編號范圍[mini, maxl], Path2所對應(yīng)的節(jié)點編號范圍[min2, max2],同時取最后的謂詞為 Predicate
(b) 構(gòu)造關(guān)系查詢?yōu)閹в蟹秶樵兒蚉redicate的與運算的自連接查 詢
SEELCT * FROM Infoset T2 WHERE T2. ID 〉= min2 AND T2. ID <= max2 AND T2. ParentID IN
SEELCT Tl. ParentID FROM Infoset Tl WHERE Tl. ID 〉= mini AND Tl. ID <=maxl AND Predicate
本說明書中未作詳細描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)
有技術(shù)。
權(quán)利要求
1、一種基于關(guān)系代數(shù)范圍運算的XML數(shù)據(jù)庫查詢方法,其方法是把XPath查詢的路徑表達式轉(zhuǎn)化為整數(shù)的范圍查詢,利用B樹索引有效的存儲和索引XML。
2、如權(quán)利要求1所述的基于關(guān)系代數(shù)范圍運算的XML數(shù)據(jù)庫查詢方 法,其特征在于簡單的XPath查詢的路徑直接轉(zhuǎn)化為范圍查詢,尾部 帶有謂詞P的XPath路徑轉(zhuǎn)化為帶有范圍查詢和謂詞P與運算的查詢, 尾部帶有謂詞的XPath路徑轉(zhuǎn)化為帶有范圍查詢和謂詞P的與運算的自 連4妄查詢。
3、如權(quán)利要求1所述的基于關(guān)系代數(shù)范圍運算的XML數(shù)據(jù)庫查詢方 法,其特征在于其具體步驟是第一步驟注冊XML模式形成數(shù)據(jù)模型的標準包括文檔中允許的 元素、各個元素之間的關(guān)系、分配給每個元素的屬性、每個元素允許的 數(shù)據(jù)類型,將XML模式進行分析,使得觀L模式中的每個元素和屬性節(jié) 點分配一個特定的整數(shù)區(qū)間,保證各個區(qū)間之間沒有交集;笫二步驟對基于模式、良構(gòu)的XML文檔進行分析,得到其信息集 庫對于同類型的元素或?qū)傩怨?jié)點根據(jù)其在XML才莫式中的所屬類型和XML 文檔中的相對位置,確定對應(yīng)于XML模式中的整數(shù)區(qū)間,并在此區(qū)間內(nèi)分 配唯一的整數(shù)標識值給當前節(jié)點,換言之,元素和屬性節(jié)點的標識整數(shù) 值所落在的整數(shù)范圍,使XPath查詢工作的一部分轉(zhuǎn)化為整數(shù)的范圍子 查詢;第三步驟根據(jù)第二步驟查詢的方案,形成適應(yīng)于樹模型的嵌套查 詢,選出符合XPath樹模式的最后結(jié)果集,該結(jié)果集是一個序列。
4、如權(quán)利要求3所述的基于關(guān)系代數(shù)范圍運算的XML數(shù)據(jù)庫查詢方 法,其特征在于信息集庫存儲XML數(shù)據(jù)的元素節(jié)點、屬性節(jié)點、文本 節(jié)點以及節(jié)點間的相互關(guān)系等信息,信息集庫中,節(jié)點編號所在的范圍 決定節(jié)點的名字、類型、路徑,節(jié)點的名字、類型、路徑具有以下特性(1) 不同名字的節(jié)點的編號所在范圍不同;(2) 相同名字的節(jié)點的編號所在范圍相同;(3) 相同名字的兩個節(jié)點的ID,前驅(qū)節(jié)點的ID較??;(4) 相同名字的兩個節(jié)點的ID,后繼節(jié)點的ID較大。
全文摘要
本發(fā)明涉及一種基于關(guān)系代數(shù)范圍運算的XML數(shù)據(jù)庫查詢方法,其方法是把XPath查詢的路徑表達式轉(zhuǎn)化為整數(shù)的范圍查詢,利用B樹索引有效的存儲和索引XML;簡單的XPath查詢的路徑直接轉(zhuǎn)化為范圍查詢。本發(fā)明的先進性在于利用整數(shù)的范圍查詢實現(xiàn)XML的XPath查詢,因為關(guān)系引擎以B樹索引為基礎(chǔ),采用對于主鍵的比較查詢搜索數(shù)據(jù),而計算機中整數(shù)的比較運算是最快的,這樣的實現(xiàn)避免了字符串匹配運算的開銷,效率很高。
文檔編號G06F17/30GK101183376SQ200710168709
公開日2008年5月21日 申請日期2007年12月7日 優(yōu)先權(quán)日2007年12月7日
發(fā)明者周英彪, 徐小雙 申請人:武漢達夢數(shù)據(jù)庫有限公司