用於XML數據存儲庫中的XPath執行的方法和系統的製作方法
2023-07-03 21:12:21
專利名稱:用於XML數據存儲庫中的XPath執行的方法和系統的製作方法
技術領域:
本發明涉及XPath執行,具體來說,涉及一種用於XML數據存儲庫中的XPath執行的方法和系統。
背景技術:
XPath是為了對XML文件中的節點進行尋址而提供的一種查詢語言。目前,以XML 格式編碼的數據量正在迅速增加。因此,針對大量的XML數據,如何高效地執行基於XML 的查詢處理,即,如何高效地進行XPath執行,這對於本領域技術人員來說是一個巨大的挑 戰。本領域技術人員在這個方面已經進行了許多嘗試。在現有技術中,通常有兩種方式來執行XPath查詢。在第一種方式中,首先將XPath語言轉換成SQL語言,然後,基於SQL在資料庫中 進行查詢。例如,在 Muralidhar Krishnaprasad、Zhen Hua Liu、Anand Manikutty、James W. Warner、Vikas Arora、Susan Kotsovolos 的 「Query Rewrite for XML in Oracle XML DB」Proc.VLDB,2004中公幵了一種基於Oracle XML DB進行查詢的技術方案;在Shank. Pal、Istvan Cseri、Oliver Seeliger、Michael Rys、Gideon Schaller、Wei Yu、D.Tomic、 A. Barasλ Brandon Berg、Denis Churin 的"XQuery Implementation in a Relational Database System」 VLDB,2005中公幵了一種基於SQL Server 2008進行查詢的技術方案; 在 Daniela Florescu、Ch ris Hillery、Donald Kossmann、Paul Lucas、Fabio RiccardiΛ Till Westmannλ Michael J. Carey、Arvind Sundararajan 「The BEA/XQRL Streaming XQuery Processor」 Proc. VLDB,2003 公幵 了一禾中基於 BEA XQuery Processor 進行查詢 的技術方案;在"Oracle Berkeley DB XML,,2009 (http "www. oracle, com/database/ berkeley-db/xml/index. html)公幵了一種基於 Open-source XML DB 進行查詢的技術 方案;以及在 Q. Li、B. Moon.的"Indexing and Querying XML Data for Regular Path Expressions,,VLDB 2001 禾口 Μ· YoshiKawa、Τ· Amagasa 的 「XRel :APath_based Approach to Storage and Retrieval of XML Documents using Relational Databases,,ACM Transactions on Internet Technology 2001 中公幵了一禾中技術方案。然而,這種方式存在缺陷。例如,這種方式難於維護XML模式的改變。在這種方式 中,如果XML模式發生改變,則資料庫中表的結構也要進行改變,以及XPath查詢與SQL查 詢之間的映射關係也要進行改變。這些改變往往是複雜而且耗時的,並且是容易產生錯誤 的。另外,在這種方式中,SQL執行連接操作的代價也很大。在第二種方式,直接針對每個XML實例進行XPath執行。例如,在Matthias Nicola、Bertvander Linden 的"Native XML Support inDB2 Universal Database,,VLDB 2005 禾口 Guogen Zhang 的「Buildinga Scalable Native XML Database Engine on Infrastructure for aRelational Database"XIME-P 2005 中公開了基於 IBM DB2 進行 查詢的技術方案;以及在 Haifeng Jiang、Hongjun Lu、Wei Wang、Jeffrey Xu Yu 的 「Path Materialization Revisited :An Efficient Storage Model for XML Data"AICE2000禾口 H. Jiang、W. Wang、H. Lu、J. Xu Yu 的「Holistic Twig Joins on Indexed XML Documents」VLDB 2003公開了一種技術方案。然而,這種方式也存在缺陷。例如,在這種方式中,需要針對每個XML實例計算上 下文。因此,其執行代價很高。因此,需要提出一種新的高效的XPath執行技術來解決上述現有技術中的任何問題。
發明內容
本發明的一個目的是解決或者減輕上面所述的現有技術中的技術問題中的至少一個。根據本發明的第一方面,提供了一種用於XML數據存儲庫中的XPath執行的方法, 包括解析步驟,用於利用簡單路徑文件來解析輸入的XPath查詢,以生成關於該XPath查 詢的執行樹,其中所述簡單路徑文件是基於數據存儲庫中的多個XML文件的層次結構生成 的一個XML文件,其中所生成的一個XML文件中的節點的節點名稱是通過記錄數據存儲庫 中的多個XML文件中的各個節點的標籤信息而生成的;以及執行步驟,用於對數據存儲庫 執行該執行樹,以產生最終執行結果。優選地,所述簡單路徑文件包括由根節點和子節點形成的樹狀結構。優選地,通過所述數據存儲庫中增加的XML文件來更新所述簡單路徑文件。優選地,所述執行樹包括主節點,所述主節點是在XPath解析過程中對所述XPath 查詢的每一查詢步驟完成時所得到的結果節點。優選地,所述解析步驟還包括進行軸執行並檢查XPath查詢中的名稱,以選擇與 該XPath查詢中的名稱一致的所述簡單路徑文件中的節點作為當前主節點;判斷當前主節 點是否具有謂詞;以及如果當前主節點不具有謂詞,則更新執行樹。優選地,所述解析步驟還包括如果當前主節點具有謂詞,則進行謂詞執行。優選地,所述解析步驟是從所述簡單路徑文件的根節點開始執行的。優選地,更新執行樹還包括添加用於反映XPath查詢中節點的相對順序信息的 謂詞節點。優選地,更新執行樹還包括更新謂詞節點的位置信息。優選地,所述方法還包括根據所述簡單路徑文件中的每個節點,以有序的方式將 數據存儲在數據存儲庫。根據本發明的第一方面,提供了一種用於XML數據存儲庫中的XPath執行的系統, 包括解析器,用於利用簡單路徑文件來解析輸入的XPath查詢,以生成關於該XPath查詢 的執行樹,其中所述簡單路徑文件是基於數據存儲庫中的多個XML文件的層次結構生成的 一個XML文件,其中所生成的一個XML文件中的節點的節點名稱是通過記錄數據存儲庫中 的多個XML文件中的各個節點的標籤信息而生成的;以及執行器,用於對數據存儲庫執行 該執行樹,以產生最終執行結果。本發明的一個優點在於,由於可以直接對簡單路徑文件進行修改,因此,可以很 容 易地維護XML文件的模式改變。本發明的另一個優點在於,由於不必針對每個XML實例計算上下文,因此,可以節省計算資源,提高效率。本發明的另一個優點在 於,可以提供線性的執行時間。例如,根據本發明,可以預 先按有序的方式在數據存儲庫中存儲數據。因此,這可以進一步提高效率。通過以下參照附圖對本發明的示例性實施例的詳細描述,本發明的其它特徵及其 優點將會變得清楚。
構成說明書的一部分的附圖描述了本發明的實施例,並且連同對其的描述一起用 於解釋本發明的原理。參照附圖,根據下面的詳細描述,可以更加清楚地理解本發明,其中圖1是示出根據本發明的實施例的方法的流程圖。圖2是示出根據本發明的實施例的系統的框圖。圖3是根據本發明的實施例的用於描述簡單路徑文件的例子的示意圖。圖4是根據本發明的實施例的用於描述從數據存儲庫查詢數據的一個例子的示 意圖。圖5是示出根據本發明的實施例的執行樹的例子的示意圖。圖6是示出根據本發明的實施例的一種用於生成執行樹的方法的流程圖。圖7A、7B、7C和7D是示出根據本發明的實施例的一個用於生成執行樹的例子的示意圖。圖8是根據本發明的實施例的用於說明節點之間的關係的示意圖。圖9是示出根據本發明的實施例的一個用於基於執行樹進行執行的例子的示意 圖。
具體實施例方式現在將參照附圖來詳細描述本發明的各種示例性實施例。應注意到除非另外具 體說明,否則在這些實施例中闡述的部件和步驟的相對布置、數字表達式和數值不限制本 發明的範圍。以下對至少一個示例性實施例的描述實際上僅僅是說明性的,決不作為對本發明 及其應用或使用的任何限制。對於相關領域普通技術人員已知的技術、方法和設備可能不作詳細討論,但在適 當情況下,所述技術、方法和設備應當被視為本說明書的一部分。在這裡示出和討論的所有示例中,任何具體值應被解釋為僅僅是示例性的,而不 是作為限制。因此,示例性實施例的其它示例可以具有不同的值。應注意到相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一 個附圖中被定義,則在隨後的附圖中不需要對其進行進一步討論。〈實施例〉下面針對附圖描述本發明的實施例。圖1示出了根據本發明的實施例的方法的流程圖。圖2示出了根據本發明的實施 例的系統的框圖。
下面,根據圖1描述根據本發明的實施例的用於XML數據存儲庫中的XPath執行 的方法1000。
如圖1所示,在步驟S1100,執行解析步驟,用於利用簡單路徑文件來解析輸入的 XPath查詢,並生成關於該XPath查詢的執行樹。
將在下面參照圖5-7和8具體描述生成執行樹的方式。
例如,所述簡單路徑文件是基於數據存儲庫中的多個XML文件的層次結構生成的 一個XML文件,其中所生成的一個XML文件中的節點的節點名稱是通過記錄數據存儲庫中 的多個XML文件中的各個節點的標籤信息而生成的。
將在下面參照圖3和4具體描述簡單存儲庫路徑文件。
在步驟S1200,執行執行步驟,用於對數據存儲庫執行該執行樹,以產生最終執行結果。
將在下面參照圖9具體描述執行樹的執行方式。
本領域技術人員應當理解,儘管在上面順序地示出了生成步驟、解析步驟和執行 步驟,但是,這並不表明本發明僅限於這樣的順序。例如,可以預先針對數據存儲庫中的全 部XML文件執行生成簡單路徑文件的步驟。如果數據存儲庫中的XML文件沒有發生變化, 則在後續過程中,可以僅執行所述解析步驟和執行步驟,而不執行所述生成步驟。
下面,根據圖2描述根據本發明的實施例的用於XML數據存儲庫中的XPath執行 的系統2000。
如圖2所示,根據本發明的XPath執行系統2000包括解析器2100以及執行器 2200。
解析器2100利用所生成的簡單路徑文件來解析輸入的XPath查詢,並生成關於該 XPath查詢的執行樹。
例如,所述簡單路徑文件是基於數據存儲庫中的多個XML文件的層次結構生成的 一個XML文件,其中所生成的一個XML文件中的節點的節點名稱是通過記錄數據存儲庫中 的多個XML文件中的各個節點的標籤信息而生成的。
執行器2200對數據存儲庫執行該執行樹,以產生最終執行結果。
根據本發明的XPath執行系統2000例如還可以連接到數據存儲庫2300或者包括 數據存儲庫2300。數據存儲庫2300存儲XML文件。XML文件包含數據信息。
根據本發明的XPath執行系統2000可以用於實現根據本發明的用於XML數據存 儲庫中的XPath執行的方法。下面所描述的各項特徵可以應用於根據本發明的用於XML數 據存儲庫中的XPath執行的方法和XPath執行系統。
下面參照圖3描述簡單路徑文件的例子。
圖3中示出了兩個XML實例以及簡單路徑文件的樹結構。
實例l(al)包括根節點(「文章」)、多個子節點(「作者」、「內容」、「姓名」、「年 齡」)、相應的文本(「約翰」、「29」)以及屬性(「SN= 100」)。實例1可以用XML格式表示為
權利要求
1.一種用於XML數據存儲庫中的XPath執行的方法,包括解析步驟,用於利用簡單路徑文件來解析輸入的XPath查詢,以生成關於該XPath查詢 的執行樹,其中所述簡單路徑文件是基於數據存儲庫中的多個XML文件的層次結構生成的 一個XML文件,其中所生成的一個XML文件中的節點的節點名稱是通過記錄數據存儲庫中 的多個XML文件中的各個節點的標籤信息而生成的;以及執行步驟,用於對數據存儲庫執行該執行樹,以產生最終執行結果。
2.根據權利要求1所述的方法,其中,所述簡單路徑文件包括由根節點和子節點形成 的樹狀結構。
3.根據權利要求1-2中的任何一個所述的方法,其中,通過所述數據存儲庫中增加的 XML文件來更新所述簡單路徑文件。
4.根據權利要求1-2中的任何一個所述的方法,其中,所述執行樹包括主節點,所述主 節點是在XPath解析過程中對所述XPath查詢的每一查詢步驟完成時所得到的結果節點。
5.根據權利要求4所述的方法,其中,所述解析步驟還包括進行軸執行並檢查XPath查詢中的名稱,以選擇與該XPath查詢中的名稱一致的所述 簡單路徑文件中的節點作為當前主節點;判斷當前主節點是否具有謂詞;以及如果當前主節點不具有謂詞,則更新執行樹。
6.根據權利要求5所述的方法,其中,所述解析步驟還包括如果當前主節點具有謂詞,則進行謂詞執行。
7.根據權利要求6所述的方法,其中,所述解析步驟是從所述簡單路徑文件的根節點 開始執行的。
8.根據權利要求6所述的方法,其中,更新執行樹還包括添加用於反映XPath查詢中 節點的相對順序信息的謂詞節點。
9.根據權利要求6所述的方法,其中,更新執行樹還包括更新謂詞節點的位置信息。
10.根據權利要求1所述的方法,還包括根據所述簡單路徑文件中的每個節點,以有 序的方式將數據存儲在數據存儲庫。
11.一種用於XML數據存儲庫中的XPath執行的系統,包括解析器,用於利用簡單路徑文件來解析輸入的XPath查詢,以生成關於該XPath查詢的 執行樹,其中所述簡單路徑文件是基於數據存儲庫中的多個XML文件的層次結構生成的一 個XML文件,其中所生成的一個XML文件中的節點的節點名稱是通過記錄數據存儲庫中的 多個XML文件中的各個節點的標籤信息而生成的;以及執行器,用於對數據存儲庫執行該執行樹,以產生最終執行結果。
12.根據權利要求11所述的系統,其中,所述簡單路徑文件包括由根節點和子節點形 成的樹狀結構。
13.根據權利要求11-12中的任何一個所述的系統,其中,根據所述數據存儲庫中增加 的XML文件來更新所述簡單路徑文件。
14.根據權利要求11-12中的任何一個所述的系統,其中,所述執行樹包括主節點,所 述主節點是在XPath解析過程中對所述XPath查詢的每一查詢操作完成時所得到的結果節點ο
15.根據權利要求14所述的系統,其中,所述解析器還包括用於進行軸執行並檢查XPath查詢中的名稱以選擇與該XPath查詢中的名稱一致的所 述簡單路徑文件中的節點作為當前主節點的裝置; 用於判斷當前主節點是否具有謂詞的裝置;以及 用於如果當前主節點不具有謂詞則更新執行樹的裝置。
16.根據權利要求15所述的系統,其中,所述解析器還包括 用於如果當前主節點具有謂詞則進行謂詞執行的裝置。
17.根據權利要求16所述的系統,其中,所述解析器是從所述簡單路徑文件的根節點 開始執行的。
18.根據權利要求16所述的系統,其中,所述用於更新執行樹的裝置還包括用於添加 用於反映XPath查詢中節點的相對順序信息的謂詞節點的裝置。
19.根據權利要求16所述的系統,其中,所述用於更新執行樹的裝置還包括用於更新 謂詞節點的位置信息的裝置。
20.根據權利要求11所述的系統,其中,所述數據存儲庫被配置成根據所述簡單路徑 文件中的每個節點,以有序的方式存儲數據。
全文摘要
本發明公開了用於XML數據存儲庫中的XPath執行的方法和系統。該用於XML數據存儲庫中的XPath執行的方法,包括解析步驟,用於利用簡單路徑文件來解析輸入的XPath查詢,以生成關於該XPath查詢的執行樹,其中所述簡單路徑文件是基於數據存儲庫中的多個XML文件的層次結構生成的一個XML文件,其中所生成的一個XML文件中的節點的節點名稱是通過記錄數據存儲庫中的多個XML文件中的各個節點的標籤信息而生成的;以及執行步驟,用於對數據存儲庫執行該執行樹,以產生最終執行結果。
文檔編號G06F17/30GK102033885SQ20091017914
公開日2011年4月27日 申請日期2009年9月29日 優先權日2009年9月29日
發明者劉長浩, 徐康, 李變, 李媛, 武碩, 王小宜, 王韻婷 申請人:國際商業機器公司