好长时间没有记录技术文章了,正好最近负责数据迁移工作,就记录一下。
公司近期做了大规模的支付系统架构改造,需要进行数据迁移,将现有生产数据迁移到新的系统库中,在2013年底的时候曾经做过一次交易优化改造,把交易数据也做了一次数据迁移,当时使用的是springbatch来完成的。虽然成功完成迁移工作,但是在迁移过程中遇到了很多问题。
1.整理起来非常麻烦,各种job不太容易管理 。
2.不能进行很好的统计,如在迁移中不能随时跟踪迁移状态,如已迁移的行数,当前每秒迁移行数。
3.不太容易进行优化, 当时多线程并发迁移未使用。
4.完全依赖于java,不够灵活,移植性差。
对于这次系统架构改造要比上一次复杂的多,所以对迁移方案进行了从新的调研,最终选择了开源的kettle来进行。
找了一些资料,简单的描述一下吧:Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。作为Pentaho的一个重要组成部分,现在在国内项目应用上逐渐增多。
ETL即数据抽取(Extract)、转换(Transform)、装载(Load)的过程.这里就不做描述了。
我们来说说kettle吧,
环境:window7 64位、oracle、kettle(pdi-ce-5.1.0.0-752)、jdk
Kettle工具可以到官网去下载:http://community.pentaho.com/projects/data-integration/
下载后进行解压缩(绿色无需安装),解压缩后的目录中找到Spoon.bat文件(window下适用),这是启动程序的文件。右击编辑Spoon.bat文件来看看启动参数,找到下面这一行默认情况下:
if"%PENTAHO_DI_JAVA_OPTIONS%"=="" setPENTAHO_DI_JAVA_OPTIONS="-Xmx1024m" "-XX:MaxPermSize=512m" , JVM的内存设置,可修改这两个数值来达到最佳的内存分配的最佳效果,根据个人的机器配置来定吧。
运行spoon.bat后会出现一个图形页面,是不是有种眼前一亮的感觉。我们来见识一下吧。
Spoon--转换过程设计器
GUI工作,用来设计数据转换过程,创建的转换可以由Pan来执行,也可以被Chef所包含,作为作业中的一个作业项。
一、Kettle UI介绍:
1. 作业:在一个作业下包含多个转换,作业创建后所产生的文件扩展名为. Kjb
下图为作业的案例:
2. 转换:一个转换可以属于多个作业,转换创建后所产生的文件扩展名为. Ktr
下图为转换的案例: