一、背景
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。
WebSphere II 全球信息集成復制,通過不同數據庫之間的復制,有效的利用了數據資源,為提高效率提供了良好的平台。
DB2 與非 DB2 數據庫之間的復制需要用到 WebSphere II。本文力爭通過復制實例讓讀者對不同數據庫之間的復制有一個整體的概念。
二、動機
商業上出於很多原因使用復制,可以歸納為:
聯合 (Federated) 數據庫系統的誕生,利用了現有的數據資源,把不同商業數據庫軟件的數據整合到一起,很大程度的提高了數據利用率。聯合數據庫可以用一個SQL語句對分布在不同地點的多種數據源發出請求。聯合數據庫系統可以把本地表和遠程數據源聯接起來,就像數據都在本地一樣,並且可以通過對數據源進行分布請求來提高數據源處理能力,還可以通過在聯合服務器處理部分分布請求來補充數據源的 SQL 限制。
聯合數據庫具有兩個與其他應用服務器不同的特點:
圖2描述了聯合數據庫系統的設置流程:
圖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的復制支持數據轉換,數據連接和過濾數據。可以在不同的平台之間搬運數據,也可以把數據分散到不同的地點或從分散的地方把數據聚合到一個地方。可以在不同的系統之間交換數據。
IBM復制由四個主要部分組成:管理 (Administrator),Capture,Apply,警報監視器 (Alert Monitor)。
管理的部分主要通過復制中心的圖形界面來實現。通過復制中心可以定義復制源,定義從數據源到目標數據的地圖。它也用來管理和監控本地和遠程的 Capture 和 Apply 進程。從圖3中可以看出復制中心圖形界面對其他幾個部分的支持關系。
圖3:復制中心的應用
在源數據服務器上運行的 Capture 程序可以獲取 DB2 源數據表中的變化。DB2 的源數據服務器可以為 DB2 在 z/os, os/390 上的版本 6,7和8,也可以是 iserIEs 在 os/400 V5R2,或 DB2 在 Windows, Unix 系統中的版本 8。當定義數據源的時候會自動生成相應的觸發器 (Triggers),可以用來捕獲數據源的變化。要復制的數據可以在 Capture 進程中通過選擇列來進行過濾。被捕獲的更改信息首先存放到本地的源數據所在的數據庫的表中並且當更改應用到目標數據中之後會自動刪除。
當對源表進行改動時,DB2 把相關的記錄寫入日志。這些日志服務於數據庫發現和復制。Capture 程序通過數據庫自動連接並獲取日志記錄。每個源表都有相應的 CD (change data) 表來獲取數據的變化。當定義一個復制數據源時,復制中心自動生成 CD 表。
對於 Apply 部分,捕獲的改變通過 Apply 程序應用到目標表中。Apply 程序可以在任何服務器上運行並且必須對所用到的源服務器和目標服務器都有連通性。數據可以通過列,行進行過濾,可以進行合並(例如通過視圖),也可以在 Apply 過程中通過 SQL 表達式進行傳送。DB2 與其他相關的數據間進行復制的時候,必須通過聯合數據庫系統來進行昵稱的創建。在本地機器上需要安裝關系型包裝器和非關系型包裝器。對於本例中db2<->Oracle之間的復制,需要安裝關系型包裝器。見圖4。
圖4:進行遠程復制關系圖
報警監視器用來進行對Capture和Apply部分的錯誤監控。