薛鹏飞
(常州纺织服装职业技术学院 江苏 常州 213164)
智慧校园建设是当下每所高校都在大力推进的信息化工程,随着智慧校园由1.0向2.0的发展,逐渐从数字化时代演变到了智能化时代。在智慧校园1.0阶段,高校建设了多个业务系统,实现了多个业务系统之间的统一身份认证以及部分的数据集成,但是各业务系统之间真正的数据共享还没完全做到,即信息孤岛并没有完全打通,而要实现各系统之间的数据共享交换离不开一项技术,即ETL(Extract-Transform-Load)技术,它是用来描述将数据从源端经过抽取、转换、装入到目的端的过程。目前常用的ETL工具主要有Informatica PowerCenter、IBM Datastage、Oracle Warehouse Builder(OWB)、Oracle Data Integrator(ODI)、Microsoft SQL Server Integration Services及开源的Kettle等[1]。
Kettle是由美国人马特·卡斯特(Matt Casters)于2002—2003年研发的一款ETL工具,然后于2005年12月进行了开源,2006年初被一家开源BI公司Pentaho收购,随后Kettle改名为Pentaho Data Integration,简称PDI。2017年9月20日起,Pentaho被日立集团新成立的全资子公司Hitachi Vantara合并。到目前为止,Kettle依然是个开源软件,它的源代码地址为https://github.com/pentaho/pentaho-kettle/,目前国内具有ETL自主研发产品的公司多数在Kettle开源的基础上进行二次开发而来。
Kettle可管理来自多个不同数据库的数据,还可以管理来自NoSQL、文本文件、XML、JSON等数据[2],通过可视化图形界面设计器,像画流程图那样设计出数据流转的流程,然后通过脚本的方式发布到服务器上定时执行数据流转任务。它是一款绿色软件,解压后即可运行,由Java编写,可以运行在Windows、Linux、UNIX操作系统上,可以稳定高效地进行海量数据集成。
高校的信息化建设一直以来都缺乏顶层设计,重单一项目建设,轻统一规划,且应用系统多数由各职能部门自建,没有统一标准。近些年,随着信息化环境的发展以及国家对教育信息化的高度重视,多数高校成立了信息化专门部门来统筹信息化建设,并逐渐开始意识到数据治理在高校信息化建设中的重要意义,以及数据标准在数据治理中的重要性。
但是,要集成原有应用系统数据困难重重:(1)由于原有应用系统建设久远,联系不上供应商;(2)原有应用系统数据库不开放,或者要向供应商支付高昂对接费用;(3)拿到了应用系统数据库,但由于缺乏数据字典和元数据信息,导致无从下手,比如要从教务管理系统中获取课表信息,得先知道哪个表是课表,还得知道每个字段的含义,这些信息在职能部门当初建设应用系统时都会被忽略,这为数据集成造成了非常大的困难;(4)采用数据库定时任务集成,通常这类技术细节的文档都不全,由于甲乙双方当时初建人员岗位调整等历史原因,导致数据的集成规则成了技术黑箱;(5)采用了ETL工具进行集成,比如ODI工具,由于操作复杂,学习成本较高,以及技术细节文档不全跟上面第4点中一样,后期高校要自主修改数据对接内容非常困难。
高校要进行数据治理,就必须自主掌握数据对接集成技术,且要简单易上手,可视化操作,这样才能适应高校专业技术人员人手不足以及需求多变的常态。传统商业ETL工具虽然功能强大,但是一方面学习成本较高,另一方面费用也较高。开源的Kettle恰恰解决了这些问题,上手简单,零成本就可以完全实现高校数据中心数据对接集成,即便后期采购基于Kettle二次开发的ETL工具,也很容易上手。
高校数据中心在进行对接集成前必须明确对接需求,确定源端数据和目的端数据,拿到源端和目的端数据库连接信息,包括数据字典和元数据信息,如果源端和目的端应用系统供应商能积极配合将大大提高对接集成效率。这一步非常关键,这是将来智慧校园项目建设过程中,需要和职能部门、第三方供应商必须约定遵守的原则,否则数据对接集成将非常困难。
Kettle的官方下载网址为https://sourceforge.net/projects/pentaho/files/,Kettle由JAVA开发,所以运行只需要JDK运行环境即可,建议安装JDK1.8或以上版本,随后配置好操作系统环境变量,最后将下载的Kettle压缩包进行解压即完成了部署。
在Kettle的解压目录中有3个最重要的核心组件,它们以批处理文件形式运行,分别对应Windows中的bat文件和Linux中的sh文件,在对接集成中会经常使用到,它们分别为以下几种。
(1)Spoon.bat/spoon.sh。Spoon是一个用于设计ETL转换过程、创建作业调度规则、对数据库连接进行配置与资源库管理等的图形化用户界面程序。
(2)Pan.bat/pan.sh。Pan是一个独立运行的命令行程序,没有图形化界面,用于执行由Spoon设计的转换和作业,是一个后台执行程序。
(3)Kitchen.bat/kitchen.sh。Kitchen是一个独立运行的命令行程序,没有图形化界面,用于在后台批量自动化执行作业,实现作业自动调试。
Kettle的核心概念是将复杂的ETL过程用工作流的形式进行构建,而且整个过程都是图形化方式,通过拖拽操作即可完成。在用Spoon进行图形化方式设计工作流时,核心原理就是转换(Transformation)和作业(Job),可以简单理解为Kettle里的流程图。
转换是定义数据操作的容器,主要是对数据的各种复杂处理。转换可以包含一个或多个步骤(Step),步骤通过跳(Hop)来连接,即在流程图中带箭头的连接线。它允许数据从一个步骤向另一个步骤流动,即为数据流。数据流的单位为行,数据以数据行的形式沿着步骤流动,步骤可以对数据进行输入、处理和输出。
作业是对一个或多个转换、一个或多个作业进行调度的流程[3]。作业流程与转换流程相似,但是作业流程必须包含Start控件,除此之外作业还可以进行邮件收发、文件管理、条件判断、脚本执行等。
下面以高校门禁车行数据通过ETL推送数据到数据中心为例,介绍用Kettle实现转换和作业的过程。
第1步在Spoon编辑器中先设置DB连接,配置好对应数据库版本的驱动程序,再将门禁车行数据库和数据中心数据库进行连接配置以便之后引用;第2步新建转换,先配置门禁车行数据源,将核心对象中的输入控件“表输入”拖拽到工作台,引用刚刚配置好的门禁车行数据库信息,写好门禁车行数据库表的SQL查询语句,将需要推送的数据先查询出来作为数据源;第3步配置输出,将输出对象中的“插入/更新”控件拖拽到工作台,引用数据中心数据库信息,配置好目标表、查询关键字和更新字段等信息,即输出到数据中心数据库中;第4步将工作台中的门禁车行数据源和数据中心目的端用箭头进行连接;第5步保存并运行这个转换即完成了一次高校门禁车行数据通过ETL推送数据到数据中心的过程,此时数据中心已经有了门禁车行数据了;第6步创建作业,经过以上5步操作只是进行了一次数据同步,如何让同步按照我们设定的规则进行自动同步呢?作业就是解决这个问题的,分别将“Start”控件、刚刚创建的转换和“成功”控件拖拽到工作台,连接流程箭头配置好作业定时调度规则,保存运行即可。
在用ETL进行数据更新设计的时候,需要根据实际应用场景灵活设计以提高转换的效率,比如常用的数据更新应用场景有全量数据更新、增量数据更新、修改和插入数据更新、增删改数据更新等,这些数据更新的效率都各不相同,根据实际情况选择最合适的数据更新方案。作业的调度规则也需要根据实际情况来进行合理设计,实时性不高的场景可以把调度规则设在用户使用率不高的时间段,以免海量数据频繁调度影响两端数据库的IO性能。
Kettle作业实现自动调度有两种方式:一是直接在Spoon编辑器中实现,只要Spoon编辑器处于打开状态,运行中的作业就会持续自动调度,但是一旦关闭Spoon编辑器,作业就停止了,显然这种方式只适合实验环境;二是通过Kitchen来进行自动调度,通过批处理的方式来实现,在Windows中可通过任务计划程序或服务来实现,在Linux中可通过定时任务来实现,在生产环境中往往采用第2种方式来实现作业的自动调度。
Kettle作为一款开源ETL工具,确实在技术层面能够帮助高校进行最节约成本的数据对接集成工作,但是要解决智慧校园建设过程中各应用系统之间的信息孤岛问题,除了技术层面,还要有管理和规划层面的支持。只有建立数据标准、数据共享规范和数据安全保障机制,才能真正消除信息孤岛,充分发挥数据效能。