圖1:SQL復制的結構
WebSphere II 全球信息集成復制,通過不同數(shù)據(jù)庫之間的復制,有效的利用了數(shù)據(jù)資源,為提高效率提供了良好的平臺。
DB2 與非 DB2 數(shù)據(jù)庫之間的復制需要用到 WebSphere II。本文力爭通過復制實例讓讀者對不同數(shù)據(jù)庫之間的復制有一個整體的概念。
二、動機
商業(yè)上出于很多原因使用復制,可以歸納為:
分散:把數(shù)據(jù)分散到各個位置;
整合:把其他位置的數(shù)據(jù)聯(lián)合起來;
交換:與其他位置進行雙向的數(shù)據(jù)交換;
靈活應用:對上面提到的方式進行一些改變或者結合。
聯(lián)合 (Federated) 數(shù)據(jù)庫系統(tǒng)的誕生,利用了現(xiàn)有的數(shù)據(jù)資源,把不同商業(yè)數(shù)據(jù)庫軟件的數(shù)據(jù)整合到一起,很大程度的提高了數(shù)據(jù)利用率。聯(lián)合數(shù)據(jù)庫可以用一個SQL語句對分布在不同地點的多種數(shù)據(jù)源發(fā)出請求。聯(lián)合數(shù)據(jù)庫系統(tǒng)可以把本地表和遠程數(shù)據(jù)源聯(lián)接起來,就像數(shù)據(jù)都在本地一樣,并且可以通過對數(shù)據(jù)源進行分布請求來提高數(shù)據(jù)源處理能力,還可以通過在聯(lián)合服務器處理部分分布請求來補充數(shù)據(jù)源的 SQL 限制。
聯(lián)合數(shù)據(jù)庫具有兩個與其他應用服務器不同的特點:
聯(lián)合服務器可以被配置為接收全部或接收部分針對數(shù)據(jù)源的請求。聯(lián)合服務器把這些請求分散到數(shù)據(jù)源。
與其他應用服務器一樣,一個聯(lián)合服務器用 DRDA 通信協(xié)議(例如 SNA 和 TCP/IP)與 DB2 家族實例通信。然而,與其他應用服務器不同的是,與非 DB2 家族實例通信時用其他協(xié)議。
圖2描述了聯(lián)合數(shù)據(jù)庫系統(tǒng)的設置流程
圖2:聯(lián)合數(shù)據(jù)庫系統(tǒng)的設置流程
WebSphere II 包括兩種包裝器(Wrapper),一種為關系型包裝器,負責DB2 UDB, Informix, Oracle, Microsoft SQL Server, Sybase, ODBC, OLE DB 等數(shù)據(jù)的復制。另一種為非關系型包裝器,負責 Flatfile, Excel, XML 等非關系型數(shù)據(jù)的復制。
包裝器定義了一個負責本地數(shù)據(jù)庫與遠程數(shù)據(jù)庫通信的庫。包裝器執(zhí)行很多任務,比如:它可以連接到數(shù)據(jù)源,包裝器應用了數(shù)據(jù)源的標準連接API。它還可以給數(shù)據(jù)源提交請求。聯(lián)合數(shù)據(jù)庫系統(tǒng)可以操作遠程聯(lián)合系統(tǒng)的表。遠程表在本地聯(lián)合數(shù)據(jù)庫中虛擬存在,客戶應用程序可以操作這些虛擬表,但是它們真正存在于遠端數(shù)據(jù)庫中。每個遠程虛擬數(shù)據(jù)庫,把聯(lián)合數(shù)據(jù)庫當作數(shù)據(jù)庫客戶端,他們只對數(shù)據(jù)庫客戶端的請求有回應。因此聯(lián)合數(shù)據(jù)庫需要下載各種遠程數(shù)據(jù)庫的客戶端。
一個聯(lián)合系統(tǒng)的構造,需要一個作為聯(lián)合服務器的 DB2 實例,一個作為聯(lián)合數(shù)據(jù)庫的數(shù)據(jù)庫,一個或多個數(shù)據(jù)源,和可以存取數(shù)據(jù)庫和數(shù)據(jù)源的客戶(用戶和應用)。如果要完成遠程不同數(shù)據(jù)庫之間的復制,還需要應用DB2的數(shù)據(jù)復制功能。
IBM DB2 復制(在一些平臺上被稱為數(shù)據(jù)傳播)是一個從一個位置到另一個位置復制 DB2 和/或其他數(shù)據(jù)庫廠商數(shù)據(jù)的強大的,靈活的工具。IBM的復制支持數(shù)據(jù)轉換,數(shù)據(jù)連接和過濾數(shù)據(jù)??梢栽诓煌钠脚_之間搬運數(shù)據(jù),也可以把數(shù)據(jù)分散到不同的地點或從分散的地方把數(shù)據(jù)聚合到一個地方??梢栽诓煌南到y(tǒng)之間交換數(shù)據(jù)。
IBM復制由四個主要部分組成:管理 (Administrator),Capture,Apply,警報監(jiān)視器 (Alert Monitor)。
管理的部分主要通過復制中心的圖形界面來實現(xiàn)。通過復制中心可以定義復制源,定義從數(shù)據(jù)源到目標數(shù)據(jù)的地圖。它也用來管理和監(jiān)控本地和遠程的 Capture 和 Apply 進程。從圖3中可以看出復制中心圖形界面對其他幾個部分的支持關系。
圖3:復制中心的應用
在源數(shù)據(jù)服務器上運行的 Capture 程序可以獲取 DB2 源數(shù)據(jù)表中的變化。DB2 的源數(shù)據(jù)服務器可以為 DB2 在 z/os, os/390 上的版本 6,7和8,也可以是 iseries 在 os/400 V5R2,或 DB2 在 Windows, Unix 系統(tǒng)中的版本 8。當定義數(shù)據(jù)源的時候會自動生成相應的觸發(fā)器 (Triggers),可以用來捕獲數(shù)據(jù)源的變化。要復制的數(shù)據(jù)可以在 Capture 進程中通過選擇列來進行過濾。被捕獲的更改信息首先存放到本地的源數(shù)據(jù)所在的數(shù)據(jù)庫的表中并且當更改應用到目標數(shù)據(jù)中之后會自動刪除。
當對源表進行改動時,DB2 把相關的記錄寫入日志。這些日志服務于數(shù)據(jù)庫發(fā)現(xiàn)和復制。Capture 程序通過數(shù)據(jù)庫自動連接并獲取日志記錄。每個源表都有相應的 CD (change data) 表來獲取數(shù)據(jù)的變化。當定義一個復制數(shù)據(jù)源時,復制中心自動生成 CD 表。
對于 Apply 部分,捕獲的改變通過 Apply 程序應用到目標表中。Apply 程序可以在任何服務器上運行并且必須對所用到的源服務器和目標服務器都有連通性。數(shù)據(jù)可以通過列,行進行過濾,可以進行合并(例如通過視圖),也可以在 Apply 過程中通過 SQL 表達式進行傳送。DB2 與其他相關的數(shù)據(jù)間進行復制的時候,必須通過聯(lián)合數(shù)據(jù)庫系統(tǒng)來進行昵稱的創(chuàng)建。在本地機器上需要安裝關系型包裝器和非關系型包裝器。對于本例中db2<->ORACLE之間的復制,需要安裝關系型包裝器。
報警監(jiān)視器用來進行對Capture和Apply部分的錯誤監(jiān)控。