關聯式資料庫中的第一代 XML 支援是切分或分解)文檔,以適應關係表格或將文檔原封不動地儲存為字元或二進位大對象CLOB 或 BLOB)。這兩個方法中的任一種都嘗試將 XML 模型強制轉換成關聯式模式。然而,這兩種方法在功能和效能上都有很大的局限性。混合型模型將 XML 儲存在類似於 DOM 的模型中。XML 資料被格式化為緩衝資料頁,以便快速導航和執行查詢以及簡化索引編製。
pureXML在以下領域具有顯著優勢:
儲存:pureXML 技術將以“節點級”而非“文檔級”)粒度儲存 XML。在資料庫中,實體儲存體層的主要儲存單元是節點。每一頁中都存在一個節點,而其它的節點則來自相同或不同的文檔。每個節點不僅連結其父節點,還連結其子節點。
因此,瀏覽到某個節點的父項、同級項或子項的效率都非常高,只要下一個引用的節點在同一頁,其遍曆速度將比指標的遍曆速度還要快,無需重寫整個文檔即可增加或減少節點,或者將節點重新部署到其它頁。
索引機制:管理著數百萬的 XML 文檔的 XML 應用程式並不罕見,因此要提供高查詢效能就要為大量的 XML 資料編製索引。DB2 支援在 XML 列上建立路徑特定的索引,因此元素和屬性常用作謂詞,且可以編製跨文檔串連的索引。
新的 XML 值索引可有效評估XML 模式運算式,從而提高 XML 文檔的查詢效能。與傳統的關係索引相比較,在關係索引中,索引鍵由使用者指定一個或多個表格列組成,而 XML 值索引則使用特定的 XML 模式運算式XPath 的子集,XPath 不包含謂詞等等)來編製路徑和 XML 文檔儲存在一個 XML 列中)中的值的索引。如果值不是在文檔中指定的,則該索引還可以在插入時通過模式來填充預設的屬性和元素值。
建立索引時,您可以指定要編製索引的路徑和索引類型。可以編製與儲存在該列中的 XML 文檔中的路徑運算式以及路徑運算式集匹配的任何節點的索引,而且該索引可以直接指向儲存中的節點它與其父節點和子節點串連以便於快速探索)。索引條目並不是提供訪問文檔開頭的索引,而是包含實際文檔節點的位置資訊。因此,該索引可以快速直接存取文檔中的節點,並避免文檔遍曆。
查詢:XQuery,即查詢 XML 資料的一種新語言,用於處理不同的模式,包含諸如序列而非 SQL 中的集)、多嵌套序列和稀疏屬性。XQuery 還可以支援不同種類的模式以及動態結構更改。
IBM 實施不包含獨立的 XQuery 或 XPath 處理常式。基本的 XQuery 和 XPath 直接嵌入到查詢引擎中。該查詢編譯器自身是雙語的,帶有兩個可互操作的查詢語言解析程式 — 一個用於 SQL,另一個用於 XQuery — 以產生查詢圖表模型用於處理關係和 XML 資料)的新變數。因為中間的查詢表達法是非語言相關,XQuery、SQL 以及 XQuery 與 SQL的組合將編譯成同樣的中間表達法,經過同樣的重寫和轉化,以類似的方式最佳化併產生類似的可執行代碼。無論使用什麼語言來指定查詢設計,此過程都將產生最優的互操作查詢設計。
因為這兩個解析程式可以相互操作,所以您可以在同一語句中混合使用 SQL 和 XQuery,從而使搜尋功能更強大:在 XML 文檔中進行查詢並從 SQL 返回其片斷。
- DB2 Version 9.5 pureXML的增強和新特性
- 基於pureXML技術的資料庫表結構擴充
- 產生面向 DB2 9 pureXML 的 Web 服務