`
xyzroundo
  • 浏览: 498176 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类
最新评论

开源ETL软件在智能化集成系统中的应用

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

相关推荐

Global site tag (gtag.js) - Google Analytics