1、数据同步需求

自动识别源表中数据所归属的分公司进行自动同步,即将源表中A分公司的数据同步到A公司数据库表,源表中B分公司的数据同步到B公司数据库表,以此类推。

2、实现思路

  • 一般ETL工具实现思路:建立同步到A分公司流程,抽取源表数据->过滤出A分公司->将过滤后的数据加载到A公司数据库表。再建立同步到B分公司流程,有多少个分公司就建立多少条流程。

缺点:开发工作量随分公司数量成正比,当所有表存在变更时需要对所有流程进行修改,日常运行监控、维护困难。

优点:当某个分公司数据库表有变更时,只需要维护对应的流程,不影响其他流程。

  • 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数据库

2条流程解决数据同步到全球部署的N个数据库的更多相关文章

  1. C#多线程lock解决数据同步

    1.代码实例: public class ThreadTest4 { public static void Init() { //多个线程修改同一个值,使用lock锁解决并发 ; i < ; i ...

  2. Spanner:谷歌新一代全球部署的列式数据库

    Spanner 是一个可扩展的.全球分布式的数据库,提供分布式ACID. 架构 universe:一个部署的实例成为universe,目前谷歌有3个,分别为开发/测试/线上 Zone:一个数据中心,相 ...

  3. 5.hbase表新增数据同步之add_peer

    一.前提主从集群之间能互相通讯: 二.在cluster1上(源集群):  1.查看集群已开启的peers hbase(main):011:0> list_peers PEER_ID CLUSTE ...

  4. 基于TreeSoft实现异构数据同步

    一.为了解决数据同步汇聚,数据分发,数据转换,数据维护等需求,TreeSoft将复杂的网状的同步链路变成了星型数据链路.     TreeSoft作为中间传输载体负责连接各种数据源,为各种异构数据库之 ...

  5. 基于TreeSoft实现mysql、oracle、sql server的数据同步

    一.为了解决数据同步汇聚,数据分发,数据转换,数据维护需求,TreeSoft推出了数据同步,数据处理等丰富功能 . TreeSoft作为中间传输载体负责连接各种数据源,为各种异构数据库之间架起沟通的桥 ...

  6. Oracle数据同步交换

    一.为了解决数据同步汇聚,数据分发,数据转换,数据维护等需求,TreeSoft将复杂的网状的同步链路变成了星型数据链路.     TreeSoft作为中间传输载体负责连接各种数据源,为各种异构数据库之 ...

  7. SQL Server数据同步交换

    一.为了解决数据同步汇聚,数据分发,数据转换,数据维护等需求,TreeSoft将复杂的网状的同步链路变成了星型数据链路.     TreeSoft作为中间传输载体负责连接各种数据源,为各种异构数据库之 ...

  8. MySQL数据同步交换

    一.为了解决数据同步汇聚,数据分发,数据转换,数据维护等需求,TreeSoft将复杂的网状的同步链路变成了星型数据链路.     TreeSoft作为中间传输载体负责连接各种数据源,为各种异构数据库之 ...

  9. java——多线程的实现方式、三种办法解决线程赛跑、多线程数据同步(synchronized)、死锁

    多线程的实现方式:demo1.demo2 demo1:继承Thread类,重写run()方法 package thread_test; public class ThreadDemo1 extends ...

  10. Linux实战教学笔记21:Rsync数据同步工具

    第二十一节 Rsync数据同步工具 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载 ...

随机推荐

  1. NOIP集训 P11071 「QMSOI R1」 Distorted Fate 题解

    对本题的评价:有思维含量的线段树好题.曲子好听,曲绘好看,曲师人品好,谱子写得好,鸠好看 题解: P11071 「QMSOI R1」 Distorted Fate 给定一个长度为 \(n\) 的数组 ...

  2. 【BUG】.NET项目|未能加载文件或程序集“xxx”,或它的某一个依赖项。系统找不到指定的文件的通解

    出错代码: MSBuildWorkspace workspace = CreateWorkspace(); Solution solution = workspace.OpenSolutionAsyn ...

  3. K-means 基本流程 Demo

    也是单纯搬个砖, 记个笔记, K-Means 最近是有在用的, 当然之前也有用的, 也是掉包来弄的, 已经很少会去自己写了, 这里的目的, 也是为了自己, 后面再遇到可以复制粘贴. 对, 情况就是这样 ...

  4. 应用间通信(一):详解Linux进程IPC

    进程之间是独立的.隔离的,使得应用程序之间绝对不可以互相"侵犯"各自的领地. 但,应用程序之间有时是需要互相通信,相互写作,才能完成相关的功能,这就不得不由操作系统介入,实现一种通 ...

  5. 网络编程:TIME_WAITE

    一.TIME_WAIT 1.TIME_WAIT发生的场景 故障:一次升级线上应用服务后,发现该服务的可用性时好时坏,一段时间可以对外提供服务,一段时间突然又不可以了.使用netstat命令发现主机有成 ...

  6. System.Runtime.Serialization.SerializationException:“二进制流“0”不包含有效的 BinaryHeader。这可能是由于无效流,或由于在序列化和反序列化之间的对象版本更改。

    var buffer = new byte[1024]; using (var ms = new MemoryStream(buffer)) { //xxx } 原因是buffer的长度过短,当接受到 ...

  7. codeup之比较奇偶数个数

    Description 第一行输入一个数,为n,第二行输入n个数,这n个数中,如果偶数比奇数多,输出NO,否则输出YES. Input 输入有多组数据. 每组输入n,然后输入n个整数(1<=n& ...

  8. WPF关于 附加属性绑定异常 ,导致页面加载缓慢

    最近项目在启动的时候,经常出现Xmal的类型转换的异常  :引发的异常:"MS.Internal.Xaml.Parser.GenericTypeNameParser.TypeNamePars ...

  9. 宝塔面板部署vue项目(MyAuthWeb)

    前言 在前文中,部署好后端了,就可以开始部署前端了,本文使用常见的宝塔面板演示 宝塔面板部署vue项目一般有两种方式,一种是build成纯静态,一种是直接部署node项目 本文以TianYe负责维护的 ...

  10. windows下大数据开发环境搭建(5)——Hive环境搭建

    本文介绍如何在windows下搭建Hive开发环境,主要依赖的环境是Java和Hadoop,其他大部分工作主要是动手配置的工作,按照下面的介绍一步步操作即可完成搭建. 一.所需环境 1.Java:wi ...