如何用 CloudCanal 做多源数据汇聚-程序员宅基地

技术标签: CloudCanal  数据分析  数据库  数据处理  大数据  

简介

CloudCanal 近期增强了数据汇聚防重能力,消除各个来源 数据表名冲突主键/唯一键约束冲突 的可能性。

这个增强具体特性包括:

  • 常用虚拟列添加
  • 指定虚拟列为对端表主键
  • 对端表名分级元数据拼接
  • 可视化操作,无需写自定义代码

本文简要介绍上述特性,并使用 MySQL -> StarRocks 作为示例进行能力演示。

技术点

多种虚拟列

为了应对不同场景,不同数据源,CloudCanal 提供了以下虚拟列生成能力,如下表。

同时也支持 单表设置多个虚拟列针对特定表设置批量设置

虚拟列种类 说明 有效的操作
指定具体值 可指定特定的数字、字符串生成新列,写入到对端 INSERT
数据迁移或同步时间 以数据到达 CloudCanal 的时间生成新列,写入对端 INSERT
源端实例ID_SCHEMA_表_主键值 按照源端数据源 实例IDSchema主键值 做拼接生成新列,写入对端 INSERT,UPDATE,DELETE
源端实例ID_DB_SCHEMA_表_主键值 按照源端数据源 实例IDCatalogSchema主键值 做拼接生成新列,写入对端 INSERT,UPDATE,DELETE
源端实例DB_SCHEMA_表_主键值 按照源端数据源 CatalogSchema主键值 做拼接生成新列,写入对端 INSERT,UPDATE,DELETE
源端实例SCHEMA_表_主键值 按照源端数据源 Schema主键值 做拼接生成新列,写入对端 INSERT,UPDATE,DELETE
源端实例表_主键值 按照源端数据源 主键值 做拼接生成新列,写入对端 INSERT,UPDATE,DELETE

指定虚拟列为对端主键(唯一键)

多来源数据汇聚到同一张表,如果存在主键或唯一约束,往往会形成冲突,比较典型的例子如来自各地的 MySQL 数据自带自增主键,汇聚到对端主键即冲突。

为了解决这个问题,我们利用既有的 设定对端主键能力,将其扩展到虚拟列,通过将类似 源端实例ID_SCHEMA_表_主键值 设置成对端主键达成主键或唯一键约束成立。

此能力可针对特定表或批量进行设置。

对端表名拼接

业务除了汇聚到同一张表的需求,也存在保持源端独立表的需求,这个时候需要解决表名冲突问题。

CloudCanal 针对不同数据源,提供以下几种表名拼接规则,在结构迁移时重命名,并且数据迁移和同步支持此类元数据映射。

表名映射规则 说明
按 SCHEMA_TABLE 拼接(元数据镜像) 按照源端数据源 Schema 拼接作为对端表名
按 SCHEMA_TABLE 拼接(元数据转小写) 按照源端数据源 Schema 拼接并转为 小写 作为对端表名
按 SCHEMA_TABLE 拼接(元数据转大写) 按照源端数据源 Schema 拼接并转为 大写 作为对端表名
按 DB_SCHEMA_TABLE 拼接(元数据镜像) 按照源端数据源 CatalogSchema 拼接作为对端表名
按 DB_SCHEMA_TABLE 拼接(元数据转小写) 按照源端数据源 CatalogSchema 拼接并转为 小写 作为对端表名
按 DB_SCHEMA_TABLE 拼接(元数据转大写) 按照源端数据源 CatalogSchema 拼接并转为 大写 作为对端表名

支持的链路

此次增强,因为测试时间紧张,我们只开了一批链路,如下列表所示,这些链路均支持上述特性

  • MySQL -> MySQL, MySQL -> StarRocks, MySQL -> Doris, MySQL -> SelectDB, MySQL -> ClickHouse, MySQL -> PostgreSQL, MySQL -> ORACLE
  • ORACLE -> StarRocks ,ORACLE -> MySQL
  • PostgreSQL -> MySQL

操作示例

环境准备

任务创建

  • 选择数据源信息略,点击下一步

  • 选择任务规格、配置略,点击下一步

  • 选择库表,点击库表映射,选择 按 SCHEMA_TABLE 拼接(元数据镜像),可看到对端表名按规则拼接

  • 点击下一步

    gather_data_3

  • 选择列页面

  • 批量操作 > 批量设置虚拟列

    gather_data_4

  • 批量操作 > 批量设置对端主键,此例选择 vir_instid_sche_tab_pk 作为对端主键

  • 点击下一步

    gather_data_5

  • 确认任务创建

  • 结构迁移,全量迁移,增量同步正常运行

    gather_data_6

功能验证

查看全量迁移数据
  • 使用 CloudDM 查询对端表数据,结构正确(主键),虚拟列数据按规则生成

    gather_data_7

    gather_data_8

  • 源端插入和更新数据,对端虚拟列数据按规则插入或更新(pk字段更新,暂未支持)

    gather_data_9
    gather_data_10

  • 源端删除数据,对端则删除对应数据

总结

本文主要介绍 CloudCanal 数据防重能力,降低数据汇聚场景各个来源数据表名冲突、主键/唯一键约束冲突的概率,从而让用户更加便捷地落地在线数据应用。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wankaimingzj/article/details/135983120

智能推荐

Ubuntu 12.04 the system is running in low-graphics mode_the system is running in low-graphice mod-程序员宅基地

文章浏览阅读3.1w次。UbuntuCommunityAsk!DeveloperDesignHardwareShopMore ›Stack Exchangesign up log in Ask UbuntuQuestionsTagsTourUsers_the system is running in low-graphice mod

selenium——unittest框架_selenium unittest框架-程序员宅基地

文章浏览阅读1.2k次。一、unittest框架基本介绍二、unittest框架解析三、unittest框架使用方法1.测试固件2.测试套件3.用例的执行顺序4.忽略测试用例中的方法5.unittest断言6.HTML报告生成_selenium unittest框架

国产免费数据库建模工具EZDML3.24发布 支持生成和预览vue文件_vue 数据模型软件-程序员宅基地

文章浏览阅读2.3k次。国产免费数据建模和代码生成工具,新版增加了生成vue的JS脚本模板,默认采用ElementUI作为template界面_vue 数据模型软件

1005 继续(3n+1)猜想(python)_phython 3n+1问题-程序员宅基地

文章浏览阅读122次。卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我们称 5、8、4、2 是被 3“覆盖”的数。我们称一个数列中的某个数n为“关键数”,如果n不能被数列中的其他数字所覆..._phython 3n+1问题

jupyter下的python基本使用和信号处理编程_jupyterlab fft-程序员宅基地

文章浏览阅读1.5k次。jupyter下的python基本使用和信号处理编程简介:jupyter notebook是一种 Web 应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中。它可以直接在代码旁写出叙述性文档,而不是另外编写单独的文档。也就是它可以能将代码、文档等这一切集中到一处,让用户一目了然。实验环境:腾讯云服务器centos7一、安装jupyter notebook..._jupyterlab fft

Notepad++ 安装XML Tools插件格式化XML文件-程序员宅基地

文章浏览阅读7.8k次,点赞3次,收藏5次。Notepad++ 安装XML Tools插件格式化XML文件Ritchie_Li2022.02.06 20:37:12字数 183阅读 0编辑文章1. 打开Notepad++ 软件2. 选择插件,选择“插件管理”3. 搜索 XML Tools,找到该插件后,勾选该文件,点击“安装”在Notepad++ 中安装,如果没有成功,可以在多尝试2次,我是第3次成功的,具体原因不知,但有的电脑一次就能安装成功的。4. 安装的进入如下:5.成功之后,插件栏显示6. 格式化XML文件, 单击 "_xml tools

随便推点

(转)基于MVC4+EasyUI的Web开发框架经验总结(10)--在Web界面上实现数据的导入和导出...-程序员宅基地

文章浏览阅读166次。http://www.cnblogs.com/wuhuacong/p/3873498.html数据的导入导出,在很多系统里面都比较常见,这个导入导出的操作,在Winform里面比较容易实现,我曾经在之前的一篇文章《Winform开发框架之通用数据导入导出操作》介绍了在Winform里面的通用导入导出模块的设计和开发过程,但在Web上我们应该如何实现呢?本文主要介绍利用MVC4+Eas...

14.JS语句和注释,变量和数据类型-程序员宅基地

文章浏览阅读112次。1.JavaScript 语句(1)语句的作用(2)语句标识符2.代码和代码块儿(1)代码(2)代码块3.分号、空格和拆行(1)分号(2)空格(3)拆行4.单行注释和多行注释5.JS变量6.创建变量7.JS 数据类型(1)值类型(基本类型):(2)引用数据类型(对象类型):(3)动态类型8.字符串、数字、布尔、数组和对象等(1)字符串(2)数字(3)布尔(4)数组(5)对象...

C语言ASCLL码_c语言 \ ascll-程序员宅基地

文章浏览阅读2.1k次。C语言ASCLL码表介绍_c语言 \ ascll

Linux那些事儿之我是U盘(37)彼岸花的传说(五)_unsigned soft : 1;-程序员宅基地

文章浏览阅读4.1k次。 燕子去了,有再来的时候;杨柳枯了,有再青的时候;桃花谢了,有再开的时候;老婆离了,有再找的时候,孩子跑了,有回来的时候;煮熟的鸭子飞了,有飞回来的时候.一个函数没讲完就跳走了,有再回来的时候.其实,那些人,那些事,终究不曾远离.于是,她再一次进入我们的视野. 她就是usb_stor_control_thread().唤醒她的是来自queuecommand的up(&(us->sema)_unsigned soft : 1;

usb-serial controller d感叹号_usb serial converter驱动感叹号-程序员宅基地

文章浏览阅读4k次,点赞6次,收藏12次。2. 安装正确的驱动程序:USB-Serial设备通常需要安装驱动程序才能正常工作。这些驱动程序通常可从设备制造商的官方网站下载。请确保下载并安装与您的操作系统兼容的最新驱动程序。解决:1. 确认设备已正确连接:检查USB-Serial设备是否正确插入计算机的USB接口,并确保插头没有松动或损坏。感叹号可能是对于USB-Serial设备发生的问题或错误的表达。这可能是指设备无法被识别、驱动安装问题、通信错误等。_usb serial converter驱动感叹号

Laravel定时任务_laravel 停止schedule:run-程序员宅基地

文章浏览阅读576次。Laravel 定时任务首先:Laravel 制定定时任务很简单的!在app/console 文件夹下面,执行 php artisan make:console TestSchedule,他会生成TestSchedule.php这个文件TestSchedule.php,这个文件写你要定时执行的代码逻辑;class TestSchedule extends Command { //..._laravel 停止schedule:run

推荐文章

热门文章

相关标签