信息是现代企业的重要资源,是企业运用科学管理、决策分析的基础。目前,大多数企业花费大量的资金和时间来构建联机事务处理OLTP的业务系统和办公自动化系统,用来记录事务处理的各种相关数据。据统计,数据量每2~3年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占在总数据量的2%~4%左右。因此,企业仍然没有最大化地利用已存在的数据资源,以至于浪费了更多的时间和资金,也失去制定关键商业决策的最佳契机。于是,企业如何通过各种技术手段,并把数据转换为信息、知识,已经成了提高其核心竞争力的主要瓶颈。而ETL(Extract-Transform-Load,数据的抽取、交互转换、加载)则是主要的一个技术手段。
图1 ETL全过程
ETL负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。
大数据时代,各种ETL工具涌现,但现在主流ETL产品主要包括:IBM公司的Datastage、Informatica公司的Powercenter、 免费ETL工具Kettle等等。
其中,Datastage和Powercenter占据了大部分市场,且两者总体水平几乎不相上下,都有大批的拥护者。为了更好地了解这两款软件,本文从对元数据的支持、参数控制、数据质量、定制开发和修改维护等方面对二者进行了细致的对比。Kettle由于免费这一显著优势,受到了多数企业的青睐,但它也存在一系列缺点,本文单独对Kettle的优缺点进行了解读。
技术首选——Datastage
Datastage是一套专门对多种操作数据源的数据抽取、转换和维护过程进行简化和自动化,并将其输入数据集市或数据仓库目标数据库的集成工具,可以从多个不同的业务系统中,从多个平台的数据源中抽取数据,完成转换和清洗,装载到各种系统里面。其中每步都可以在图形化工具里完成,同样可以灵活地被外部系统调度,提供专门的设计工具来设计转换规则和清洗规则等,实现了增量抽取、任务调度等多种复杂而实用的功能。其中简单的数据转换可以通过在界面上拖拉操作和调用一些DataStage预定义转换函数来实现,复杂转换可以通过编写脚本或结合其他语言的扩展来实现,并且DataStage提供调试环境,可以极大提高开发和调试抽取、转换程序的效率。
图2 Datastage操作过程
对元数据的支持:Datastage是自己管理Metadata,不依赖任何数据库。
参数控制:Datastage可以对每个job设定参数,并且可以job内部引用这个参数名。
数据质量: Datastage有配套用的ProfileStage和QualityStage保证数据质量。
定制开发:提供抽取、转换插件的定制,Datastage内嵌一种类BASIC语言,可以写一段批处理程序来增加灵活性。
修改维护:提供图形化界面。这样的好处是直观、傻瓜式的;不好的地方就是改动还是比较费事(特别是批量化的修改)。
土豪必备——Powercenter
Informatica PowerCenter用于访问和集成几乎任何业务系统、任何格式的数据,它可以按任意速度在企业内交付数据,具有高性能、高可扩展性、高可用性的特点。它提供了一个可视化的、拥有丰富转换库的设计工具,这个转换库使数据转换变成一个简单的“拖拽”过程,用户不需在组件时编写脚本语言。可以通过简单的操作,完成需求。使用PowerCenter,转换组件能够被合并到mapping对象中,独立于他们的数据源和目标,有近20种数据转换组件和近百个函数可以调用,同时可以调用外部的过程和程序,实现复杂的转化逻辑。
当然,这些优势注定PowerCenter的产品费用和维护服务费也是高昂的。
图3 图形化界面
对元数据的支持:元数据相对开放,存放在关系数据中,可以很容易被访问。
参数控制:参数放在一个参数文件中,理论上的确可以灵活控制参数,但这个灵活性需要用户自己更新文件中的参数值(例如日期更新)。另外,Powercenter不能在mapping或session中引用参数名。
数据质量:专门有一个产品 Informatica Data Quality 来保证数据质量。
定制开发:没有内嵌类BASIC语言,参数值需人为更新,且不能引用参数名。
修改维护:与Datastage相同,Powercenter也提供图形化界面。这样的好处是直观、傻瓜式的;不好的地方就是改动还是比较费事。
综上所述,从费用和技术完备性的角度考虑,Datastage显然更胜一筹。
企业最爱——Kettle
与前两种商业软件不同,Kettle是一款开源软件,也是大部分企业运用的ETL工具,因为它的免费特性,大大降低了企业的运营成本。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
作为一款国外开源的ETL工具,Kettle是纯java编写,可以在Window、Linus、Unix上运行,绿色无需安装,数据抽取高效稳定,提供丰富的sdk,并开放源代码,便于二次开发包装。在具体使用过程中,Kettle的数据转换过程相对比较灵活,可以是手工编写的SQL语句、Java代码、正则表达式等各种形式,能够快速、有效地完成数据转换。
但是,由于Kettle是基于Java开发的ETL工具,所以在使用过程中需要借助JVM,在数据抽取速度以及大数据处理方面的能力与一些商业软件相比较弱;此外,Kettle在异构数据库的处理能力比同构数据库的处理能力要弱很多,特别是跨服务器之间就更弱了。
本文只针对众多ETL产品中的三种做了简单介绍,每一款软件都具备独特的优势和劣势,用户在选择时应该根据自身的需要谨慎选择,而不是一味追求好评率高的或是费用低的。
作者简介
陈雅妮
中国软件网 行业分析师
云计算和大数据领域的研究咨询项目
微信:dq5642186470
邮箱:cyn@soft6.com
点击【阅读原文】即可报名