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