0
仅供学习,未经允许严禁转载。
使用Kettle将数据从mongodb同步到RDBMS的配置方法。
本文中使用的kettle是7.1版本,大家可以点击这里下载。
1.kettle启动
kettle是基于JVM的所以大家只要有安装好的JVM解压后直接启动即可。这里推荐使用jvm8。
2.创建作业
右键,打开作业设置。 添加自定义属性文件路径my_properties,这个文件用于暂存从sqlserver中查出来的当前时间戳。
保存作业
3.一个简单的数据同步逻辑
这里说一下数据同步的一个简单逻辑。首先在mongodb的文档中增加字段时间戳。 1. 获取sqlserver表中最大的时间戳,如果为null则代表0; 2. 从sqlserver中删除此时间戳的所有数据; 3. 在mongodb中查询比此时间戳大的所有数据,并批量导入sqlserver;
4.创建获取当前最新数据时间戳
创建转换,此转换的目的是获取sqlserver表中最大的时间戳。然后做两个操作。1、把此时间戳保存在my_properties属性的文件中。2、删除sqlserver数据库中此时间戳的所有数据。
5.同步数据到sqlserver
创建转换,此转换的目的是从mongodb中抽取数据并同步到sqlserver中。
6.添加转换到作业中
总结
由于刚接触kettle,对其中的所有组件并没有完全了解。这里只说一下我了解到的一些。 1. 使用表输出组件的性能明显优于插入更新组件。 2. 这个作业中先是在转换1(获取当前已存游标并删除当前游标数据)中将max(time)计算出来放入了一个properties文件中,然后在紧跟的下一步作业中又将此值作为变量读出来。这里为了可以把流中的值当做变量在mongodb input 组件中使用。(如果有更好的方法请在此篇文章下给我留言) 3. 转换中的组件时同步执行的,作业中是顺序执行的。刚开始我想在一个转换中做完所有的事情,但是发现没法控制顺序,因此最终成为了这个样子。