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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DataX將MySql資料庫資料同步到Oracle資料庫MySql資料庫Oracle
- DataX將Oracle資料庫資料同步到達夢資料庫Oracle資料庫
- 《大資料: ZooKeeper 資料同步流程》大資料
- 不同資料庫限制取前N條記錄資料庫
- 資料庫同步資料庫
- 2.2.4 建立資料庫的先決條件資料庫
- 資料庫實現原理#2(獲取第N個值).md資料庫
- 使用canal增量同步mysql資料庫資訊到ElasticSearchMySql資料庫Elasticsearch
- 如何將本地資料同步到 shopify 或 shopify 資料同步到本地
- 高效資料移動指南 | 如何快速實現資料庫 SQL Server 到 Dameng 的資料同步?資料庫SQLServer
- 解決hive資料庫 插入資料很慢的問題Hive資料庫
- KeepassXC & Keepass2android & WebDav 同步資料庫AndroidWeb資料庫
- 解決MySQL的主從資料庫沒有同步的兩種方法MySql資料庫
- 從資料庫到全棧資料解決方案,達夢不走捷徑資料庫全棧
- 解決Mysql資料庫插入資料出現問號(?)的解決辦法MySql資料庫
- 使用 EasyWechat 同步微信粉絲到資料庫資料庫
- SQL資料同步到ElasticSearch(三)- 使用Logstash+LastModifyTime同步資料SQLElasticsearch
- 做資料庫分離讀寫時,sqlServer資料庫資料同步的問題:資料庫SQLServer
- MongoDB複製集資料同步流程MongoDB
- 建立資料mysql庫流程MySql
- 2020版千鋒MySQL資料庫零基礎到精通教程,解決資料庫苦惱!MySql資料庫
- 資料庫2資料庫
- 資料同步:教你如何實時把資料從 MySQL 同步到 OceanBaseMySql
- MySQL主從資料庫同步延遲問題怎麼解決MySql資料庫
- 自動同步整個 MySQL/Oracle 資料庫以進行資料分析MySqlOracle資料庫
- MySQL 資料庫生成 10000 條測試資料MySql資料庫
- 雲資料庫安全解決方案資料庫
- 資料庫回檔解決方案資料庫
- 【資料庫】解決Mysql資料庫提示innodb表不存在的問題!資料庫MySql
- 【虹科乾貨】使用記憶體資料庫解決三個資料庫效能問題記憶體資料庫
- 資料庫同步利器 otter 雙A同步配置資料庫
- k8s部署canal-1.1.6版本實現MySQL資料庫資料同步K8SMySql資料庫
- 向資料庫中插入一條新的資料,並返回新增資料的ID資料庫
- 資料庫非同步操作資料庫非同步
- [資料庫]MYSQL主從同步資料庫MySql主從同步
- PG 資料庫 從阿里雲pg rds 同步資料。資料庫阿里
- 使用資料泵(expdp、impdp)遷移資料庫流程資料庫
- ETL資料整合丨SQLServer到Doris的無縫資料同步策略SQLServer