系統同步數據方案(ETL的Kettle)

一、工具準備

Kettle下載。這個軟件雖然是開源的,但是資源非常少,國內下載速度也慢。之前是先下載的8.1版本,今天下載的最新版本9.0。以下驗證是在8.1版本上面驗證的。

二、簡單使用與可行性驗證

  1. 轉換

轉換使用主要是驗證了數據庫表的輸入、輸出,實現數據轉存。

 

設置變量

 

2.作業

設計了一個增量插入同步的作業,異常發送郵件。

 

三、詳細設置

設計思路:

         在id角標記錄表取上次已經同步到的id,從正式表篩選此id之後的數據輸出到臨時表,然後再由臨時表同步到目標數據庫的表,同步完成後在id角標記錄表插入已經同步到的id記錄。

這個根據id值增量插入同步的作業依賴3個轉換,這裏我就按照設計順序,截取每個點的配置圖讓大家看明白。

         START

        

         建id角標標初始角標數據:

        

轉換設置id角標到變量:

        

         它包含的轉換配置截圖:

        

        

刪除轉儲臨時表上次的轉儲數據:

 

正式通行數據到臨時通行數據:

 

         它包含的轉換的配置如下:

        

 

         如果字段不一致,就執行輸入字段映射。

臨時通行數據到目標通行數據:

         它包含的轉換配置如下:

         字段不一致,可以自行輸入字段映射。

插入數據同步id角標記錄:

發送郵件:

         這裏我設置了帶附件,不過郵件裏並沒有發現帶附件,有這塊的需求可以進一步研究。

成功:

         這個節點沒有任何配置

最後說下各節點之間的連線,光標放在線上點擊右鍵有相關屬性設置。線上的勾/叉也是可以點擊的,分別表示條件真假。

四、測試效果

日誌的級別很多,有一個非常詳細,在測試自己寫的這個作業的時候,可以看。

作業度量,每一個節點執行的結果也很清楚。

另外,作業鏈路上每一個執行通過的節點都會打鉤,沒有通過報錯的就會是叉。

收到的郵件:

郵件配置,還是可以設置的很詳細的,可以自己測試。

五、總結

  1. 使用kettle數據庫增量同步可行
  2. 多表數據同步,需要多個作業運行,數據量大的情況,數據庫的壓力需要考慮
  3. 查看了門禁業務系統的數據表,表字段id是字符串,有數字也有uuid不適合做增量數據篩選,但是有更新時間字段,可以使用更新時間作爲增量篩選條件。(現在大家明白爲啥會要求表有更新時間字段,同時更新要設置時間值了吧?方便別人也方便自己)
  4. 同步出現異常的補償機制需要制定,提前預估規避風險

    5、軟件開源,新版本資料偏少,老版本功能不夠,後期維護需要考慮(感覺維護成本比代碼方式高)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章