每日一得

          不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發
          最近關心的內容:SSH,seam,flex,敏捷,TDD
          本站的官方站點是:顛覆軟件

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks
          key words: 數據庫復制?
          come from here

          一、背景
            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描述了聯合數據庫系統的設置流程:


            圖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的復制支持數據轉換,數據連接和過濾數據??梢栽诓煌钠脚_之間搬運數據,也可以把數據分散到不同 的地點或從分散的地方把數據聚合到一個地方??梢栽诓煌南到y之間交換數據。

            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部分的錯誤監控。





          posted on 2006-07-27 19:54 Alex 閱讀(470) 評論(0)  編輯  收藏 所屬分類: dataBase
          主站蜘蛛池模板: 会昌县| 白城市| 内黄县| 时尚| 尉犁县| 离岛区| 堆龙德庆县| 荆门市| 阜城县| 江西省| 东城区| 襄樊市| 凤翔县| 集安市| 外汇| 财经| 普洱| 东海县| 华容县| 安康市| 安阳县| 广汉市| 裕民县| 满洲里市| 罗山县| 长乐市| 瑞昌市| 德惠市| 静海县| 库车县| 琼结县| 富宁县| 晋江市| 中宁县| 南华县| 肃宁县| 卫辉市| 长武县| 伽师县| 汉沽区| 龙海市|