智能化集成系统将不同功能的建筑智能化系统,通过统一的信息平台实现集成,从而形成了具有信息汇集、资源共享及优化管理等综合功能的系统。经过十余年的发展,智能化集成系统已经具有了丰富的功能,并在各种类型的智能建筑中都得到了广泛应用。
智能化集成系统实现的基础及其最基本的功能是对各智能化子系统进行数据通信、信息采集和综合处理。智能化集成系统在对门禁系统、消费系统、考勤系统、停车场管理系统等常见子系统进行集成时,子系统的人员进出记录、刷卡记录、收费记录等都是必须进行采集的信息。这些信息一般都按照子系统自定义的数据格式、保存在子系统的数据库中,而集成系统对这些信息的采集方式也正是从子系统数据库中读取关心的数据、进行格式转换、然后存入集成系统的数据库中。因此,数据库读取、转换和保存技术已经成为智能化集成系统中必不可少的一项关键技术。
1. 智能化集成系统中常见的数据转换技术的比较分析
智能化集成系统对子系统数据库进行数据读取和转换时,主要有3种实现方案,分别是:
(1) 自行开发数据库读取和转换软件,数据读取和转换规则写死在程序代码里;
(2) 使用第三方开发包或自行开发可配置的数据转换软件,数据读取和转换规则写在配置文件当中; (3) 自行开发或使用第三方的可视化数据转换软件,数据读取和转换规则通过图形界面来配置。
显而易见,第三种是最优的方案,也是集成系统工程实施效率最高、对调试人员技术水平要求最低的方案。
实际上,第三种方案中提到的可视化数据转换软件就是我们常说的ETL(Extract-Transform-Load,即数据抽取、转换、装载)工具软件。ETL工具软件是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
除了自行开发ETL软件之外,市面上还有很多现成的ETL工具软件可供选择,既有商业软件,也有开源软件,我们经过多方对比分析后,最终选择了使用开源软件Kettle作为同方ezIBS智能化集成系统的ETL工具。[nextpage]
2. ezIBS智能化集成系统选择Kettle作为ETL工具的理由
(1) Kettle是一款由Pentaho公司开发的功能强大的开源 ETL工具软件。Kettle具有可视化的流程设计工具,良好的插件扩展功能,支持集群操作。可以说,Kettle是目前开源世界里功能最全的一款ETL工具。Kettle软件的名称很有意思,直译是水壶。按项目负责人Matt的说法:把各种数据放到一个壶里,然后呢,以一种你希望的格式流出。
(2) Kettle是一款开源产品,本身是免费的,成本主要是培训和咨询,所以成本会一直维持在一个较低水平;且由于价格上的优势,开源产品可以在很大程度上降低项目的风险。2008年是开源软件界风起云涌的一年,开源软件进入了越来越多软件开发厂商的视野。对于具有一定软件开发实力的厂商来说,选择开源软件作为自己产品的补充这种方式也越来越流行,因为他们不仅仅是软件的简单使用者,更重要的是有信心能够解决使用开源软件中遇到的各种问题、并对开源软件进行优化和扩展。
(3) Kettle与ezIBS智能化集成系统一样,都是使用JAVA平台开发,所以在平台移植性方面支持的非常好,无论是Windows还是LINUX/UNIX都可以方便的使用。
3. 在ezIBS智能化集成系统中整合Kettle软件
Kettle实际上是一个ETL软件包,它含有以下几个主要模块:
Spoon(铲子):用来设计数据转换(transformation)和工作(job)的图形化设计工具;
Pan(平底锅):用来执行Spoon设计的数据转换任务的命令行工具;
Chef(厨师):旧版本的数据转换设计工具,已被Spoon取代,新版的Kettle发行包已经不含有此模块;
Kitchen(厨房):用来执行Chef设计的数据转换任务的命令行工具,出于兼容性的考虑仍被保留;
Carte(菜单):可以远程执行数据转换任务的Web服务器。
从上面的模块列表可以看到,Kettle缺少一项非常重要的功能-时间调度,也就是可以用来定时执行Kettle的数据转换任务的软件模块。使用Pan工具只能在其命令行程序被执行的时候运行一次数据转换任务,而无法周期性的运行。这对于生产环境下的软件系统来说是无法满足要求的,因为我们必须定期的去检查子系统数据库是否产生了变化。
将Kettle软件集成到ezIBS智能化集成系统中、将它们作为一个整体来使用,对于ezIBS集成系统来说轻而易举。因为ezIBS集成系统本身就含有一个完善的任务时间排程功能引擎(见图2),可以用来定时执行由Spoon设计的数据转换任务,并能监控任务的执行状态和结果。
[nextpage]
4. 使用ezIBS及Kettle软件进行数据库子系统集成的实际案例
4.1 任务目标
将某门禁系统数据库中的持卡人信息抽取到ezIBS集成系统数据库中,并对两个数据库中的数据进行定时同步。
4.2 使用Spoon工具设计数据转换任务
(1)设计数据转换流程
使用Spoon软件中的表输入、字段选择、数据过滤、更新、表输出等控件设计将门禁数据库中的数据抽取到ezIBS数据库的任务执行流程。Spoon软件的设计界面示意图见图3。
(2)数据抽取(Extract)
在任务流程上的“表输入”控件中填写从门禁系统数据库查询数据的SQL语句。数据抽取主要是针对各个子系统及不同节点的分散数据,充分理解数据定义后,规划需要的数据源及数据定义,制定可操作的数据源,制定增量抽取的定义。
(3)数据传输
此步骤在流程图中表现为箭头,用来连接各步骤的控件,起到承上起下的作用。
(4)数据转换(Transform)
在“字段选择”控件中修改门禁数据库和ezIBS数据库中的字段对应关系,例如图3中的下面一行代表的意思是:持卡人的卡号在门禁数据库中的字段名称为KEY_NUMBER,而在ezIBS数据库中的字段名称为card_id,在数据转换时要将门禁系统的KEY_NUMBER数据转换为ezIBS系统的card_id数据。
(5)数据加载入库(Load)
使用“表输出”或“更新”控件将转换好的数据存入ezIBS数据库。数据加载主要是将经过转换和清洗的数据加载到数据仓库里面,即入库,操作者可以通过数据文件直接装载或直连数据库的方式来进行数据装载,充分地体现其高效性。[nextpage]
4.3 在ezIBS系统中设置数据转换任务的时间排程
(1)新建数据库任务策略
Kettle不支持调度,一般只能使用操作系统自带的调度功能。ezIBS提供了功能强大的日程管理调度,比起Windows自带的任务计划更多了优先级、星期等的选择,实现了与Kettle的无缝衔接。
ezIBS的时间排程功能十分简单易用,首先在任务管理界面上将Spoon输出的ktr和ktj文件上传(见图4),然后在日程管理界面上设置数据转换任务的执行时间、循环次数(例如:每隔一分钟执行一次数据转换任务进行数据同步)等参数即可(见图2)。
(2)监控数据库任务的执行状态和结果
ezIBS系统对所有任务策略的执行情况进行监控,以保证任务策略能够正确、稳定运行,并在发现错误或出现问题时通过电子邮件等方式通知管理员。
图5 在ezIBS系统中监控数据转换任务的运行状态
5. 结语
Kettle软件在智能化集成系统中的应用,使得各个集成模块可以实时、准确、高效的从子系统的数据库中取得需要的数据,并避免了自己开发数据转换接口的效率低下和开发周期长等缺点。由于Kettle是一个开源工具,其免费、广泛的技术支持也使开发成本降到最低。
通过将开源软件在ezIBS智能化集成系统中进行更广泛的应用,同时结合其本身开放性、安全性、易用性等特点,在品牌和规模优势的情况下,随着时间的推移和技术的持续发展,开源软件对ezIBS智能化集成系统的影响将继续扩展,并帮助其实现更多的功能。