一、背景
DB2 聯合資料庫是分散式資料庫管理的特殊形式。在聯合資料庫系統中,可以通過一個 SQL 命令來發出對多個資料來源的命令請求。DB2 與非 DB2 資料庫之間進行複製之前,首先需要保證非 DB2 資料來源可以被 DB2 ESE Version 8 federated database訪問。對於DB2 Replication Version 8 所需的聯合資料庫功能可以在現有發布的 DB2 ESE Version 8 和 DB2 Connect Enterprise Edition Version 8 中提供。
"SQL複製"又稱為"DB2複製",是為 DB2 開發的兩種資料複製類型中的一種,它是通過 SQL 進行的複製。在這裡簡單提一下,DB2 複製中的另一種"Q複製"是通過 Websphere MQ 訊息佇列進行的。在進行 SQL 複製時,Capture 程式讀取 DB2 恢複日誌以擷取對指定源表的更改。該程式將更改儲存到傳輸表格中,也稱作變化資料表(changed data table),Apply 程式並行讀取更改並應用於目標事務,見圖1。
圖1:SQL複製的結構
WebSphere II 全球資訊整合複製,通過不同資料庫之間的複製,有效利用了資料資源,為提高效率提供了良好的平台。
DB2 與非 DB2 資料庫之間的複製需要用到 WebSphere II。本文力爭通過複製執行個體讓讀者對不同資料庫之間的複製有一個整體的概念。
二、動機
商業上出於很多原因使用複製,可以歸納為:
- 分散:把資料分散到各個位置;
- 整合:把其他位置的資料聯合起來;
- 交換:與其他位置進行雙向的資料交換;
- 靈活應用:對上面提到的方式進行一些改變或者結合。
聯合 (Federated) 資料庫系統的誕生,利用了現有的資料資源,把不同商務資料庫軟體的資料整合到一起,很大程度的提高了資料利用率。聯合資料庫可以用一個SQL語句對分布在不同地點的多種資料來源發出請求。聯合資料庫系統可以把本地表和遠端資料源聯結起來,就像資料都在本地一樣,並且可以通過對資料來源進行分布請求來提高資料來源處理能力,還可以通過在同盟伺服器處理部分分布請求來補充資料來源的 SQL 限制。
聯合資料庫具有兩個與其他應用伺服器不同的特點:
- 同盟伺服器可以被配置為接收全部或接收部分針對資料來源的請求。同盟伺服器把這些請求分散到資料來源。
- 與其他應用伺服器一樣,一個同盟伺服器用 DRDA 通訊協定(例如 SNA 和 TCP/IP)與 DB2 家族執行個體通訊。然而,與其他應用伺服器不同的是,與非 DB2 家族執行個體通訊時用其他協議。
圖2:聯合資料庫系統的設定流程
WebSphere II 包括兩種封裝器(Wrapper),一種為關係型封裝器,負責DB2 UDB, Informix, Oracle, Microsoft SQL Server, Sybase, ODBC, OLE DB 等資料的複製。另一種為非關係型封裝器,負責 Flatfile, Excel, XML 等非關係型資料的複製。
封裝器定義了一個負責本機資料庫與遠端資料庫通訊的庫。封裝器執行很多任務,比如:它可以串連到資料來源,封裝器應用了資料來源的標準串連API。它還可以給資料來源提交請求。聯合資料庫系統可以操作遠程聯合系統的表。遠端資料表在本地聯合資料庫中虛擬存在,客戶應用程式可以操作這些虛擬表,但是它們真正存在於遠端資料庫中。每個遠程虛擬資料庫,把聯合資料庫當作資料庫用戶端,他們只對資料庫用戶端的請求有回應。因此聯合資料庫需要下載各種遠端資料庫的用戶端。
一個聯合系統的構造,需要一個作為同盟伺服器的 DB2 執行個體,一個作為聯合資料庫的資料庫,一個或多個資料來源,和可以存取資料庫和資料來源的客戶(使用者和應用)。如果要完成遠程不同資料庫之間的複製,還需要應用DB2的資料複製功能。
IBM DB2 複製(在一些平台上被稱為資料傳播)是一個從一個位置到另一個位置複製 DB2 和/或其他資料庫廠商資料的強大的,靈活的工具。IBM的複製支援資料轉換,資料連線和過濾資料。可以在不同的平台之間搬運資料,也可以把資料分散到不同的地點或從分散的地方把資料彙總到一個地方。可以在不同的系統之間交換資料。