數(shù)據(jù)庫中的pureXML優(yōu)點介紹
關系數(shù)據(jù)庫中的***代 XML 支持是切分(或分解)文檔,以適應關系表格或?qū)⑽臋n原封不動地存儲為字符或二進制大對象(CLOB 或 BLOB)。這兩個方法中的任一種都嘗試將 XML 模型強制轉(zhuǎn)換成關系模型。然而,這兩種方法在功能和性能上都有很大的局限性?;旌闲湍P蛯?XML 存儲在類似于 DOM 的模型中。XML 數(shù)據(jù)被格式化為緩沖數(shù)據(jù)頁,以便快速導航和執(zhí)行查詢以及簡化索引編制。
pureXML在以下領域具有顯著優(yōu)勢:
存儲:pureXML 技術將以“節(jié)點級”(而非“文檔級”)粒度存儲 XML。在數(shù)據(jù)庫中,物理存儲層的主要存儲單元是節(jié)點。每一頁中都存在一個節(jié)點,而其它的節(jié)點則來自相同或不同的文檔。每個節(jié)點不僅連結(jié)其父節(jié)點,還連結(jié)其子節(jié)點。
因此,瀏覽到某個節(jié)點的父項、同級項或子項的效率都非常高,只要下一個引用的節(jié)點在同一頁,其遍歷速度將比指針的遍歷速度還要快,無需重寫整個文檔即可增加或減少節(jié)點,或者將節(jié)點重新部署到其它頁。
索引機制:管理著數(shù)百萬的 XML 文檔的 XML 應用程序并不罕見,因此要提供高查詢性能就要為大量的 XML 數(shù)據(jù)編制索引。DB2 支持在 XML 列上建立路徑特定的索引,因此元素和屬性常用作謂詞,且可以編制跨文檔連接的索引。
新的 XML 值索引可有效評估XML 模式表達式,從而提高 XML 文檔的查詢性能。與傳統(tǒng)的關系索引相比較,在關系索引中,索引鍵由用戶指定一個或多個表格列組成,而 XML 值索引則使用特定的 XML 模式表達式(XPath 的子集,XPath 不包含謂詞等等)來編制路徑和 XML 文檔(存儲在一個 XML 列中)中的值的索引。如果值不是在文檔中指定的,則該索引還可以在插入時通過模式來填充默認的屬性和元素值。
創(chuàng)建索引時,您可以指定要編制索引的路徑和索引類型??梢跃幹婆c存儲在該列中的 XML 文檔中的路徑表達式以及路徑表達式集匹配的任何節(jié)點的索引,而且該索引可以直接指向存儲中的節(jié)點(它與其父節(jié)點和子節(jié)點連接以便于快速瀏覽)。索引條目并不是提供訪問文檔開頭的索引,而是包含實際文檔節(jié)點的位置信息。因此,該索引可以快速直接訪問文檔中的節(jié)點,并避免文檔遍歷。
查詢:XQuery,即查詢 XML 數(shù)據(jù)的一種新語言,用于處理不同的模式,包含諸如序列(而非 SQL 中的集)、多嵌套序列和稀疏屬性。XQuery 還可以支持不同種類的模式以及動態(tài)的結(jié)構更改。
IBM 實施不包含獨立的 XQuery 或 XPath 處理程序?;镜?XQuery 和 XPath 直接嵌入到查詢引擎中。該查詢編譯器自身是雙語的,帶有兩個可互操作的查詢語言解析程序 — 一個用于 SQL,另一個用于 XQuery — 以產(chǎn)生查詢圖表模型(用于處理關系和 XML 數(shù)據(jù))的新變量。因為中間的查詢表達法是中性語言,XQuery、SQL 以及 XQuery 與 SQL的組合將編譯成同樣的中間表達法,經(jīng)過同樣的重寫和轉(zhuǎn)化,以類似的方式優(yōu)化并產(chǎn)生類似的可執(zhí)行代碼。無論使用什么語言來指定查詢設計,此過程都將產(chǎn)生***的互操作查詢設計。
因為這兩個解析程序可以相互操作,所以您可以在同一語句中混合使用 SQL 和 XQuery,從而使搜索功能更強大:在 XML 文檔中進行查詢并從 SQL 返回其片斷。
【編輯推薦】