DB2 Cube Views 作為 DB2 Universal Database 的增值功能,透過共享多維元數據,讓商業智慧(BI)工具能直接理解關聯式資料庫的星型/雪花型結構,加速 OLAP 解決方案的開發與部署。然而,大多數第三方 BI 工具擁有自有元數據模型,要與 DB2 Cube Views 互操作,必須開發「元數據橋接器」雙向轉換元數據。本文詳細說明橋接器的設計考量、API 使用方式與實作步驟。
元數據物件呈分層結構,從基礎的 Attribute(對應資料欄)、Join(捕捉星型結構的連接鍵)、Hierarchy(層級)、Dimension(維度)、Measure(度量)到最高層的 Cube Model(多維模型,封裝事實表與共享維度)。完整定義的 Cube Model 即對應一個星型/雪花型結構。


唯一介面為 DBINFO.MD_MESSAGE(Operation IN, metadata IN/OUT, response OUT),所有參數為 CLOB 型別,承載 XML 文件。優勢在於語言無關性,任何支援 JDBC/ODBC 的語言皆可呼叫。
DESCRIBE:讀取元數據(輸出於第二參數)CREATE / IMPORT:建立新元數據(輸入於第二參數)ALTER / RENAME:修改現有元數據DROP:刪除元數據VALIDATE:驗證元數據有效性| API 參數 | 對應 XSD 檔案 |
|---|---|
| 操作與回應(參數 1、3) | db2md_parameter.xsd |
| 元數據(參數 2) | db2md_metadata.xsd、db2md_types.xsd |
private String callDB2StoredProc(String XMLRequestString, String XMLMetadataString, boolean outputMetadata) {
String sql = "CALL db2info.MD_MESSAGE (?, ?, ?)";
CallableStatement callStmt = conn.prepareCall(sql);
callStmt.setString(1, XMLRequestString);
callStmt.setString(2, XMLMetadataString);
callStmt.registerOutParameter(2, Types.VARCHAR);
callStmt.registerOutParameter(3, Types.VARCHAR);
callStmt.execute();
// 處理輸出與警告...
}
<olap:request xmlns:olap="https://www.ibm.com/olap" version="8.1.2.1.0">
<describe objectType="all" recurse="no"/>
</olap:request>
<olap:request ...>
<describe objectType="cubeModel" recurse="yes">
<restriction>
<predicate property="name" operator="=" value="MyCubeModel"/>
<predicate property="schema" operator="=" value="db2admin"/>
</restriction>
</describe>
</olap:request>
<olap:request ...><create/></olap:request>
<olap:request ...><alter/></olap:request>
<join name="ProductFamily" schema="db2admin" type="inner" cardinality="n:1">
<attributeJoin operator="=">
<leftAttributeRef name="FAMILYID" schema="db2admin"/>
<rightAttributeRef name="FAMILYID (FAMILY)" schema="db2admin"/>
</attributeJoin>
</join>
<olap:request ...>
<script>
<drop objectType="cube"><restriction>...</restriction></drop>
<drop objectType="cubeFacts"><restriction>...</restriction></drop>
<drop objectType="cubeDimension"><restriction>...</restriction></drop>
<drop objectType="cubeHierarchy"><restriction>...</restriction></drop>
</script>
</olap:request>
架構師需精通雙方元數據模型,逐物件屬性對照。下表列出 DB2 Cube Views 物件共同屬性:
| 屬性 | 說明 |
|---|---|
| Schema | 長度 ≤30 bytes;完整名稱格式 SCHEMA.NAME |
| Name | 長度 ≤128 bytes;Attribute 與 Measure 共享命名空間 |
| Business Name | ≤128 bytes |
| Comments | ≤254 bytes |
| Creator / Create Time / Modifier / Modify Time | 映射至 DB2 時非必填 |
| 物件類型 | 關鍵提醒 |
|---|---|
| Attribute / Measure | SQL 表達式模板解析最複雜,需遞歸解析巢狀引用 |
| Join | 捕捉星型結構關鍵,橋接器務必正確產生 |
| Hierarchy | 屬性列表有序;非所有類型/部署組合皆合法 |
| Cube Model | 橋接器通常以此為最高映射單位 |
| Cube / Cube Facts / Cube Dimension | 視為 Cube Model 的一部分映射 |
| 方式 | 優點 | 缺點 |
|---|---|---|
| XML 檔案 | 橋接器可獨立於 DB2 運行(異機部署) | 無法保證元數據與 DB2 目錄同步;稍後匯入可能失敗 |
| API 呼叫 | 可用 VALIDATE 驗證;可查詢系統目錄補充資訊;即時見最新元數據 | 開發成本較高(需產生/解析操作與回應 XML) |
經驗顯示典型橋接器專案需 3+ 人月(設計 1 月、實作 1+ 月、測試 1 月)。
<status> 元素含錯誤碼、文字與 token,仔細閱讀通常能定位問題。db2md_config.xml 開啟追蹤:<trace level="high" logFile="db2mdtrace.log" bufferSize="0"/>,日誌固定輸出於實例目錄。DB2 Cube Views 的 XML 存儲程序介面設計簡潔,掌握 XML 語法後即可著手映射工作。一個映射合理、穩健的橋接器,能為方案建構者節省大量整合工夫,是 DB2 與 BI 生態系互操作的關鍵基礎設施。