资源库的选择
在成功打开你的 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 包进去,所以一定要做好规划。
以上就是关于资源库的选择了,如果还有坑点,日后还会做补充。