一、RDB模块介绍与演示
针对关系型数据库,FlinkX-RDB封装了基于JDBC规范的查询与插入等公共操作,各个数据源可通过继承FlinkX-RDB模块实现各自逻辑,目前已支持绝大部分市面上的RDB数据源:
- MySQL
- Oracle
- SqlServer
- PostgreSQL
- Db2
- DM
- Gbase
- ClickHouse
- SAPHANA
- Teradata
- Greeplum
二、脏数据原理与演示
数据同步过程中,出现主键为空,主键冲突等脏数据导致插入失败时,根据任务配置选择记录脏数据并继续执行后续数据插入或者直接结束任务。生产环境会根据脏数据管理模块对脏数据进行管理,存储到文件系统里,在任务结束后,可以在对应路径下查看,目前只支持Hadoop文件系统存储。
三、多通道原理与演示
其本质是通过Flink的并行度进行多线程并发读写以及数据库函数的mod()方法划分数据,使得数据不会重复读取。开启多通道的参数如下:
- reader插件parammeter里配置 splitPk切割键
- setting.speed里配置 channel 通道数量
四、自定义sql使用
FlinkX通过where条件拼接来进行自定义过滤,自定义过滤条件仍然是对table进行数据过滤,而自定义sql则是用户通过customSql指定sql,将其作为子查询,其结果作为临时表进行同步。
五、增量同步
表里的数据每天都在增加只需要同步增量的数据即可。指定增量字段来构造sql的where条件语句查询增量的数据,并将最后一条数据的增量字段值存到prometheus中,作为下次任务的增量字段起始值,达到增量数据的每日同步。只有RDB类型的reader插件支持增量同步并且增量字段只能为数值类型或者时间类型。
六、断点续传
断点续传使用场景是在需要资源较多的任务中,如果出现同步失败,重新同步会耗费大量资源,因此需要在同步失败的地方开始重新同步,减少资源的占用。断点续传主要通过Flink的Check Point机制存储任务运行时的状态以及位置信息并在CheckPoint时进行事务的提交,避免数据重复插入,这样在任务失败的时候,从Check Point处进行恢复运行即可。
七、间隔轮询
间隔轮询场景是在表里的数据不停的插入而不做其他操作,其原理根据配置的增量标识字段去轮询数据库获取数据,如果获取到数据则更新增量标识字段的值,相当于一个无界流,增量标识字段的类型必须是数值类型或者时间类型。
本文首发于:数栈研习社