包括訪問受保護的xml數據的xml資料庫的管理系統的製作方法
2023-05-01 21:05:06 3
專利名稱:包括訪問受保護的xml數據的xml資料庫的管理系統的製作方法
技術領域:
本發明涉及一種用於包括訪問受保護的XML數據的XML資料庫的XML資料庫管理 系統。
背景技術:
在像遵循面向服務的架構(SOA)的範型的現代應用中,可擴展標記語言(XML)格 式的數據的重要性正在增加。為了高效地存儲和檢索這種XML數據,XML資料庫管理系統 (XDBMS)是現代IT基礎結構中的中心組件。要將XDBMS理解為包括適於便利對於XML數據 的訪問的硬體和/或軟體的系統,XML數據例如為XML資料庫中存儲的XML文檔或者XML文 檔的各個XML元素。因為現代應用通常分布於多個硬體上,例如不同方所管理的伺服器,其 中應用的所分布部分經由網絡(像LAN或網際網路)來通信,安全-並且尤其是訪問控制-成 為關鍵性的問題。訪問控制通常指防止高度機密的數據被用戶未經授權地訪問,其中用戶 可以是人類用戶、另一個應用、web服務等。因此,經由訪問控制保護XML數據在XDBMS中 是重要的必然,以便確保數據的安全性和機密性。XML數據通常為層次結構,即,XML數據片段中的任何XML元素本身可包括任何數 量的另外的XML元素,從而形成樹狀結構。而且,XML數據可包括任何數量的XML屬性、XML 處理指令、XML注釋或XML標準定義的任何其它種類的結構化元素。在下面,術語「結構化元 素」可指XML數據的任何上述內容。XML的一般語法在全球資訊網聯盟的「Extensible Markup Language (XML) 1. 0 (Fifth Edition) 」(W3C 推薦標準,2008 年 11 月 26 H, URL http //www. w3.org/TR/xml/)中定義。而且,XML數據通常以具有相同結構但是不同內容的多個XML文 檔的形式存儲在XML資料庫中,其中每個XML文檔表示XML資料庫中的數據記錄。XML文 檔也可稱為XML實例。通常,XML文檔的結構在XML模式中定義。XML模式語言是全球資訊網聯 盟的「XML Schema Part 0 =PrimerSecond Edition」(更多信息可見 W3C 推薦標準,2004 年 10 月 28 日,URL http //www. w3. org/TR/xmlschema-O)中定義的 XML 方言。考慮組織XML數據的特定方式,現代XDBMS,像申請人的TaminoXML伺服器,遵循兩 種用於訪問受保護的機密數據的主要方法。首先,基於結構的訪問控制指保護XML數據中 的某些結構,即避免未被授權的用戶訪問在包括機密數據的XML資料庫中存儲的XML文檔 的一個或多個元素。其次,基於實例的訪問控制指避免未被授權的用戶訪問XML資料庫中 單個機密的XML文檔,即數據記錄。在下面的詳細描述中進一步說明這兩種方法。除了訪問控制,XDBMS的另一個關鍵特徵是查詢XM L數據的接口,即用戶檢索XML 資料庫中存儲的XML數據的方式。在XML的領域中,公布的XML查詢語言(XQuery)已成為 最通用的查詢語言。XQuery在全球資訊網聯盟的「XQuery 1. O =An XML Query Language」(W3C 標準,2007年 1 月 23 H, URL http://www.w3c.org/TR/xquery/)中說明。任何查詢處理方 法的一個特定目標是增加效率,即儘可能快地提供查詢結果並且在計算能力方面進行最少 的工作。處理XQuery以便檢索期望的數據通常遵循四個階段,標記為圖1中描繪的分析器、預處理器、優化器和優化器。這四個階段通常由分別稱為分析器、預處理器、優化器和優 化器的資料庫系統組件執行,它們可共同稱作為查詢處理器。如可見的,首先分析進入的 XQuery,即提取進入XQuery的邏輯單元以便產生抽象語法樹(AST)。然後預處理AST,這包 括分類AST,即為AST中的每個表達式分配數據類型以便產生類型化的AST。然後優化類型 化的AST以便產生查詢執行計劃。優化可包括靜態優化,例如確定哪些索引可用於以更加 有效的方式來評估XQuery並且由此重寫類型化的AST。前述階段還可包括XQuery的語義 分析,共同稱作為編譯(compilation)。隨後,執行產生的查詢執行計劃以檢索最終的查詢 結果。一般而言,從現有技術中已知各種方法用於增加總地涉及XML數據的上述查詢處 理的效率,例如根據申請人的EP 1 986 108A1.然而,當查詢訪問受保護的XML數據時,這 些方法不太適合,因為訪問控制在很大程度上增加了查詢處理的複雜性並且因此常常導致 XQuery的優化不足,導致整個XQuery處理的性能不可接受。在不同的上下文中,即對於關係資料庫而不是XML資料庫,US2007/0276835A1公 開了一種用於有效訪問控制的技術。它公開了重寫針對關係資料庫的訪問受保護的行或表 中的數據的查詢,以使得可更有效地處理重寫的查詢。然而,關係資料庫下的數據模型遵循 嚴格線性的存儲範式,包括作為主要數據結構的具有行和列的單調的表。因為該存儲模型 根本上不同於上述層次XML數據模型,從關係資料庫已知的優化方法不能用於XML資料庫。因此,本發明下面的技術問題是提供一種XML資料庫管理系統,其便利了從XML數 據庫檢索訪問受保護的XML數據,這加強了訪問受保護的XML數據的安全性並且同時顯著 地增加了查詢處理的效率,由此至少部分地克服了現有技術的上述缺點。
發明內容
根據本發明的一個方面,該問題由用於包括XML文檔的XML資料庫的XML資料庫 管理系統(XDBMS)解決,每個XML文檔包括一個或多個結構化元素並且遵循XML模式,其中 至少一個結構化元素被保護以防止用戶訪問。在權利要求1的實施例中,XDBMS包括
a.優化器,適於處理包括一個或多個XQuery表達式的用戶的XQuery,並且還適於 生成優化的XQuery執行計劃;b.執行引擎,適於執行優化的XQuery執行計劃,以從XML資料庫檢索XML數據,其 中c.優化器適於生成優化的XQuery執行計劃,以使得優化器忽略涉及被保護以防 止用戶訪問的一個或多個結構化元素的所有XQuery表達式。因此,實施例定義了顯著地增加了從包括XML數據的資料庫檢索XML數據的效率 的XDBMS,所述XDBMS遵循上面導言部分中描述的基於結構的訪問控制。為此,XML資料庫 中存儲的XML文檔中的至少一個結構化元素被保護以防止用戶訪問。如上已經描述,該上 下文中的結構化元素可以是XML元素、XML屬性或XML標準定義的XML數據的任何其它結 構化實體。用戶發起的X Query通常包括一個或多個XQuery表達式,其中每個XQuery表達 式適於從XML資料庫檢索某些結構化元素。實例XQuery在下面的詳細描述中描述。XDBMS提供的優化器適於首先根據XQuery生成優化的XQuery執行計劃。隨後, XDBMS提供的執行引擎執行優化器生成的優化的XQuery執行計劃。因此,執行引擎產生了包括用戶期望依靠XQuery檢索的XML數據的查詢結果。迄今為止,根據本發明的XDBMS對 於圖1中描繪的XML查詢處理一般地遵循通常方法。然而,XDBMS的優化器特別適於相關於受保護以防止用戶訪問的XML數據增加 XQuery處理的效率。為此,優化器適於以這樣的方式生成優化的XQuery執行計劃由優化 器忽略涉及被保護以防止用戶訪問的結構化元素的XQuery的所有XQuery表達式。該方法 具有三個主要優點-首先,顯著地降低了優化器的處理步驟的數量並且由此降低了處理時間,因為涉 及訪問受保護的結構化元素的所有XQuery表達式在優化器執行優化期間被忽略。換言之, 優化器專注於僅優化涉及用戶可訪問的結構化元素的XQuery表達式,以使得相比於從現 有技術已知的方法整個優化處理花費顯著更少的時間。-第二,因為優化器產生的XQuery執行計劃已經是特別為要檢索的XML數據優化 的,相比於從現有技術已知的通用方法,執行引擎的隨後處理也花費遠遠更少的時間和處 理能力。這兩個方面進一步由下面的詳細描述中的示例來說明。-第三,應當理解,XQuery處理的整體安全性一點也不受影響或者降低,使得本發 明有利地組合了高安全標準的可信賴加強和非常有效的XQuery處理這兩個目標。根據本發明的另一個方面,XDBMS還適於確定用戶所屬的一個或多個組並且保護 至少一個結構化元素免受所述一個或多個組的訪問。因此,用戶可屬於一個或多個組,其中 組本身可屬於一個或多個另外的組,由此可建立複雜的組層次。組可以是內部組,即XDBMS 內定義的組,或者外部組,即例如在外部用戶儲存庫(如LDAP儲存庫)中定義的組。確定用戶(或組)屬於的組,即解析組層次,優選地作為查詢處理器的查詢編譯的 第一步驟之一執行,以確保涉及檢查的訪問控制的效率。為此,查詢處理器可首先確定用戶 直接屬於的一個或多個組。對於所確定的組中的每一個,查詢處理器然後可遞歸地確定這 些組本身是否屬於另外的組。而且,因為組層次可以是任意複雜的,上述組解析的結果可被緩存,以便改善整體 性能。為此,關於用戶屬於哪些組的信息可臨時存儲在用戶/組緩存中。如果組層次需要 在隨後階段被再次解析,可檢查該用戶/組緩存,而不是重新執行完整的組解析。為了使用 戶/組索引保持最新,可根據管理員設置的參數定期地執行組解析。在另一個方面中,XDBMS還包括預處理器,該預處理器適於評估至少一個基於結構 的訪問權限,以確定要由優化器忽略的XQuery表達式,所述至少一個基於結構的訪問權限 保護用戶和/或組對相應結構化元素的訪問。在該上下文中評估訪問權限意味著檢查訪問 權限的內容,以使得可就訪問權限準予或拒絕委託人(用戶和/或組)進行某個動作得出 結論。訪問權限的思想在下面詳細描述中更詳細地說明。因此,對比於現有技術,評估基於 結構的訪問權限不在執行引擎的查詢執行期間執行,而是已經由XDBMS提供的預處理器執 行,即在XQuery處理過程中遠遠更早的時間。特別是,在優化器開始它的處理之前執行評 估基於結構的訪問權限,以使得優化器在XQuery的XML表達式的已經「過濾」的集合上執 行它的優化任務。而且,預處理器還可適於從XML模式中定義的類型信息得到至少一個基於結構的 訪問權限。這具有另外的優點,基於結構的訪問權限可存儲在中心位置,即在XML模式內。 作為候選,訪問權限也可以分布式方式存儲並且可由XML模式引用。然而,在這兩種情況下,基於結構的訪問權限可僅定義一次並且然後應用到遵循XML模式的所有XML文檔的所 有各個XML元素,這在創建並且隨後更新基於結構的訪問權限時顯著地減少了工作。因為 基於結構的訪問權限可從XML模式中定義的類型信息得到,評估基於結構的訪問權限可已 經在分類過程期間執行,即在生成類型化AST期間(參照圖1)。而且,至少一個基於結構的訪問權限可附屬到包括各個結構化元素的XML文檔, 並且執行引擎還可適於評估至少一個基於結構的訪問權限。如在前面段落中說明的,在分 類過程期間,為涉及某些結構化元素的XQuery表達式確定的類型信息通常由XML模式定 義。然而,如將在下面的詳細描述中進一步說明的,不可能靜態地分類某些XQuery表達式, 因為在XML模式中不存在對應的分類信息。代替地,類型信息在查詢分類的時候可能是未 知的。通常,在該情況下對應的結構化元素從結構化元素包括在其中的XML文檔內部引用 它們的類型信息,而不是從XML模式。因此,涉及這些結構化元素的基於結構的訪問權限可 附屬到XML文檔本身。執行引擎然後可在查詢執行期間從XML資料庫檢索單獨的XML文檔 時,評估這些基於結構的訪問權限。在該情況下,執行引擎還可適於掃描結構索弓丨,例如從申請人的 US2005/0131895A1已知的。結構索引通常用於存儲聚集的結構信息,即它可用於在任何給 定時間確定哪些結構化元素當前存在於XDBMS中存儲的XML文檔內,和哪些結構化元素未 出現在XDBMS中當前存儲的XML文檔內。因此,查閱結構索引在不能靜態地分類某些XQuery 表達式時尤其有利,如上所述。根據本發明的又另一個方面,執行引擎還適於評估附屬到至少一個XML文檔的一 個或多個基於實例的訪問權限,基於實例的訪問權限保護用戶和/或組對相應XML文檔的 訪問。因此,基於實例的訪問權限不涉及單個結構元素(像基於結構的訪問權限),而是完 整的XML文檔,因此遵循上面導言部分中描述的基於實例的訪問控制方法。用於基於實例 的訪問權限的評估的示例可在下面的詳細描述中找到。而且,XDBMS可適於根據基於結構的和/或基於實例的訪問權限生成訪問權限索 弓丨,並且執行引擎可適於掃描訪問權限索引。因此,由於使用了訪問權限索引,評估基於結 構和/或基於實例的訪問控制的效率顯著地增加。如本領域技術人員將會理解的,相比於 單獨地查閱各個基於結構和/或基於實例的訪問權限,掃描索引需要更少的處理時間,並 且因此是相當更加高效的。訪問權限索引可包括一個或多個索引條目,所述索引條目各自包括到用戶和/或 組的引用、到XML文檔的引用、訪問權限和/或標識符。而且,執行引擎可適於根據索引條 目的標識符定義的順序來評估訪問權限索引中與用戶和/或組匹配的第一索引條目。訪問 權限索引及其有利用途的示例在下面的詳細描述中示出。通常,基於結構的和/或基於實例的訪問權限可由訪問控制列表(ACL)定義。本發明還涉及一種包括用於實現任意上面給出的XML資料庫管理系統的指令的 電腦程式。而且,本發明涉及一種方法,用於處理用戶的XQuery以使用任意上面給出的XML 資料庫管理系統從XML資料庫檢索XML數據。最後,提供了一種包括用於實現上面給出的 方法的指令的電腦程式。
在隨後的詳細描述中,參考下面的附圖進一步描述本發明的當前優選實施例圖1 根據現有技術的用於XQuery處理的控制流程的示意性概覽;圖2 根據本發明的XML資料庫管理系統的實施例的示意性概覽;圖3 根據本發明實施例的基於結構的訪問控制的示意性概覽;圖4 根據本發明實施例的基於實例的訪問控制的示意性概覽;圖5a 根據本發明實施例的示例XML模式;圖5b 遵循圖5a的XML模式的兩個示例XML文檔;圖6a、b 根據本發明實施例的用於基於結構的訪問控制的示例性基於結構的訪 問權限;圖7a 根據本發明實施例的用於基於實例的訪問控制的示例性基於實例的訪問 權限;圖7b 根據本發明實施例的示例組定義;圖8 根據本發明實施例的示例XQuery執行計劃的示意性概覽;和圖9 根據本發明實施例的示例訪問權限索引的示意性概覽。
具體實施例方式如在導言部分中已經描述的,查詢訪問控制受保護的XML數據是現代XML資料庫 管理系統(XDBMS)中的一個重要特徵,以支持遵循面向服務的架構(S0A)的範型的應用。本 發明提供了 XDBMS 10 (參照圖2),其適於對訪問控制受保護的XML數據進行有效的XQuery 50處理,所述XML數據例如XML資料庫20中存儲的XML文檔30或XML文檔30的各個XML 元素35,所述XDBMS 10便利了基於結構的和基於實例的訪問控制。遵循用於XQuery處理 的通用模型,可在XQuery 50的語義分析期間評估基於結構的訪問控制。對於基於實例的 訪問控制,XML資料庫20中存儲的XML文檔30可用訪問控制列表(ACL)批註。為了在查 詢執行期間評估ACL,本發明的XDBMS 10生成擴展的XQuery執行計劃70。擴展的XQuery 執行計劃70根據提供涉及訪問控制的運算符的擴展XQuery處理代數來聲明。本發明由此 通過應用代數查詢優化便利了擴展XQuery執行計劃70的優化。而且,本發明提供了 ACL 索引的思想,用於高效地訪問ACL信息。XML資料庫中的訪問控制XML資料庫中的XML數據的保護顯著地不同於從關係資料庫系統已知的安全思 想,因為XML數據模型,即組織XML數據的方式,完全不同於關係數據模型(參照上面的導 言部分)。在像申請人的Tamino XML伺服器這樣的產品中,可使用基於結構以及基於實例 的訪問控制,這將在下面更詳細地描述。基於結構的訪問控制意味著通過為某些結構化元素,例如XML元素、XML屬性或由 XML標準定義的XML數據的任何其它結構化實體定義訪問權限來保護XML數據。結構化元 素通常由XML模式定義。在本發明的XDBMS 10中,一個或多個XML模式40以XML模式語 言來指定,在上面的導言部分中提及。圖5a描繪了定義用於在XML資料庫20中存儲涉及 僱員的數據(XML文檔30)的employee XML元素35的結構的示例XML模式40。如在圖5a 中可見,employee XML 元素 35 定義為包括子 XML 元素 35date_of-birth、name、salary、禾口IHBriBger0 胃i,date—of—birth XML 71 · 35 胃I^jgM xs: date,salary 禾口 mBnager XML元素35定義為類型xs integer,如XML模式40的相應類型信息45所表示的。name XML 元素35本身由兩個子XML元素35定義,即xs string類型的last XML元素35和f irrst XML元素35,這突出了 XML的層次結構。而且,圖5a中的示例XML模式40定義了 employee XML元素35必須包括需要的類型為xs: integer的XML屬性number。應當理解,根據本發 明的XDBMS 10可包括多於一個的XML模式40,用於針對不同目的來定義不同類型的XML文 檔。而且,定義employee元素的結構的示例XML模式僅僅是廣泛種類的示例之一。圖5b示出了表示上面給出的XML模式40的實例的兩個 示例XML文檔30。如可見 的,遵循XML模式40的XML文檔30具有由XML模式40定義的精確結構,其中XML文檔30 的XML元素35用必須遵循XML模式40中定義的類型的具體值來填充。在圖5a和5b的示例中,XML文檔30的某些XML元素35,例如name或者 date-of-birth,根據安全性被設想為不關鍵的,並且因此應當對於XDBMS 10的任何用戶 是可訪問的。相反,訪問每個XML文檔30的XML元素salary 35必須限制到僅僅有限集合 的用戶,因為salary XML元素35存儲機密信息(僱員的年薪),並且應當在任何情況下對 於大部分XDBMS的用戶保持為秘密。應當理解,使用基於結構的訪問控制,不僅可保護各個 XML元素35,還可保護XML資料庫容器,例如集合,以及某些數據檢索功能的執行。而且,如 上面已經描述的,可保護XML數據的任何結構化元素,例如XML屬性、XML注釋等。為了指定對XML文檔30的XML元素35的訪問級別,可使用訪問控制列表(ACL), 其示例在圖6a中示出。圖6a的示例ACL對持有employee元素的集合hr,例如XML文檔 30,定義了基於結構的訪問權限90。在該上下文中的ACL name 「default (默認)」表示各 個ACL應當應用於所有可能的用戶,除非另外聲明。為此,圖6a中的示例ACL對於employee XML元素35準予read訪問,而拒絕對salary XML元素35的任何訪問,因為公司想要將個 人薪水保持為秘密。如示例所示,ACL如在申請人的Tamino XML伺服器中定義的那樣,包括 任何數量的訪問權限/訪問控制元素(ACE)。每個ACE 90由定義目標XML元素35的可選 "subject (主題)」和"privilege (權限)」的"grant (準予)」或"deny (拒絕)」組成,所 述「權限」例如為「讀」、「更新」、「刪除」、「全部」或者任何其它適合的權限。為了更有效率, 需要將ACL分配到單個用戶和/或組(group),其中組可引用一個或多個用戶或另外的組, 建立任意複雜的組層次(參見上面)。如已經提及的,圖6a的示例ACL隱含地分配到「默 認」組,該組包括所有可能的用戶,即XDBMS 10的所有用戶根據圖6a的給定ACL繼承訪問 權限90。為了允許用戶訪問salaryXML元素35,用戶需要屬於特別被授權的組,例如圖7b 中定義的示例hrgroup組65。如可見的,組65列出組的用戶(在示例中為用戶「A」和用 戶「B」)並且引用hracl ACL,該hracl ACL定義了許可給hrgroup組65的訪問權限90。 對應的hracl ACL在圖6b中描繪。如在圖6b中可見到的,hrgroup組65的成員被準予對 employee XML元素35的全部訪問權限。圖6b中定義的訪問權限90突出了 XML的層次結構所特有的方面。因為允許屬於 hrgroup組65的用戶訪問employee XML元素35,也允許這些用戶訪問employee XML元素 35的所有子XML元素35,例如salaryXML元素35。因此,XML元素上定義的訪問權限可根 據XML的層次結構由全部子XML元素「繼承」。如在圖3中可見到的,為了定義基於結構的訪問控制,基於結構的訪問權限90優先地從XML模式40的類型信息45引用。而且,ACL還可用於根據基於實例的訪問控制保護XML資料庫中存儲的實例,即單 個XML文檔30。為此,XML資料庫20中存儲的XML文檔30直接用包括一個或多個基於實例 的訪問權限95的一個或多個ACL來批註,以定義哪個用戶可對XML文檔30執行的操作(參 照圖4)。包括兩個基於實例的訪問權限(ACE) 95的圖7a中描繪的示例ACL對於hrgroup 的成員準予完全訪問。所有其它用戶對於受保護文檔不能進行任何訪問(參照圖7a中的 「principal」元素以及「grant」和「deny」元素)。如可見到的,圖7a的基於實例的訪問權 限95不引用單個結構化元素35 (如相比於上述的基於結構的訪問權限90),而是圖7a中 描繪的整個ACL從XML文檔30來引用,以便由該ACL保護。如圖7a進一步示出的,ACL不 需要是「無衝突」的。ACL可包括允許某種操作的ACE90、95以及拒絕該操作的ACE 90、95。 該「衝突」經由給定ACL中的ACE 90,95的順序來解決,即當確定適合的ACE 90、95時,選 擇匹配給定用戶的第一 ACE。用XQuery杳詢警保護的XML數據因為XQuery是用於查詢XML數據的最通用的語言,XQuery處理器或XDBMS 10必 須分別實施上面給出的授權方法。因此,當執行由用戶60發起的XQuery 50時(參照圖2), 需要評估用戶60的授權。必須不能由進行查詢的用戶60訪問的XML數據必須對於用戶60 來說變為不可見。參考上面給出的示例,對於以下XQuery 50,必須不允許不屬於hrgroup 組65的用戶60檢索任何結果For$x in collection( "hr,,)/employeeLet$y: = $x/salaryffhere$y > 100000Return$x在示例中,上面的XQuery 50確定具有給定數量,即100000以上的薪水的所有僱 員。XQuery 50的第一行在XML資料庫20的集合hr中存儲的所有XML文檔30上迭代。它 通過應用path XML表達式55來提取所包括的employee XML元素35並且將所提取的XML 元素35綁定到變量$x。第二行將變量$y綁定到已綁定到變量$x的employee XML元素 35中包括的salary XML元素35。For子句和let子句都產生用於每個employee XML元素 35的元組。在示例中,生成的元組,也稱為元組列表,包括保存用於變量$x和$7的綁定的 兩個條目。隨後元組列表由示例XQuery 50的第三行中示出的where子句過濾。僅僅具有 綁定到包括的值大於100000的$y的元素的那些元組通過過濾器(where子句)。最後,在 上述步驟之後,XQuery 50將仍然綁定到變量$x的所有元組返回(參見XQuery 50的第四 行)。通常,上述示例中的每個path表達式,例如hr/employee,值(例如$y > 100000)與 變量的每次比較,和每次向變量分配值(例如$y: = $x/Salary),構成XQuery表達式55。如果根據上述圖6a和6b的ACL,授權是基於結構的,salary XML元素35不能由 用戶60讀取。因此,變量$y被分配為空白序列。根據XQuery規範,比較空白序列產生布 爾值false。如果根據上述圖7a的ACL,授權是基於實例的,所有的XML文檔30對於不是 hrgroup組65的成員的用戶60是不可見的。處理 XQuery
如技術人員將會理解的,評估訪問控制很大地增加了查詢處理的複雜性並且可導 致顯著的性能下降。為了解決訪問控制定義導致的性能問題,需要在XQuery處理期間優化 訪問控制的評估。本發明提供的方法基於圖1中示意性示出並且在下面說明的通用XQuery 處理模型。在XQuery處理期間的一個步驟是分類XQuery 50的XQuery表達式55。因為 XQuery是強類型化的語言,每個XQuery表達式55和子XQuery表達式55被分配一種類型, 即XQuery表達式55產生的結果的某種數據類型。為了確定從XML資料庫20中存儲的XML 文檔30提取XML數據的path XML表達式55的類型,檢查XML模式40的定義,即基於XML 模式40中存儲的類型信息45確定path XML表達式55的類型(參照圖5a和上面的說明)。由於XQuery表達式55的潛在複雜性,不是對於每種XQuery表達式55都可靜態 地確定相關XML元素35的類型,即在編譯XQuery 50的期間。這些情況可通過動態類型檢 查來覆蓋,其中XQuery表達式55涉及的XML元素35直接引用它們的類型。 在像申請人的Tamino XML伺服器這樣的XDBMS 10中(參照圖2),查詢編譯的結 果是指定可如何從XML資料庫20獲得查詢結果80的XQuery執行計劃70。XQuery執行計 劃70包括XDBMS 10的查詢執行引擎400提供的操作。這些操作可包括資料庫訪問操作、 過濾器操作以及XQuery特定的操作。在XQuery編譯期間由優化器300執行的優化過程應該找到最佳的XQuery執行計 劃70。為此,通常已知的方法是將給定的XQuery 50轉換為代數表達式(圖1中的「抽象 語法樹(AST)」和/或「類型化的AST」)並且經由重寫或變換代數表達式來執行優化,這最 終得到優化的XQuery執行計劃70。該方法也稱作為代數查詢處理。代數查詢處理基於反映基礎的執行引擎400的能力的運算符集合。運算符消費和 生產排序的元組列表。每個元組條目包括例如已根據索引讀取、從XML文檔30提取或者通 過應用XQuery表達式55確定的一部分XML數據。這些元組條目稱為變量綁定。運算符交 換的元組列表稱為表結構。圖8示出了作為上面給出的示例XQuery 50的變換結果的示例代數查詢表達式。 圖8描繪了 「運算符樹」,即代數表達式的運算符710、720、730、740表示為節點(參照圖8 中的框)。每個運算符710、720、730、740消費它的輸入運算符710、720、730、740的結果並 且產生可由任何其它運算符710、720、730、740消費的結果。運算符樹的定向邊(參照圖8 中的箭頭)可視化了運算符710、720、730、740之間的數據流。不消費任何輸入的運算符, 例如710,稱作為掃描運算符。掃描運算符負責從磁碟(或者XML資料庫30的任何其它存 儲裝置)讀取XML文檔30或者訪問已在XML文檔30上定義用於高效檢索的索引。圖8的示例運算符樹包括DoctypeScan運算符710。在申請人的Tamino中,數據 庫可包括一個或多個集合,其中集合可包括一個或多個文檔類型。一個文檔類型可將各自 包括相同根XML元素的一個或多個XML文檔成組(例如文檔類型employee中的每個XML文 檔包括XML元素employee作為最頂層(根)XML元素)。DoctypeScan運算符710掃描屬 於文檔類型employee的所有XML元素30並且將它們綁定到變量$d。換言之,DoctypeScan 運算符710為文檔類型employee中的每個XML文檔30產生一個元組,其中每個元組包括保 存完整XML文檔30的單個條目。隨後的Path運算符720從所掃描的XML文檔30中提取 employee XML元素35並且將它們綁定到變量$x。通常,Path運算符720、730的註腳(圖8中在「[」和「]」之間的運算符的部分)包括輸出變量和受限制的XQuerypath表達式55。 Path運算符720、730評估用於輸入表結構的每個元組的path表達式55並且將輸出變量綁 定到產生的XML片段,即path表達式55選擇的XML數據的部分。第二 Path運算符730從 每個 employee XML 元素 35 提取 salary XML 元素 35。DoctypeScan 710 和兩個 Path 運算 符720、730的結果是具有變量$d、$x和$y的表結構。該表結構隨後由在每個輸入元組上 應用它的腳註的過濾器謂詞(在圖8中為「$y> 100000」)的Select運算符740來過濾。 在圖8的示例中,僅僅具有值大於100000的綁定到salary XML元素55的$y變量的那些 元組通過Select運算符740。通常,Select運算符740的過濾器謂詞可以是任意複雜的布 爾XQuery表達式。轉換後的查詢(即上述和圖8中示出的代數查詢表達式)是用於實際查詢優化的 輸入。運算符樹,例如圖8中描繪的運算符樹給出了代數查詢表達式的描述性顯現。然而, 為了描述隨後的代數變換,將使用更簡明的文本表示。應當理解,代數查詢表達式的符號、 運算符樹和以下的文本表示是等同的。對於上面給出的代數查詢表達式,文本表示如下Select [$y > 100000](Path[$y:$b/salary](Path[$x:$d/employee](DoctypeScan[$d "『employee,,])))用於改善查詢處理的效率的通常已知的方法是索引。索引幫助減少需要從XML數 據庫30的存儲裝置讀取的XML數據的數量以便評估查詢。應當理解,從存儲裝置,例如硬 盤讀取數據是極度費時的並且因此應當保持為最小量。通過代數重寫,索引訪問運算符可 引入代數查詢表達式。假設索引在salary XML元素35上,上述的示例實施例50可通過引 入相應的索引訪問運算符來優化。產生的重寫的代數表達式內容如下Path[$x:$d/employee](IdxScan[$d ;/employee/salary ;> ; 100000])因此,IdxScan檢索包括薪水大於100000的僱員的XML文檔30。這尤其有利,因 為僅必須從XML資料庫20的存儲裝置讀取滿足給出的搜索謂詞的那些XML文檔30。在可 能有幾百萬XML文檔30的巨型XML資料庫的上下文中,例如上述的索引導致巨大的性能改
口 o基於結構的訪l、nl控制的評估在下面,基於結構的訪問控制的評估將描述為由圖2中描繪的XDBMS 10有利地執行。如已經在上面描述的,通過用ACL中包括的訪問權限90來批註XML模式40,便利 了基於結構的訪問控制。由於這點,可在分類XDBMS 10的預處理器200執行的XQuery 50 的XQuery表達式55期間,有利地執行基於結構的訪問控制的評估。在類型分析期間,從 XML模式40檢索類型信息45並且用來自XML模式40的類型信息45批註每個XQuery表達 式55。因為用ACL批註XML模式40,分配到XQuery表達式55的類型信息45引用需要被 評估的ACL。如果ACL拒絕聲明XQuery 50的用戶60的訪問,相應的XQuery表達式55呈 現為返回空白序列。因為通常可在語義分析階段期間靜態地執行大部分分類,也可在那時 執行大部分基於結構的訪問控制的評估,即由XDBMS 10的預處理器200執行。評估基於結構的訪問控制是執行由XDBMS 10的優化器300執行的隨後XQuery優化的前提。當優化器 300執行XQuery 50的優化時,查詢優化器300不考慮全部受保護的XQuery表達式55,即 涉及受保護以防止用戶60訪問的XML元素35的所有XQuery表達式55。如上面已經描述的,對於不能靜態分類的那些XQuery表達式55,在運行時期間執 行訪問控制的評估,即由XDBMS 10的執行引擎400執行。因為在該情況下,與從XML模式 40引用形成對照,直接從XML文檔30引用類型信息,可根據來自於XML文檔30的引用確定 各個ACL。為了減少需要動態訪問控制檢查的情況的數量,可使用結構索引。結構索引可保 存關於當前XML資料庫中存儲的XML數據(即XML文檔)的結構的信息,即關於結構化元 素的信息,並且可用於分類XQuery。為此,結構索引可提供XML資料庫中哪些結構化元素當 前可用並且哪些不可用的信息,以使得可更具體地確定某些XQuery表達式的類型。基於實例的訪向控制的評估 因為在基於實例的訪問控制中,從XML文檔30本身引用ACL,可通過審查XML數 據庫20中存儲的實例,即XML文檔30,來實施基於實例的訪問控制,這優選地在查詢執 行期間完成,即由XDBMS 10的執行引擎400完成。為此,優化器300生成的查詢執行計 劃70根據本發明而被擴展。因此,提供了返回布爾值的並且適於用作為過濾器謂詞的 checkPrivelege 函數。基於上述的示例XQuery,擴展後的XQuery執行計劃70如下Path[$x:$d/employee](Select [checkPrivilege ($d, user, read)](IdxScan [$d ;/employee/salary ; > ; 100000]))上面列表的第二行中的另外的Select運算符使用checkPrivilege 函數來根據 用戶60的授權級別過濾XML文檔30。如果索引掃描IdxScan (參照上面列表中的第三行) 返回少量的XML文檔30,上面的XQuery執行計劃70具有高性能。另一方面,在XML資料庫20主要包含高薪水的僱員並且聲明XQuery 50的用戶60 僅可讀取有限數量的XML文檔30的情況下,甚至可通過應用不同的XQuery執行計劃70來 進一步改善性能。根據該不同的XQuery執行計劃70,首先經由相應的訪問權限索引97,即 如圖9中示出的ACL索引,來檢索可由用戶60訪問的XML文檔30。圖9中示出的ACL索引97由XDBMS 10生成並且用於經由用戶60的給定用戶ID 以及經由訪問操作(例如「讀取」、「更新」等)來檢索XML文檔30。ACL索引97的索引條 目970表示ACE 90,95o每個索引條目970包括principal 970 (對用戶和/或組的引用) 和具有表示準予或拒絕權限的標誌的privilege 973。與為基於實例的訪問控制定義的包 括一個或多個訪問權限/ACE 95的ACL形成對照,ACL索引97的索引條目970包括單個訪 問權限。對於具有多個訪問權限的ACL,生成多個索引條目970。圖9示出了根據圖7a的 ACL生成的ACL索引97。假設圖7a的ACL引用具有標識符「#1」的XML文檔30並且因此 ACL索引97在索引列「文檔(主題)」 972中包括「#1」。在圖9的示例中,除了用戶或組標識符971之外,每個ACL索引條目970包括XML 文檔標識符972和權限97,以及標識ACL內所表示的ACE的ACE標識符(ACE ID) 974。在 ACE ID上定義對應於ACL中ACE順序的順序,根據所述ACL中ACE順序生成ACL索引97。 因此,ACE ID允許重建初始ACL內ACE的順序,以便解決「衝突」的ACE。如上面已經說明 的,ACE不必是「無衝突」的,即一個ACE可允許某種操作並且另一個ACE可拒絕該操作。在該情況下,ACE ID用於按ACE ID定義的順序檢查單個ACE並且用於根據索引條目970確 定第一匹配的ACE,以便解決衝突。使用ACL索引97的示例XQuery執行計劃70描繪為如下Path[$x:$d/employee](Semi Join (AclIdxScan[$d ;userld, read],IdxScan [$d ;/employee/salary ; > ; 100000]))因此,Aclldxscan(上面列表中的第三行)確定可由給定用戶60訪問的XML文檔 30。為此,AC1 IdxScan讀取匹配於給定用戶ID (參數userlD)和給定訪問操作(上面列表中 為read)的所有ACE,並且檢查第一匹配的ACE。基於該ACE,AclIndexScan決定引用的XML 文檔30是否屬於結果集,即是否用戶60被授權檢索XML文檔30。對於每個結果XML文檔 30,隨後的Semi Join (上面列表中的第二行)檢查XML文檔30是否也屬於可經由IdxScan 的搜索謂詞(上面列表中的第四行)檢索的文檔集。ACL索引97還可用於優化涉及Join運算和聚集的複雜XQuery。應當執行XQuery 執行計劃70的上面給出的變量中的哪些的決定優選地由XDBMS 10的優化器300執行。為 此,優化器300可使用對XML資料庫20中的數據(即XML文檔30)進行收集的統計數字, 以及對XML資料庫20中存儲的ACL的統計數字。
權利要求
一種用於包括XML文檔(30)的XML資料庫(20)的XML資料庫管理系統(XDBMS,10),每個XML文檔(30)包括一個或多個結構化元素(35)並且遵循XML模式(40),其中至少一個所述結構化元素(35)被保護以防止用戶(60)訪問,所述XDBMS(10)包括a.優化器(300),適於處理包括一個或多個XQuery表達式(55)的所述用戶(60)的XQuery(50),並且還適於生成優化的XQuery執行計劃(70);b.執行引擎(400),適於執行所述優化的XQuery執行計劃(70),以從所述XML資料庫(20)檢索XML數據(80),其特徵在於c.所述優化器(300)適於生成所述優化的XQuery執行計劃(70),以使得所述優化器(300)忽略涉及被保護以防止所述用戶(60)訪問的一個或多個所述結構化元素(35)的所有XQuery表達式(55)。
2.根據權利要求1所述的XDBMS(10),還適於確定所述用戶(60)所屬的一個或多個組 (65)並且其中保護至少一個所述結構化元素(35)免受所述一個或多個組(65)的訪問。
3.根據權利要求1或2所述的XDBMS(10),還包括預處理器(200),該預處理器適於評 估至少一個基於結構的訪問權限(90),以確定要由所述優化器(300)忽略的所述XQuery表 達式(55),所述至少一個基於結構的訪問權限(90)保護所述用戶(60)和/或所述組(65) 對所述相應結構化元素(35)的訪問。
4.根據前述權利要求所述的XDBMS(IO),其中所述預處理器(200)還適於從所述XML 模式(40)中定義的類型信息(45)得到所述至少一個基於結構的訪問權限(90)。
5.根據權利要求3或4所述的XDBMS(IO),其中至少一個所述基於結構的訪問權限 (90)附屬到包括所述各個結構化元素(35)的所述XML文檔(30),並且其中所述執行引擎 (400)還適於評估所述至少一個基於結構的訪問權限(90)。
6.根據前述權利要求所述的XDBMS(IO),其中所述執行引擎(400)還適於掃描結構索引。
7.根據前述任一權利要求所述的XDBMS(IO),其中所述執行引擎(400)還適於評估附 屬到至少一個所述XML文檔(30)的一個或多個基於實例的訪問權限(95),所述基於實例的 訪問權限(95)保護所述用戶(60)和/或所述組(65)對所述相應XML文檔(30)的訪問。
8.根據前述任一權利要求所述的XDBMS(10),還適於根據所述基於結構的(90)和/或 基於實例的訪問權限(95)生成訪問權限索引(97),並且其中所述執行引擎(400)適於掃描 所述訪問權限索引(97)。
9.根據前述權利要求所述的XDBMS(IO),其中所述訪問權限索引(97)包括一個或多個 索引條目(970),所述索引條目(970)各自包括到用戶和/或組的引用(971)、到XML文檔 的引用(972)、訪問權限(973)和/或標識符(974)。
10.根據前述權利要求所述的XDBMS(IO),其中所述執行引擎適於根據所述索引條目 (970)的標識符(974)定義的順序來評估所述訪問權限索引(97)中與所述用戶(60)和/ 或所述組(65)匹配的第一索引條目(970)。
11.根據前述任一權利要求所述的XDBMS(IO),其中所述基於結構的(90)和/或基於 實例的訪問權限(95)由訪問控制列表(ACL)定義。
12.一種包括用於實現根據前述任一權利要求所述的XML資料庫管理系統(XDBMS,10) 的指令的電腦程式。
13.一種方法,用於處理用戶(60)的XQUery(50)以使用根據前述權利要求1-11中任 何一個所述的XML資料庫管理系統(XDBMS,10)從XML資料庫(20)檢索XML數據(80)。
14.一種包括用於實現根據前述權利要求所述的方法的指令的電腦程式。
全文摘要
公開了一種包括訪問受保護的XML數據的XML資料庫的管理系統。本發明涉及一種用於包括XML文檔(30)的XML資料庫(20)的XML資料庫管理系統(XDBMS,10),每個XML文檔(30)包括一個或多個結構化元素(35)並且遵循XML模式(40),其中至少一個所述結構化元素(35)被保護以防止用戶(60)訪問,所述XDBMS(10)包括a.優化器(300),適於處理包括一個或多個XQuery表達式(55)的所述用戶(60)的XQuery(50),並且還適於生成優化的XQuery執行計劃(70);b.執行引擎(400),適於執行所述優化的XQuery執行計劃(70),以從所述XML資料庫(20)檢索XML數據(80),其特徵在於c.所述優化器(300)適於生成所述優化的XQuery執行計劃(70),以使得所述優化器(300)忽略涉及被保護以防止所述用戶(60)訪問的一個或多個所述結構化元素(35)的所有XQuery表達式(55)。
文檔編號G06F17/30GK101847155SQ201010140810
公開日2010年9月29日 申請日期2010年3月24日 優先權日2009年3月24日
發明者于爾根·哈巴斯, 託爾斯特恩·飛爾比格, 海科·韋伯 申請人:軟體股份公司