在实际业务中,在直接使用开源Kettle 和包装开源Kettle功能 遇见硬核功能瓶颈,灵蜂ETL产品 BeeDI 来解决!详见下表:
序号 | 技术 参数 | BeeDI | Kettle |
1 | 整库迁移或批量表 导出 | 批量自动映射源表结构到目标库。 | 手工逐一定义MAP完成表映射。 |
2 | 时间戳 同步 | 要求源表包含时间戳字段,每次同步时,根据上次记录的断点读取未同步的数据,同步结束后记录断点。所有逻辑全部自动完成,无需手工扩展。 | 要求目标表包含和源表一样的时间戳字段,每次同步时通过MAX()函数获取目标表已经同步数据的最大时间戳,然后在源表设置过滤条件读取上次同步后产生的记录,需要手工编辑SQL处理上述逻辑。 |
3 | 触发器 同步 | 软件自动在源库创建触发器和临时表,数据同步后,自动删除临时表中的数据。 | 用户自己手工创建触发器及临时表,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入临时表,抽取线程从临时表中抽取数据后需要手工删除临时表数据。 |
4 | 日志实时同步 | 软件解析源库日志,还原其中的DML操作并在目标库顺序执行 |
|
5 | 全表 比对 | 分为是否进行差异更新,差异更新时,通过计算每条记录的效验码,对源表和目标表记录进行比对,目标表记录不存在则插入,目标表记录不相同则更新,目标表包含源表没有的记录则删除。 非差异更新时,读取检查源表记录是否存在于目标表,不存在则插入,存在则更新目标表。 | 将每一条数据的每列内容进行比对,比对完了以后追加一个状态字段用来描述这条数据的状态,共有四种状态:identical(未改变)、changed(改变)、new(新增)、deleted(删除),所对应的操作就是增、删、改,接下来借助kettle的switch/case组件按照操作类型执行不同的操作了。 |
6 | 任务 调度 | 包含作业调度和工作流调度,统一管理任务的运行。 | 软件自身定时调度功能不稳定,需要在系统计划中部署任务。 |
|
|
|
|
序号 | 技术参数 | BeeDI | Kettle |
7 | 定制 开发 | 内置集成脚本开发环境,所有图形配置均可转为脚本执行,脚本支持逐行断点调试。 | 使用Java Script脚本或定义java class。 |
8 | 数据一致性 校验 | 比较源表于目标表数据一致性。 |
|
9 | 数据 血缘 分析 | 对集成环境涉及的任意表进行追溯,识别指定数据表从产生到最终使用途径的各个系统及对应的处理过程。 |
|
10 | 数据 分析 | 查看任意数据库、文件或Hadoop数据分布情况,对数据进行量化分析,提供记录总数、算术和、平均值、最大值、最小值、方差及标准差指标分析。 |
|
11 | CSV文件导入Oracle性能 |
15:30:02 开始 15:30:53 结束 300万数据51秒 |
15:32:24 开始 15:35:35 结束 300万数据3分11秒 |