首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 pureXML 最佳實踐(一):XML 數據管理核心原則與基礎配置指南

     編輯:DB2 教學

前言:為性能與儲存效能而生的 XML 儲存選項

DB2 pureXML 功能提供成熟的 XML 儲存、索引、驗證、查詢能力,並完全整合 DB2 關聯數據管理。本文不介紹功能運作細節,而是提供確保高效能 pureXML 的指南,示範如何開發 pureXML 功能有效解決具體業務問題。依資料庫物件生命週期組織主題,使用金融衍生品交易 (FpML) 真實場景串聯最佳實踐。

XML 儲存與性能優化關鍵配置

  • 啟用 DB2 DMS 表空間自動儲存
  • XML 數據使用更大頁面大小:16KB 或 32KB
  • 性能分析需要時,為 XML 數據選擇不同表空間頁面大小
  • 小型 XML 文檔:使用內嵌儲存(與非 XML 數據同頁),大型文檔則存表外(類似 LOB),透過區域索引訪問
  • 壓縮:減少 XML 文檔以 inline 方式儲存時的空間佔用

高效導入 XML 數據的技巧

  • 使用大頁面 DMS 表空間(16KB/32KB)
  • 提供足夠緩衝池支援 XML 區域索引與路徑索引讀取
  • 若有多個用戶定義 XML 索引,最好在導入數據前定義
  • 必要時將行抽取的 XML 元素值放入同行關聯列:允許簡單 SQL-only 訪問關鍵/高頻數據、可定義主鍵/外鍵/約束、可定義多列組合鍵關聯索引
  • 若更小片段適合訪問粒度,將大型 XML 文檔分割成較小片段
  • 定義觸發器對插入/更新 XML 數據自動驗證

高效查詢與更新 XML 文檔的技術

  • 用 XMLTABLE 或 XMLQUERY 從 XML 文檔提取數據
  • SQL WHERE 子句用 XMLEXISTS 謂詞指定 XML 數據謂詞,透過檢查更少行提升查詢性能
  • 使用完全指定的 XML 路徑,避免通配符 * 或 // 定位元素,DB2 可跳過無關部分直接找到目標元素
  • 出於商業洞察與混合資料庫價值最大化,查詢中常需連接 XML 與關聯數據
  • 更新 XML 文檔多個元素時,合併更新到單一轉換描述獲最佳更新性能
  • 查詢中聲明命名空間,更新 XML 索引匹配業務 XML 數據,支援多域或複雜域 XML 文檔處理

為什麼選擇 XML?

XML 提供通用彈性方法在不同系統、應用、組織間交換數據。自描述格式維護數據,滿足所有業務需求。標籤描述數值,嵌套標籤表示層次關係。XML 能描述高度結構化數據並透過 XML Schema 保持結構,也能描述半結構化數據(普遍存在於內容導向應用)。SOA、EAI、EII、Web Services、企業消息總線等標準化成就均依賴 XML 作為底層交換技術。行業機構用標準化 XML Schema 促進信息交換並演進滿足變化需求:保險 ACORD、金融 FpML/FIXML、供應鏈 UBL、零售 ARTS、醫療 HL7、商業報告 XBRL、出版 DITA 等。XML 文檔常在基於訊息的事務系統中表現事務記錄。政府與企業對保留原始訂單、請求、聲明、交易、簽名負更多責任,XML 提供簡單方法捕獲維護相關數據。

XML vs 關聯數據:優缺權衡

XML 作為自描述格式,允許不同數據(有/無模式)同時存在一文檔或一行中,不犧牲搜尋聚合能力。應用可在不改底層資料庫模式下演進自身 XML Schema。但擴展性意味著檢查解釋 XML 需更多 CPU/I/O——可能不切實際。關聯模式需較少解釋、允許更多優化操作、提供極高性能,但無法滿足應用所需模式彈性。關聯模型適合穩定數據結構與可預知訪問模式;XML 適合複雜多變數據結構、混合結構化/非結構化信息應用。

某些情況 XML 性能優於關聯模型:關聯庫常需標準化使業務數據適應扁平結構,複雜數據標準化需存取時轉換、導致多路連接。XML 可在一文檔中更自然表現複雜業務物件及其所有關係,XML 文檔中的層次本質上是預先計算的相關數據條目間連接。選擇數據模式另一考量是應用如何使用數據:即使源自 XML,若後續處理依賴表格數據(如數倉 OLAP),存關聯格式或許更正確。

XML 解決關聯模式難題的四大場景

1. 模式不穩定時

關聯難題:模式頻繁變更,修改關聯模式產生成本開銷。加列、加表、刪列、改類型無痛;但正規化一表為多表極難——先改表再改應用 SQL。
XML 方案:易變部分作為單獨 XML 列存在。XML 天然自描述擴展性無縫處理模式變更,文檔格式變更通常無需改資料庫表/列,不破壞現有 XML 查詢。

2. 數據天然分層時

關聯難題:天然分層/遞歸數據(物料清單、工程物件、生物數據)在關聯模式難表現,需遞歸 SQL 重構。
XML 方案:XML 本質是階層模式,極自然表現階層業務數據。若需表格形式,XML 以簡單導航訪問替代複雜操作序列。

3. 數據表現業務物件時

關聯難題:業務物件(如保險單)從保留數據條目與詳細聲明的組合獲益,而非分散到系列表中。尤其對無獨立業務含義、需完整上下文解釋的單獨條目。正規化進數十表意味著應用處理複雜且對業務不成體系的數據,增加負載與出錯率。
XML 方案:XML 表現極複雜業務物件(緊密相關文檔與截然不同文檔),同時捕獲所有構成條目間關係。每行一 XML 文檔表現一保單,給開發者直觀儲存模型、快速開發。

4. 物件具有稀疏屬性時

關聯難題:極多可能屬性但多數稀疏(如產品目錄:尺寸、顏色、重量、長度、高度、材質、款式、編織、電壓、解析度、排水...任一產品僅關聯子集)。關聯法一:每屬性一列 → 大量 NULL 低效。法二:三列表存名值對 → 屬性名非列名而是 VARCHAR 值,關聯無法精確估計約束與查詢計劃,定義執行約束(如特定屬性唯一性)極難。
XML 方案:XML 元素屬性可選,不需要的完全省略,無 NULL、無名值對。XML Schema 定義極多可選元素,每物件僅用子集。關聯表每行必有相同列,XML 列每行可有不同元素。稀疏元素的 XML 索引極小,優於關聯索引每行嚴格輸入。

5. 數據需要交換時

關聯難題:從關聯表導出記錄發送給其他應用/組織,接收方無額外元數據無法解釋,尤其模式已變時。
XML 方案:XML 自描述,標籤即描述嵌套值的元數據。

DB2 pureXML 超越其他儲存選項的優勢

  • 感知 XML 內部結構:優於 CLOB/BLOB 儲存。可用 XQuery/XPath/SQL/XML 利用結構查詢、建索引提升性能、用 SQL/XQuery/XSLT 更新轉換發布。
  • 保持 XML 階層與彈性本質:優於分解(切割)XML 到關聯表。分解後 XML 標籤消失、需大量表、查詢需複雜 SQL 連接難開發調試、改 XML Schema 常破壞映射、維護昂貴耗時、違背選 XML 彈性初衷。pureXML 允許單一 XML 列儲存基於不同 XML Schema 或同 Schema 不同版本的文檔。
  • 單一資料庫整合 XML 與關聯數據:優於分離兩個資料庫。雙庫需技巧人力維護、聯合數據需應用額外邏輯困難低效。單庫可在查詢中聯合兩類數據、按需轉換、更劃算、性能更好。

簡單場景:FpML 形式的金融衍生品交易

「金融衍生品交易」基於其他金融資產(股票、指數、利率、匯率等)。雙方同意根據影響底層資產的市場條件交換現金。一方利用交易減輕風險,另一方獲即時收入(費用)或投機未來市場獲利。衍生交易特點:(a) 類型變化多、(b) 條款常單獨談判且複雜、(c) 生命週期從天到年、條件隨時間變化。金融機構發現需 XML 彈性擴展性定義捕捉高度變化的標準數據格式,結果開發了 FpML(金融產品標記語言)。FpML 本質是定義 XML 元素屬性如何描述金融衍生交易的 XML Schema。ISDA 代表投資銀行組織管理 FpML 標準使場外衍生交易。樣本資料庫 3 表:

CREATE TABLE trades (tradeId INTEGER, tradedoc XML);
CREATE TABLE parties(partyInfo XML);
CREATE TABLE currencies(symbol CHAR(4), name VARCHAR(30), USDvalue DOUBLE, lastUpdated TIMESTAMP);

TRADES 表含 FpML 文檔與交易 ID,文檔涉及兩方用 PRTYID 識別。詳細信息以 XML 存 PARTIES 表。可從 TRADES 與 PARTIES XML-to-XML 連接找到交易方詳情。貨幣信息在關聯 CURRENCIES 表,需 XML-to-關聯連接關聯交易與貨幣信息。

貨幣表內容

SYMBOL  NAME                      USDVALUE  LASTUPDATED
USD     US Dollar                 1.000     2008-02-05-15.15.57
EUR     Euro                      1.460     2008-02-05-15.15.59
GBP     Great Britain Pounds      1.960     2008-02-05-15.16.23
JPY     Japanese Yen              0.009     2008-02-05-15.15.53
CNY     Chinese Yuan (RMB)        7.190     2008-02-05-15.16.13

PARTIES 表 3 方 XML 文檔

<Party>
  <PtyID>510026</PtyID> <ShortName>MIB</ShortName> <Name>MyGlobal International Bank</Name> <Status>Active</Status>
  <Address><Street>498 Wall Street</Street><City>New York</City><Country>USA</Country></Address>
  <Rating><RatingDate>2006-05-16</RatingDate><RatingValue>Baa1</RatingValue></Rating>
</Party>

<Party>
  <PtyID>67781</PtyID> <ShortName>NVB</ShortName> <Name>National Village Bank</Name> <Status>Active</Status>
  <Address><Street>1805 Back Street</Street><PostalCode>EC3M 4TD</PostalCode><City>London</City><Country>UK</Country></Address>
  <Rating><RatingDate>2006-06-01</RatingDate><RatingValue>Aa</RatingValue></Rating>
</Party>

<Party>
  <PtyID>99114</PtyID> <ShortName>YWI</ShortName> <Name>YourWorld Investments</Name> <Status>Active</Status>
  <Address><POBox>98765</POBox><PostalCode>100027</PostalCode><City>Beijing</City><Country>China</Country></Address>
  <Rating><RatingDate>2007-01-15</RatingDate><RatingValue>Aaa</RatingValue></Rating>
  <Rating><RatingDate>2005-04-21</RatingDate><RatingValue>Aa</RatingValue></Rating>
</Party>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved