2條流程解決資料同步到全球部署的N個資料庫
1 、資料同步需求
自動識別源表中資料所歸屬的分公司進行自動同步,即將源表中 A 分公司的資料同步到A 公司資料庫表,源表中B 分公司的資料同步到B 公司資料庫表,以此類推。
2 、實現思路
l 一般ETL工具實現思路: 建立同步到A分公司流程,抽取源表資料 ->過濾出 A分公司 ->將過濾後的資料載入到 A公司資料庫表。再建立同步到 B分公司流程,有多少個分公司就建立多少條流程。
缺點:開發工作量隨分公司數量成正比,當所有表存在變更時需要對所有 流程進行修改,日常執行監控、維護困難。
優點:當某個分公司資料庫表有變更時,只需要維護對應的流程,不影響其他流程。
l Restcloud ETL 工具實現思路: 建立1個主流程、 1個子流程,主流程用於獲取需要同步的分公司並作為變數引數,並逐個輸出給子流程。子流程獲取主流程的變數引數作為資料過濾條件及動態獲取對應目標資料來源。
主流程工作原理:通過執行 SQL 指令碼做Groupby 分組計算出要同步的分公司並作為變數引數,利用【逐行拆分輸出元件】控制迴圈呼叫子流程,逐個將變數引數傳送給子流程。
建立 1 個子流程,獲取主流程輸出資料作為引數條件抽取需要同步的資料,及需要調取的資料來源。
缺點:存在一定限制,如要求所有分公司的表名稱、表結構相同。
優點:工作量小,日常執行監控、維護便捷。
3 、示例
3 .1 建立主流程
3.1.1 配置【執行SQL指令碼】元件
配置基本屬性:指定讀取源表的資料來源
配置過濾條件:此處無需過濾資料,下一步跳過該項配置
配置SQL 語句 : 編寫SQL 已經做 Groupby 分組計算出要同步的分公司並作為變數引數。
如果有儲存分公司名單與資料來源對應程式碼表,此處可以直接用【表輸入】元件獲取
儲存退出,完成【執行SQL 指令碼】配置。
3 .1.2 配置【逐行拆分輸出】元件
3 .1.3 配置【子任務】元件
選擇已配置後的子流程,選擇資料流入(接收主流程輸出資料)
3 .2 建立子流程
3 .2.1 配置【庫表輸入】
配置基本屬性:指定讀取源表的資料來源
配置SQL 語句:增加資料過濾條件引數
配置輸入欄位:系統自動讀取,無需配置。直接點選儲存退出完成 【庫表輸入】元件配置。
3 .2.2 配置【執行Java 指令碼】
配置基本屬性:無需修改配置,直接下一步。
配置Java 程式碼:程式碼邏輯(通過判斷輸入的引數值獲取對應同步的目標資料來源)
如輸入引數A ,對應同步到資料來源“ Stephen_MySql01 ” , Stephen_MySql01 為配置A 公司的的資料來源名稱。
直接點選編譯並儲存,退出完成 【執行Java 指令碼】元件配置
3 .2.3 配置【庫表輸出】
配置基本屬性:指定讀取源表的資料來源(此處根據引數動態獲取指定輸出資料來源)
配置輸出欄位:根據目標表的欄位情況,手工點選新增列完成輸出欄位配置。
由於資料來源是動態原因,流程在不執行情況下無法獲取到對應表,因此無法自動獲取表結構。
輸出欄位配置完成後,點選儲存完成 【庫表輸出】配置。
3 .3 測試
3 .3.1 用例資料
源表資料如下:
3 .3.2 效果要求:
address 為“廣州”的資料同步到 mysql資料庫
address 為“上海”的資料同步到 SQL serve 資料庫
address 為“北京”的資料同步到 Postgres 資料庫
3 .3.3 執行結果
資料庫結果
標識為“廣州”的,就將該條資料插入到 mysql 資料庫
標識為 “上海” 的,就將該條資料插入到SQL server 資料庫
標識為 “北京” 的,就將該條資料插入到postgres 資料庫
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005218/viewspace-2894001/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 解決兩相同資料庫資料同步的問題 (轉)資料庫
- Oracle資料庫部署實施流程Oracle資料庫
- 對查詢資料庫中第M到N條記錄的思考資料庫
- 《大資料: ZooKeeper 資料同步流程》大資料
- 不同資料庫限制取前N條記錄資料庫
- 同步寫兩個資料庫資料庫
- Oracle資料庫同步技術2Oracle資料庫
- 資料庫同步資料庫
- 資料庫實現原理#2(獲取第N個值).md資料庫
- 2.2.4 建立資料庫的先決條件資料庫
- 如何將本地資料同步到 shopify 或 shopify 資料同步到本地
- 關於資料庫取表的前N條記錄 (轉)資料庫
- 在兩個資料庫之間進行資料同步資料庫
- 同一個server內將資料從A資料庫導到B資料庫Server資料庫
- Oracle資料庫資料遷移流程Oracle資料庫
- 不同Oracle資料庫之間的資料同步Oracle資料庫
- 資料庫同步方案資料庫
- 安裝資料庫和資料庫解決問題資料庫
- 各個資料庫的取一表前N條記錄不同SQL寫法資料庫SQL
- 部署STANDBY資料庫資料庫
- 從資料庫到全棧資料解決方案,達夢不走捷徑資料庫全棧
- SqlServer將資料庫中的表複製到另一個資料庫SQLServer資料庫
- 資料庫設計的流程資料庫
- 解決MySQL的主從資料庫沒有同步的兩種方法MySql資料庫
- 使用canal增量同步mysql資料庫資訊到ElasticSearchMySql資料庫Elasticsearch
- 使用 EasyWechat 同步微信粉絲到資料庫資料庫
- 資料庫亂碼解決資料庫
- 海量資料庫解決方案資料庫
- 解決Mysql資料庫插入資料出現問號(?)的解決辦法MySql資料庫
- MongoDB複製集資料同步流程MongoDB
- 利用oracle快照dblink解決資料庫表同步問題Oracle資料庫
- 包含DOMAIN的資料庫建立資料庫鏈到不包含DOMAIN的資料庫AI資料庫
- db2資料庫下幾條有用的命令DB2資料庫
- 解決Ionic的ion-slide-box 2條資料渲染問題IDE
- MySQL資料庫慢的思路解決MySql資料庫
- MSDB資料庫置疑的解決方法資料庫
- 解決資料庫慢的方法論資料庫
- 建立資料mysql庫流程MySql