资源库的选择
在成功打开你的Spoon客户端编辑工具后,首先你要确立一个地方用于保存你的工程文件,Kettle提供了三种资源库类型:数据库类型资源库(Database Repository)、文件类型资源库(File Repository)、Pentaho官方资源库。
- Database Repository:数据库类型资源库如同其名一样,将你的所有工程文件包括配置都保存在数据库中。
- File Repository:文件类型资源库,将你的工程文件以XML的形式保存在本地(配置文件应该是包含在每个任务文件中的)
- Pentaho Repository:官方推出的一款资源库,功能强大(看介绍的),应该是针对企业版(付费的,pass)
先说说这些这三种的区别:
首先,数据库类型资源库和文件形式资源库都没有版本管理这个概念,或者说没有自动的版本管理(目前我也找到什么比较好点的管理方式,如果各位观众老爷们有的话可以分享一下下呗),先说数据库类型,数据库做版本管理本身就是一件困难的事,虽然现在有数据库版本管理的框架,但是会占资源呀(客户方肯定不愿意XD),所以目前唯一能做的就是把数据库导出来SQL文件,上传git;然后是文件资源库,因为是XML文件形式,相对于数据库,上传git做版本管理会更容易一些;Pentaho官方推出的资源库介绍是带版本管理的,因为收费,所以我也没研究过XD。关于版本这块,我用的是数据库资源库,在项目上线时候,发版时常会遇到版本的事故,因此吃了不少亏,希望大家慎重考虑下版本管理。
其次,关于多人协同开发,数据库类型资源库是不建议多人开发的,毕竟有锁的机制有一定的风险。文件资源库我百度过有大神做出过版本管理样例的,并且支持多人开发,但有点复杂被我放弃了,有兴趣的可以百度找一找。Pentaho官方资源库不用我多说了,支持版本管理,支持多人在线开发。
既然文件资源库能做版本管理能做多人开发为什么不选文件资源库呢,虽然文件资源库是能做出这些效果,但它是保存任务工程文件在本地的,方便的同时但有很多的安全隐患,相比于数据库形式的资源库,首先你登录数据库就要配置一次密码,其次Kettle数据库资源库登录还设置了单独的一层密码(默认登录账户、密码都是admin,可在数据库中修改),这样在和应用程序结合的时候安全上有了很大的保障,Pentaho不用说了,要什么有什么。
经过考虑之后我是选择了数据库类型的资源库,Pentaho付费而且好像托管在Pentaho的服务器上(又要占一台服务器资源),客户、项目经理表示双方都不乐意(哈哈)。关于资源库的选择就说到这,直接以建立数据库类型资源库为例上图吧!
创建数据库类型资源库
打开Spoon客户端界面,点击右上角的Connect按钮,这里有个坑点,有时候你的Spoon打开,右上角的Connect按钮会消失...我百度了很多办法都没能解决,最后只能关掉重启几次就好了,如果下次还这样就一直重启...
点击Connect按钮后,你会看到如下界面
选择Repository Manager选项
刚开始肯定什么都没有的啦,点击Add按钮,添加一个资源库
这里就是Pentaho在推销自己的独创资源库啦,不想理会,点击Other Repositories进入下一步
选择Database Repository,点击Get Started
首先给你的资源库取个名字,然后点击第二项,给你的数据库类型资源库选择一个数据库链接
选择New一个
这里就根据你的环境里配置一下就行啦,这里题外话一下,最好是给Kettle单独准备一个库,不要和其他应用混在一个库(这很重要)。配置完后,点一下你的配置好的链接,选择back返回到刚刚的资源库编辑页面
点击Finish就完成了一个数据库类型的资源库创建啦!
数据库类型资源库注意点
当你完成一个数据库类型的资源库创建后,打开你配置的数据库,你会发现Kettle帮你创建了一系列的表(仅展示部分):
其中R_DATABASE、R_DATABASE_ATTRIBUTE、R_DATABASE_CONTYPE、R_DATABASE_TYPE四张表示关于你数据库链接的配置,在你配置好你的数据库链接好,千万不要乱动这几张表,尤其是上了生产(过来人的痛)。
R_DATABASE:其中包含了你的每一个数据库链接的配置,数据库账户、密码等等,而你的所有任务工程文件都是和你这张表配置的链接的ID绑定的,所以不要轻易改变你的链接数据的位置,比如你的MySQL链接配置产生的ID是1,那么你所有用到这个链接的任务都会和1绑定,如果你迁移了一个环境,改变了这个MySQL链接的ID,但任务还是会识别ID为1的链接为MySQL的链接,当你同步的时候就会报错,大概是通过某某链接在某某库找不到你所对应的表等等。
R_DATABASE_ATTRIBUTE:数据库链接属性配置,这张表会记录你对每个定义的链接的属性,比如这个链接是否使用数据库连接池啊等等。
R_DATABASE_CONTYPE:数据库链接类型,例如JDBC、ODBC什么的,一般选择Native(JDBC)。
R_DATABASE_TYPE:数据库类型,记录了所有Kettle支持的数据库。
在数据库链接配置表里面,关于密码字段是Kettle自己加密过的密文保存在数据库中,如果有强要求的,比如账户也要保密什么的,可以试试所有参数变量化替代,这个之后说。
其次,关于第一次链接数据库的时候,Kettle可能会提示找不到合适的数据库链接的Jar包,这个需要根据你的数据库版本去查找相应的JDBC链接的Jar包(这个就自行百度一下然后去Maven网站上下载一下了),以MySQL为例,我查到所需要的链接Jar包为
打开Kettle的根目录,找到lib目录,将你下载的jar包放到该目录下,你用到几个数据库就要相应的放多少个对应的链接jar包进去,MySQL可能还需要你去下载对应版本的链接bin包(这个和上面的Jar有区别的)
下载好后,将其放到Data Service JDBC Driver目录下即可。
你需要抽取有几种类型数据库就要对应的放置几种对应版本的链接Jar包进去,所以一定要做好规划。
以上就是关于资源库的选择了,如果还有坑点,日后还会做补充。