秉承借助分析Kettle的机会,巩固JavaSE基础,学习优秀源代码程序。
1. Kettle工具 简介
(1)Kettle 是一款国外开源ETL工具,有两种脚本文件: transformation 和 job。
(2)transformation 完成针对数据的基础转换。
(3)job 完成对整个工作流的控制。
注释:ETL 是 数据抽取(Extract),转换(Transform),装载(Load) 的过程。
2. Kettle工具里的相关概念
(1) Job : 一个作业,由不同逻辑功能的 entry 组件 构成。
注释: 数据从一个 entry组件 传递到另一个 entry组件, 并在 entry组件 中进行相应的处理。
(2)Transformation : 完成针对数据的基础转换,即一个数据转换过程。
(3)Entry : 实体,即 job型组件。用来完成特定功能应用,是job的组成单元,执行单元。
(4)Step : 步骤,是Transformation的功能单元,用来完成整个转换过程的一个特定步骤。
(5)Hop : 工作流或转换过程的流向只是,从一个组件指向另一个组件,
在kettle 源工程中有三种hop: 无条件流向,判断为真时流向,判断为假时流向。
3. 体系结构
备注:这个Kettle 平台是学习核心,上面定义的插件反而无所谓了。可以自己开发自定义插件。
笔注: Kettle平台可以分为四大核心块,可以看出数据集成引擎是其中比较重要的。
(1)元数据管理引擎
1) 元数据管理引擎管理 ktr,kjb 或者元数据库。
2) 插件通过该引擎获取基本信息,主要包括TransMeta,JobMeta和StepMeta 三个类
3)TransMeta 类:定义了一个转换(对应一个.ktr文件),提供了保存和加载该文件的方法
4)JobMeta 类:定义了一个工作(对应一个.kjb文件),提供保存和加载方法
5)StepMeta类:保存的是Step的一些公共信息的类,每个类的具体的元数据将保存在显示了StepMetaInterface的类里面。
(2)数据集成引擎
数据集成引擎包括Step引擎,Job引擎和数据库访问引擎三大部分,主要负责调用插件,并返回相应信息。
(3)UI
UI显示Spoon这个核心组件的界面,通过xul实现菜单栏,工具栏的定制化,显示插件界面接口元素,其中的TransGraph类和JobGraph类是用于显示转换和Job的类
* JobGraph类
(4)插件管理模块
1)Kettle 是众多扩展点(可供插入的地方)和扩展(可以插入的东西)共同组成的集合体。
2)扩展点类似于电源接线板,扩展类似于电线插头
3)Kettle的各种功能点(系统集成或者扩展定义)本质上都是以插件形式存在,其管理方式和运行机制是一致的。
4)插件管理引擎主要负责插件的注册。
5)Kettle的扩展点包括step 插件,job entry插件,Database插件,Partioner插件,debugging插件。
笔注:看到这里还是有些懵逼的,仿佛懂一些,但细想其实还是停留在迷雾里。