使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

azzotest發表於2015-09-30

簡介

傳統上,透過在非操作時間段內使用一個 ETL 流程批次處理,每年、每月或每週對資料倉儲更新一次。在今天的業務環境中,一線業務使用者需要根據每小時、每分鐘甚至每秒更新的資訊制定決策。這些實時資料需求使得批處理視窗萎縮,並需要一個高效的解決方案來解決這個問題。

IBM InfoSphere DataStage 和 IBM InfoSphere Change Data Capture 的整合是透過 InfoSphere CDC Transaction Stage(一個 DataStage 元件)實現的。CDC Transaction Stage 利用 CDC 提供的服務捕獲源資料庫更改;並使用捕獲的變更資料實時更新資料倉儲,這不會產生任何資料丟失,甚至在發生故障的情況也是如此;並且使您可以在已捕獲的變更資料交付到目標資料庫之前,在其中應用業務邏輯轉換。該解決方案幫助一線業務使用者根據資料倉儲中的最新更新資訊制定智慧業務決策。

IBM InfoSphere DataStage 與 IBM InfoSphere Change Data Capture 的整合

IBM InfoSphere DataStage 與 IBM InfoSphere Change Data Capture 之間的整合是透過 InfoSphere CDC Transaction Stage 實現的。圖 1 顯示了當 InfoSphere CDC 在源資料庫捕獲到變更並使用一個 DataStage 作業 (CDC Transaction Stage) 時,資料流如何將變更資料交付給目標資料庫。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 1. CDC Transaction Stage 作業中的資料流

該資料流的詳細描述如下所述。

1、源資料庫的 InfoSphere CDC 伺服器監控和捕獲源資料庫中的變更。

2、源資料庫的 InfoSphere CDC 伺服器根據複製定義傳輸變更資料。

3、InfoSphere DataStage 伺服器的 InfoSphere CDC 透過一個 TCP/IP 會話將資料傳送到 CDC Transaction Stage,該會話是在複製開始時建立的。CDC for DataStage 伺服器也將定期傳送一個 COMMIT 訊息(以及書籤資訊),以標記捕獲日誌中的事務邊界。

4、在 DataStage 作業中,資料透過連結從 Transaction Stage 流向目標資料庫聯結器階段。書籤資訊透過一個書籤連結傳送。對於每條透過 CDC for DataStage 伺服器傳送的 COMMIT 訊息,CDC Transaction Stage 建立結束波 (EOW) 標記,這些標記透過所有輸出連結傳送到目標資料庫聯結器階段。

5、目標資料庫聯結器階段與目標資料庫相連,並透過會話傳送資料。當目標資料庫聯結器階段在所有輸入連結上收到結束波標記時,就將書籤資訊寫入一個書籤表,然後將事務提交到目標資料庫。

6、CDC for DataStage 伺服器定期從目標資料庫上的書籤表中請求書籤資訊。為了響應該請求,CDC Transaction Stage 透過 ODBC 連線提取書籤資訊然後將其返回到 CDC for DataStage 伺服器。

7、CDC for DataStage 伺服器接收書籤資訊,該資訊用於確定當複製開始時從中讀取變更事務日誌的起始點,以及確定現有事務日誌是否可以清理乾淨。

書籤和資料是同步提交的,因此,即使作業失敗,書籤資訊和寫入的資料也是一致的。如果作業失敗,複製從書籤指定點開始,因此沒有資料丟失。

樣例用例:使用 CDC Transaction Stage 實時更新目標資料庫

本小節介紹了一個樣例用例,透過使用 CDC Transaction Stage 監控源資料庫更改、以及將更改資料實時更新到目標資料庫。該 DataStage 作業包括一個指定關於訪問 InfoSphere CDC 的詳細資訊的 CDC Transaction Stage,以及一個使用從 CDC Transaction Stage 接收到的資料更新目標資料庫的資料庫聯結器階段。DataStage 作業中的 CDC TS 包含至少兩個輸出連結。一個輸出連結傳輸實際資料,第二個輸出連結傳輸書籤資訊,如圖 2 所示。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 2. 樣例用例

在目標資料庫中實時實現變更資料更新所需步驟的詳細描述如下所述。源資料庫可能是源資料庫伺服器 InfoSphere CDC 支援的任何資料庫。在這個用例中,將 Oracle 視為源資料庫,DB2 視為目標資料庫。

1、連線到 Oracle 資料庫並使用下列 DDL 建立來源表 SOURCE_TABLE:

建立表 SOURCE_TABLE (VC1 VARCHAR(5), CH2 CHAR(5), DT3 TIMESTAMP, NU4 NUMBER, NU5 NUMBER(5,3));

2、連線到目標 DB2 資料庫並使用下列 DDL 建立目標表 TARGET_TABLE 和書籤表 BOOKMARK_TABLE:

建立表 TARGET_TABLE (DM_SORTKEY decimal(20), DM_OPERATION_TYPE char(1), DM_TIMESTAMP timestamp, DM_TXID DECIMAL(24), DM_USER varchar(30), VC1 varchar(5), CH2 CHAR(5), DT3 timestamp, NU4 double, NU5 decimal(5,3))

建立表 BOOKMARK_TABLE (DM_KEY smallint, DM_BOOKMARK varchar(1024))

設定複製

IBM InfoSphere CDC Management Console 用於設定複製,包括新增和配置一個新訂閱。

先決條件:安裝和配置 CDC for Oracle、CDC for DataStage 伺服器、CDC Access 伺服器以及 CDC Management Console。

設定過程如下。

1、使用 CDC Access 伺服器憑證登入到 InfoSphere CDC Management Console (MC)。

2、在 CDC Management Console 的 Access Manager 選項卡中為源表和目標表新增新資料儲存。

新增一個新資料儲存 datastore_orcl 來訪問 Oracle 資料庫。

新增一個新資料儲存 datastore_ds 來訪問 InfoSphere DataStage。

圖 3 顯示了 datastore_ds 資料儲存的 Datastore 屬性視窗。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 3. 資料儲存屬性

在 Connection Management 選項卡中為每個資料儲存分配一個使用者。圖 4 顯示了分配給 Admin 使用者的datastore_ds。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 4. Connection Management 選項卡

3、在 CDC Management Console 的 Configuration 選項卡中,新增一個名為 SUB001 的新訂閱,選擇 datastore_orcl 作為源資料庫,datastore_ds 作為目標資料庫。圖 5 顯示了為新訂閱 SUB001 指定的值。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 5. 新訂閱

4、在 Subscriptions 選項卡中,右鍵單擊需要對映源表的訂閱 (SUB001),然後單擊 Map Tables 選項。這將啟動 Map Tables嚮導。

詳細的表對映流程如下所述。

選擇 InfoSphere DataStage,這是 Direct Connect Method 的預設選項。然後單擊 Next,如圖 6 所示。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 6. 選擇對映型別

選擇 DataStage 連線方法作為 Direct Connect,然後單擊 Next,如圖 7 所示。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 7. 選擇連線方法

Select Source Tables 頁面顯示源資料庫中所有可用表。從該列表中,選擇一個或多個需要捕獲變更資料的表,如圖 8 所示。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 8. 選擇源表

選擇所需記錄格式輸出,Single Record 或 Multiple Records 皆可,如圖 9 所示。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 9. 記錄格式

檢視對映詳細資訊,如果正確的話,單擊 Finish,如圖 10 所示。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 10. 檢視對映詳細資訊

該訂閱的表對映在 Table Mappings 選項卡中顯示,如圖 11 所示。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 11. 表對映

5、在 Subscriptions 選項卡中,右鍵單擊訂閱 SUB001,然後選擇 InfoSphere DataStage > InfoSphere DataStage Properties。指定以下屬性。

如圖 12 所示,在 Direct Connect 區域中為 InfoSphere DataStage 作業指定以下值。

在 Project Name 欄位中,指定 DataStage 專案 dstage1 的名稱。

在 Job Name 欄位中,指定作業名 SUB001。

在 Connection Key 欄位中,指定連線鍵 SUB001_CONNECTIONKEY。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 12. DataStage Properties

可選:要將該作業配置為在訂閱上的映象啟動時自動啟動,選擇 Auto-start InfoSphere DataStage Job 核取方塊。要啟用 auto-start 選項,PATH 環境變數必須在例項建立時包含 dsjob 可執行檔案路徑。

生成一個 CDC Transaction Stage 作業模板

完成前幾部分介紹的設定複製過程之後,透過以下步驟生成一個 InfoSphere DataStage (CDC Transaction Stage) 作業模板。

1、在 Management Console 中的 Configuration 選項卡的 Subscriptions 皮膚中右鍵單擊 Subscription,然後單擊InfoSphere DataStage > Generate InfoSphere DataStage Job Definition。

2、在 Generate InfoSphere Job Definition 對話方塊中,選擇您要儲存模板 SUB001.dsx 的位置,然後單擊 Save。

3、在計算機上覆制 .dsx 檔案,其中 InfoSphere DataStage 和 QualityStage Designer 檔案已安裝。

匯入和配置作業模板

使用 DataStage Designer 將生成的作業模板匯入到 DataStage 專案 dstage1。然後提供 CDC Transaction Stage 和 Target DB2 Connector 所需的資訊。該過程的詳細資訊如下。

1、開啟 DataStage Designer 客戶端,單擊 Import > DataStage components,並指定 SUB001.dsx 檔案路徑,然後單擊OK。

2、在 DataStage Repository 皮膚中,展開 Jobs,然後雙擊 SUB001 開啟該作業。

3、配置 CDC Transaction Stage 的階段級別以及鏈路級屬性,過程如下所述。

1.在作業中雙擊 CDC Transaction 階段。

2.在導航視窗中,選擇如圖 13 所示的階段,然後指定所需值。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 13. CDC Transaction Stage 級別屬性

這些屬性的描述如下所述。

書籤 DSN:書籤表的 ODBC 資料來源名稱。

ODBC 使用者名稱:訪問 ODBC 資料來源的使用者名稱。

ODBC 密碼:訪問 ODBC 資料來源的密碼。

訂閱:CDC 訂閱的名稱。CDC 伺服器僅使用前 8 個字元識別訂閱,因此,有必要將註冊的訂閱名前 8 個字元放在 CDC GUI 上,超過 8 個字元的輸入字串截斷為 8 個。

埠號:與 CDC 伺服器通訊的埠號。

主機名:CDC 伺服器的主機名。

使用者名稱:用於訪問 CDC 伺服器的使用者名稱。

密碼:用於訪問 CDC 伺服器的密碼。

心跳間隔:如果這段時間內沒有變更資料,CDC 伺服器以秒為單位傳送心跳訊息的間隔時間。

3.在導航視窗中,逐個選擇輸出連結,如圖 14 所示,並指定所需的值。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 14. 鏈路級屬性

鏈路級屬性的描述如下所述。

書籤連結:如果連結是針對書籤的,該值為真。

表名:這是變更資料的表名或書籤表名。

4.單擊 OK,然後儲存作業。

4、配置 Target DB2 Connector。

1.雙擊 DB2 Connector 階段開啟 DB2 Connector 的 Properties 頁面。

2.在該階段的導航視窗中,選擇 Bookmark 連結,併為 Table name 屬性指定 BOOKMARK_TABLE,如圖 15 所示。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 15. DB2 Connector 書籤連結屬性

3.在該階段的導航視窗中,選擇 SOURCE_TABLE 輸入連結,併為 Table name 屬性指定 TARGET_TABLE,如圖 16 所示。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 16. DB2 Connector 資料連結屬性

4.在導航視窗中,選擇 DB2 Connector 圖示,並提供目標資料庫的詳細資訊,如圖 17 所示。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 17. DB2 Connector 階段級別屬性

5.單擊輸入連結併為 Table name 屬性指定 TARGET_TABLE。

5、單擊 OK,然後儲存作業。

6、使用 DataStage Designer 選單編譯作業。

在訂閱上啟動映象並執行該作業

匯入作業並像前一節那樣配置該階段之後,就可以在 InfoSphere CDC Management Console 中啟動訂閱並執行該作業。該過程的細節如下所述。

1、登入到 CDC Management Console。

2、選擇訂閱 SUB001。

3、右鍵單擊訂閱並選擇 Start Mirroring 來開啟 Start Mirroring 對話方塊。

4、選擇 Continuous 映象方法進行不斷複製,直至訂閱結束為止。

5、如果 DataStage 作業配置為自動啟動,那麼 DataStage 作業 SUB001 將自動開始執行。如果 DataStage 作業沒有配置為自動執行,那麼從 DataStage Designer 執行作業。

6、InfoSphere CDC Management Console 中的訂閱將處於連續映象狀態,且 DataStage 將連續執行。

使用變更資料更新目標表

完成前一小節描述的步驟之後,DataStage 作業和訂閱將處於持續執行狀態。此時,CDC for Oracle 伺服器將持續監控源資料表的變更,並捕獲源表發生的任何變更。捕獲的變更資料傳送到 CDC Transaction Stage,CDC Transaction Stage 進而將資料傳送到 Target DB2 Connector 以將變更資料更新到目標表,該流程如下所述。

1、連線到源資料庫(Oracle 資料庫)併發出以下 SQL 查詢來更新 SOURCE_TABLE:

插入 SOURCE_TABLE 值 ('111','AAA');

插入 SOURCE_TABLE 值 ('222','BBB');

2、在源資料庫中發出下列選擇語句來檢視 SOURCE_TABLE 表中的資料:

SELECT * FROM SOURCE_TABLE;

選擇語句返回圖 18 所示的資料。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 18. 源表中的資料

3、將更改提交到源資料庫之後,連線到目標資料庫,併發出以下查詢以檢視目標表中的資料:

SELECT * FROM TARGET_TABLE;

選擇語句返回圖 19 顯示的資料。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 19. 目標表中的資料

4、發出其他查詢以更新、插入和刪除資料。在目標表上發出選擇語句以檢視變更資料如何複製到目標表。

正如上述步驟所演示的,CDC Transaction Stage 作業持續執行,一旦接收到 CDC 伺服器的變更資料就立即將其更新到目標表。

在變更資料上應用業務邏輯

CDC Transaction Stage 允許您在更新目標資料庫的變更資料之前,在該變更資料上應用業務邏輯相關功能。圖 20 中顯示的 DataStage 作業介紹瞭如何使用 CDC Transaction Stage 在變更資料上應用業務邏輯。

使用IBM InfoSphere CDC Transaction Stage實現高效的資料獲取

圖 20. 在變更資料上應用業務邏輯

在該作業中,當將一個新訂單更新到 Order 表中時,CDC Server 捕獲該表中的變更,然後將變更資料傳輸到 CDC Transaction Stage。CDC Transaction Stage 將變更資料傳遞到作業中的檢查階段。檢查階段使用 Inventory 表執行一個檢查操作,然後將結果資料傳送到 Sales_Table。DB2Connector (Sales_Table) 用結果資料更新目標銷售表。

如上一個用例所示,CDC Transaction Stage 支援您透過使用 DataStage 提供的各種活動階段(處理階段),從而在變更資料上應用業務邏輯。這為根據您的業務需求在變更資料上應用各種業務邏輯提供了極大的靈活性。

整合解決方案的優勢

基於 IBM InfoSphere DataStage 和 IBM InfoSphere Change Data Capture 整合的解決方案提供以下優勢。

1、透過消除冗餘資料傳輸和節約網路頻寬,從而提高執行效率、節省資源和時間。

2、幫助您使用一個解決方案制定更好的決策,該解決方案提供動態資料傳輸以滿足特定業務需求。同時也能安全地交付敏感資料,並使其僅用於授權副本。

3、提供有保證的資料交付,以避免發生故障。

4、允許透過使用 DataStage 提供的預構建階段傳輸變更資料。

5、透過執行查詢整合資料。

6、在將資料交付到目標資料庫之前,將自定義業務邏輯應用到變更資料。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26224278/viewspace-1812500/,如需轉載,請註明出處,否則將追究法律責任。

相關文章