kettle数据库配置
kettle—数据库配置
数据库配置
其实我们在前面的学习中已经演示过数据库配置了,而且我们还是我们将数据库配置存储资源库中可以达到共享的目的,也就是我们在其他作业中配置过的数据库链接可以共享给当前资源库中其他作业。
无资源库的非共享的模式
例如下面我们在job1中配置了一个链接db1,然后我们在需要这个链接的组件中就可以使用,但是仅限于当前job
我们可以看到在job2中就无法使用
也就是说在没有独立的资源库的时候,这些配置属于单独的job
有资源库的共享模式
当我们的kettle 链接到资源库的时候,我们会发现我们的作业已经可以直接使用我们资源库中的数据库链接了
但是这两种模式都存在一个问题,那就是我们的job 中最后保存的数据库的连接信息是写死的,虽然我们在有资源库的时候看起来可以选择,但是当我们选择之后它就和我们的任务绑定了,即使之后我们更改了资源库的连接信息,作业中的连接信息依然不会变更的,这一点很好验证,我们可以将资源库中的作业保存,然后导出,重新打开就会发现只有一个连接,也就是说这个连接信息已经写死在作业中了
jndi 模式
jndi的全程为 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE容器中配置JNDI参数,定义一个数据源,也就是JDBC引用参数,给这个数据源设置一个名称;然后,在程序中,通过数据源名称引用数据源从而访问后台数据库。
简而言之就是JNDI给资源取了名字,每次需要用到资源时是需要根据名字来找对应的资源,从而避免了程序与数据库之间的紧耦合,使应用更加易于配置、易于部署。JNDI 在 J2EE 应用程序中的主要角色就是提供间接层,这样组件就可以发现所需要的资源,而不用了解这些间接性。
配置jndi
在kettle主目录的simple-jndi文件夹下面新增对应的数据库连接配置,可以看到已经有一个默认的配置文件了
我们可以在这个文件里新增,也可以重新创建一个文件,我们的配置如下
Bzhan/type=javax.sql.DataSource
Bzhan/driver=com.mysql.jdbc.Driver
Bzhan/url=jdbc:mysql://127.0.0.1:3306/bzhan?zeroDateTimeBehavior=convertToNull&characterEncoding=utf8
Bzhan/user=root
Bzhan/password=www123456
由于是改的配置文件,所以我们要重启kettle ,重启后我们配置数据库连接只需要输入JNDI 的名称即可
到这里我们的数据就配置好了,其实这个依然没有解决我们上面说的问题,就是数据库密码变更的问题,JNDI 只是一个解耦,就是我们不需要再知道数据库的账密是什么,相对来说安全一点,而且配置起来很简单。
变量的形式
其实这种都不叫配置数据库链接了,就是我们的任务在运行的时候,账密信息当作参数传递给任务,这样的话即使我们更新了账密,最新的账密信息也可以传递给任务