2条流程解决数据同步到全球部署的N个数据库

RestCloud RestCloud   |    442   |    2022-07-31 18:22

1、数据同步需求

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

2、实现思路

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

  • 缺点:开发工作量随分公司数量成正比,当所有表存在变更时需要对所有流程进行修改,日常运行监控、维护困难。
  • 优点:当某个分公司数据库表有变更时,只需要维护对应的流程,不影响其他流程。

Restcloud ETL工具实现思路:
创建1个主流程、1个子流程,主流程用于获取需要同步的分公司并作为变量参数,并逐个输出给子流程。子流程获取主流程的变量参数作为数据过滤条件及动态获取对应目标数据源。
主流程工作原理:通过执行SQL脚本做Groupby分组计算出要同步的分公司并作为变量参数,利用【逐行拆分输出组件】控制循环调用子流程,逐个将变量参数传送给子流程。

ca0e35cd23ba4fe18ee565d2a1a96aaf
创建1个子流程,获取主流程输出数据作为参数条件抽取需要同步的数据,及需要调取的数据源。

281cac449665404399030c7c7faf39c4

  • 缺点:存在一定限制,如要求所有分公司的表名称、表结构相同。
  • 优点:工作量小,日常运行监控、维护便捷。

3、示例

3.1 建立主流程

efa895a49b2044ce8cd6e82c86df5ff1

3.1.1配置【执行SQL脚本】组件

配置基本属性:指定读取源表的数据源

a3690f5045d64d55a85a0e2785f62c87
配置过滤条件:此处无需过滤数据,下一步跳过该项配置
配置SQL语句:编写SQL已经做Groupby分组计算出要同步的分公司并作为变量参数。
如果有存储分公司名单与数据源对应代码表,此处可以直接用【表输入】组件获取

c63a1168950a41cc9185ea7ae8b1dfdb

保存退出,完成【执行SQL脚本】配置。

3.1.2配置【逐行拆分输出】组件

95ee30ba7edc4b25a427fdc866989852

3.1.3配置【子任务】组件

选择已配置后的子流程,选择数据流入(接收主流程输出数据)

52514c6bd7604328b696a5e257c29dca

3.2 建立子流程

11dfec5dea1f4a568034cc8d284df629

3.2.1 配置【库表输入】

配置基本属性:指定读取源表的数据源

78b492ff0dbf4631bb1feca4084b4727

配置SQL语句:增加数据过滤条件参数

6bbe197b24f54fb293ebd997e3de0dea

配置输入字段:系统自动读取,无需配置。直接点击保存退出完成【库表输入】组件配置。

3.2.2 配置【执行Java脚本】

配置基本属性:无需修改配置,直接下一步。
配置Java代码:代码逻辑(通过判断输入的参数值获取对应同步的目标数据源)
如输入参数A,对应同步到数据源“Stephen_MySql01”, Stephen_MySql01为配置A公司的的数据源名称。

f27ff38e9c5c4a4f917abc28625611a3
直接点击编译并保存,退出完成【执行Java脚本】组件配置

3.2.3 配置【库表输出】

配置基本属性:指定读取源表的数据源(此处根据参数动态获取指定输出数据源)

dafec52cbb5f45b6aa96da74cfb59caf
配置输出字段:根据目标表的字段情况,手工点击新增列完成输出字段配置。
由于数据源是动态原因,流程在不运行情况下无法获取到对应表,因此无法自动获取表结构。

1b294f12f0d145ab8c3e3a0e3fe386d5
输出字段配置完成后,点击保存完成【库表输出】配置。

3.3 测试

3.3.1用例数据

源表数据如下:

1653e77b1307486399cb2ff3c5902258

3.3.2效果要求:

address 为“广州”的数据同步到mysql数据库
address 为“上海”的数据同步到SQL serve数据库
address 为“北京”的数据同步到Postgres数据库

3.3.3运行结果

e000cb18babe4468b229f83b2d376455
数据库结果
标识为“广州”的,就将该条数据插入到mysql数据库

f9412674425b4b16aabf8fbe168d8c1c

标识为“上海”的,就将该条数据插入到SQL server数据库

4bf0c7212d26447db61c114768fcbd50

标识为“北京”的,就将该条数据插入到postgres数据库

0f11ba86b5574a84ad2ecc7c0f85ac75

文章标签: 其他
推荐指数:

真诚点赞 诚不我欺

2条流程解决数据同步到全球部署的N个数据库

点赞 收藏 评论 分享

关于作者

RestCloud
RestCloud

Restcloud是一家数据集成自动化创新企业,致力于成为世界级的数据集成平台研发型企业。致力于打破国外企业在数据集成领域的垄断地位,决定推出数据集成工具社区版,以满足国内数据集成工程师的广泛需求。

等级 LV3

粉丝 35

获赞 338

经验 499