| 層面 | 創新內容 |
| 儲存 | 解析後樹狀結構 (非純文本),保留 XML 階層;自動分頁存儲,透明化物理佈局。 |
| 索引 | XML 索引 (路徑/值/全文),支援高效路徑導航查詢。 |
| 查詢語言 | SQL/XML (SQLX) + XQuery 1.0,可混合使用,單一陳述式查詢關聯與 XML 資料。 |
| 資料定義 | CREATE TABLE T (ID INT, DOC XML);可選擇驗證 XML Schema (XMLTYPE) 或僅檢查 Well-formed。 |
| 管理工具 | Control Center 整合 XML 瀏覽、索引建立、SQL/XML/XQuery 執行、RUNSTATS/EXPLAIN 擴充支援 XML。 |
| 高可用/備份 | HADR、線上備份、恢復完整支援 XML 欄位。 |
| 應用開發介面 | JDBC、CLI/ODBC、.NET、PHP、COBOL 全面支援 XML 資料讀寫。 |
關鍵特性詳解
原生 XML 儲存
- XML 文檔剖析為節點樹,節點標註型別資訊 (Schema 驗證時用 Schema 型別,否則用預設型別)。
- 儲存格式反映原始階層,支援高效子樹提取、路徑導航。
- 應用程式無需感知物理儲存細節 (分頁、壓縮、壓縮)。
混合查詢能力
-- SQL/XML 發布關聯資料為 XML
SELECT XMLSERIALIZE(XMLELEMENT(NAME "EMP",
XMLATTRIBUTES(E.EMPNO AS "ID"),
XMLFOREST(E.FIRSTNME AS "FN", E.LASTNAME AS "LN"))
AS CLOB)
FROM EMPLOYEE E WHERE E.WORKDEPT = 'A00';
-- XQuery 檢索 XML 欄位
SELECT XMLQUERY('$d/employee/name' PASSING DOC AS "d")
FROM T WHERE XMLEXISTS('$d/employee[dept="A00"]' PASSING DOC AS "d");
-- 混合: 關聯表 JOIN XML 表
SELECT E.EMPNO, X.DOC
FROM EMPLOYEE E, XML_TBL X
WHERE XMLEXISTS('$d/project[budget > 100000]' PASSING X.DOC AS "d")
AND E.EMPNO = XMLCAST(XMLQUERY('$d/manager' PASSING X.DOC AS "d") AS CHAR(6));
Schema 驗證與演進
- 可註冊多個 XML Schema,建表指定
XMLCOLUMN DOC (XMLSCHEMA ID 123)。
- 文檔插入時自動驗證,失敗則拒絕。
- Schema 演進支援向前/向後相容性。
效能與調校
RUNSTATS 收集 XML 統計 (路徑頻率、值分佈)。
EXPLAIN 顯示 XML 索引使用情況、導航路徑成本。
- XML 索引類型:
CREATE INDEX IX_PATH ON T(DOC) GENERATE KEYS FOR XML PATTERN '//employee/name' AS SQL VARCHAR(100)。
商業價值
- 單一資料庫平台滿足關聯與 XML 雙重需求,降低 TCO。
- 現有 SQL 技能可直接轉移,學習曲線平緩。
- 企業級可靠性 (ACID、HADR、安全性) 完整延伸至 XML 資料。
- 加速 SOA、資訊整合、監管合規等 XML 密集型應用交付。
結語
DB2 9 以「混合型資料庫」架構重新定義資料管理邊界,將 XML 從邊緣帶入核心,讓企業以最小代價獲得最先進的原生 XML 處理能力,成為資料庫發展史上的里程碑。
- 上一篇文章: 在 DB2 UDB 中轉換 UTC 時間戳至本地時間 (Java UDF 實作)
- 下一篇文章: DB2 V8 PDF 文檔資源下載清單與說明連結
Copyright ©
程式碼之家 All Rights Reserved