技术标签: CloudCanal 数据分析 数据库 数据处理 大数据
CloudCanal 近期增强了数据汇聚防重能力,消除各个来源 数据表名冲突、主键/唯一键约束冲突 的可能性。
这个增强具体特性包括:
本文简要介绍上述特性,并使用 MySQL -> StarRocks 作为示例进行能力演示。
为了应对不同场景,不同数据源,CloudCanal 提供了以下虚拟列生成能力,如下表。
同时也支持 单表设置多个虚拟列,针对特定表设置,批量设置。
虚拟列种类 | 说明 | 有效的操作 |
---|---|---|
指定具体值 | 可指定特定的数字、字符串生成新列,写入到对端 | INSERT |
数据迁移或同步时间 | 以数据到达 CloudCanal 的时间生成新列,写入对端 | INSERT |
源端实例ID_SCHEMA_表_主键值 | 按照源端数据源 实例ID,Schema,表 和 主键值 做拼接生成新列,写入对端 | INSERT,UPDATE,DELETE |
源端实例ID_DB_SCHEMA_表_主键值 | 按照源端数据源 实例ID,Catalog,Schema,表 和 主键值 做拼接生成新列,写入对端 | INSERT,UPDATE,DELETE |
源端实例DB_SCHEMA_表_主键值 | 按照源端数据源 Catalog,Schema,表 和 主键值 做拼接生成新列,写入对端 | 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 拼接(元数据镜像) | 按照源端数据源 Catalog,Schema,表 拼接作为对端表名 |
按 DB_SCHEMA_TABLE 拼接(元数据转小写) | 按照源端数据源 Catalog,Schema,表 拼接并转为 小写 作为对端表名 |
按 DB_SCHEMA_TABLE 拼接(元数据转大写) | 按照源端数据源 Catalog,Schema,表 拼接并转为 大写 作为对端表名 |
此次增强,因为测试时间紧张,我们只开了一批链路,如下列表所示,这些链路均支持上述特性
添加 MySQL 数据库和 阿里云 EMR for StarRocks
选择数据源信息略,点击下一步
选择任务规格、配置略,点击下一步
选择库表,点击库表映射,选择 按 SCHEMA_TABLE 拼接(元数据镜像),可看到对端表名按规则拼接
点击下一步
选择列页面
批量操作 > 批量设置虚拟列
批量操作 > 批量设置对端主键,此例选择 vir_instid_sche_tab_pk
作为对端主键
点击下一步
确认任务创建
结构迁移,全量迁移,增量同步正常运行
使用 CloudDM 查询对端表数据,结构正确(主键),虚拟列数据按规则生成
源端插入和更新数据,对端虚拟列数据按规则插入或更新(pk字段更新,暂未支持)
源端删除数据,对端则删除对应数据
本文主要介绍 CloudCanal 数据防重能力,降低数据汇聚场景各个来源数据表名冲突、主键/唯一键约束冲突的概率,从而让用户更加便捷地落地在线数据应用。
文章浏览阅读3.1w次。UbuntuCommunityAsk!DeveloperDesignHardwareShopMore ›Stack Exchangesign up log in Ask UbuntuQuestionsTagsTourUsers_the system is running in low-graphice mod
文章浏览阅读1.2k次。一、unittest框架基本介绍二、unittest框架解析三、unittest框架使用方法1.测试固件2.测试套件3.用例的执行顺序4.忽略测试用例中的方法5.unittest断言6.HTML报告生成_selenium unittest框架
文章浏览阅读2.3k次。国产免费数据建模和代码生成工具,新版增加了生成vue的JS脚本模板,默认采用ElementUI作为template界面_vue 数据模型软件
文章浏览阅读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问题
文章浏览阅读1.5k次。jupyter下的python基本使用和信号处理编程简介:jupyter notebook是一种 Web 应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中。它可以直接在代码旁写出叙述性文档,而不是另外编写单独的文档。也就是它可以能将代码、文档等这一切集中到一处,让用户一目了然。实验环境:腾讯云服务器centos7一、安装jupyter notebook..._jupyterlab fft
文章浏览阅读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
文章浏览阅读166次。http://www.cnblogs.com/wuhuacong/p/3873498.html数据的导入导出,在很多系统里面都比较常见,这个导入导出的操作,在Winform里面比较容易实现,我曾经在之前的一篇文章《Winform开发框架之通用数据导入导出操作》介绍了在Winform里面的通用导入导出模块的设计和开发过程,但在Web上我们应该如何实现呢?本文主要介绍利用MVC4+Eas...
文章浏览阅读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)对象...
文章浏览阅读2.1k次。C语言ASCLL码表介绍_c语言 \ ascll
文章浏览阅读4.1k次。 燕子去了,有再来的时候;杨柳枯了,有再青的时候;桃花谢了,有再开的时候;老婆离了,有再找的时候,孩子跑了,有回来的时候;煮熟的鸭子飞了,有飞回来的时候.一个函数没讲完就跳走了,有再回来的时候.其实,那些人,那些事,终究不曾远离.于是,她再一次进入我们的视野. 她就是usb_stor_control_thread().唤醒她的是来自queuecommand的up(&(us->sema)_unsigned soft : 1;
文章浏览阅读4k次,点赞6次,收藏12次。2. 安装正确的驱动程序:USB-Serial设备通常需要安装驱动程序才能正常工作。这些驱动程序通常可从设备制造商的官方网站下载。请确保下载并安装与您的操作系统兼容的最新驱动程序。解决:1. 确认设备已正确连接:检查USB-Serial设备是否正确插入计算机的USB接口,并确保插头没有松动或损坏。感叹号可能是对于USB-Serial设备发生的问题或错误的表达。这可能是指设备无法被识别、驱动安装问题、通信错误等。_usb serial converter驱动感叹号
文章浏览阅读576次。Laravel 定时任务首先:Laravel 制定定时任务很简单的!在app/console 文件夹下面,执行 php artisan make:console TestSchedule,他会生成TestSchedule.php这个文件TestSchedule.php,这个文件写你要定时执行的代码逻辑;class TestSchedule extends Command { //..._laravel 停止schedule:run