主流ETL工具分析对比,看哪款更适合你

Yanyan 385 2023-11-07



ETL(Extract, Transform and Load) 是从不同的源系统中提取数据、进行数据转换和加载的过程。

ETL 是BI项目中重要的一个环节,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据标准,将数据加载到数据仓库中去,为后续的数据分析提供数据支撑。

具体来说,在商业智能BI项目中,当需要对来自于各个业务系统的数据进行筛选、关联、汇总,那就会直接在BI平台前端进行拖拉操作,进行数据匹配、过滤、计算等。

当数据量较少时,一般不会有什么问题,一旦数据量变大后,例如好几百万行、甚至几千万行,将这些处理过程的压力全部给到BI平台和业务系统时,数据分析平台的展现速度就会变得很慢,严重的话,还会影响原始业务系统和整个BI平台的正常使用,这时候ETL的作用就出来了。

所以ETL在数据分析中能够起到的作用是巨大的。那么ETL究竟是什么呢?

一、ETL是什么?

1、数据抽取

主要是针对各个业务系统及不同服务器的分散数据,充分理解数据定义后,确定需要的数据源,抽取部分或全部数据到目标系统,数据抽取分为全量抽取和增量抽取多种方式,实现方式不同,数据抽取效率也不一样。

2、数据转换

从上一步提取的原始数据,因为数据质量、维度等原因不能以原始形式使用,因此需要进行数据清洗、合并、拆分、加工、数据逻辑计算处理,通常会按照一定的业务逻辑规则进行计算,最后转换成符合业务模型、分析模型的规范性的数据。

简单来说,不管是大数据、小数据,都是将不规范的、不可分析的数据转换成规范的、可分析的数据。数据转换是ETL中花费时间最长的部分,一般情况下工作量是整个ETL的2/3,但却是 ETL 过程中,增加业务数据价值,具备实现洞察力BI的基础,因为保证了数据的质量与正确性。

3、数据加载

抽取转换之后,将数据加载到目标数据库。整个过程一般需要跨平台、跨系统、跨网络。在实际项目中,需要结合使用的数据库系统的类型(比如MySQL、Oracle、SqlServer、PostgreSQL、GreenPlum等),选择最合适的数据加载方式。

所以ETL在商业智能中能够起到的作用是巨大的,那么ETL的价值有哪些?

二、ETL有什么价值?

ETL的成功应用为企业的信息数据化带来了新的机会,ETL在企业中体现的主要价值在:

1、简化开发过程

ETL让用户通过图形化的拖、拉、拽方式进行配置,易懂、好上手。另外,在后期维护上,无需看大端代码,即可快速定位。

2、支持多样化数据源

不管是OA系统、CRM系统,还是MES系统,系统的底层都是各种数据库在进行支撑,ETL通过对接各类数据源,来处理各个业务系统的数据处理。

3、功能更为强大

数据处理组件非常丰富,通用强,组件容易复用,在数据处理过程中,无需通过复杂的代码或者存储过程,即可实现数据处理过程。

4、提供强大的管理功能

权限、日志管理等:在和各个业务系统对接过程中,其数据权限的重要性不言而喻,数据连接权限、任务开发权限、系统运维权限的存在,使得整个ETL过程更加安全;日志管理,使得任务运行更有保障。

三、ETL中的关键技术

ETL过程中的主要环节就是数据抽取、数据转换和加工、数据装载。为了实现这些功能,各个ETL工具一般会进行一些功能上的扩充,例如:工作流、调度引擎、规则引擎、脚本支持、统计信息等。

数据抽取

数据抽取是从数据源中抽取数据的过程。实际应用中,数据源较多采用的是关系数据库。从数据库中抽取数据一般有以下几种方式。

(1)全量抽取

全量抽取类似于数据迁移或数据复制,它将数据源中的表或视图的数据原封不动的从数据库中抽取出来,并转换成自己的ETL工具可以识别的格式。全量抽取比较简单。

(2)增量抽取

增量抽取只抽取自上次抽取以来数据库中要抽取的表中新增或修改的数据。在ETL使用过程中。增量抽取较全量抽取应用更广。如何捕获变化的数据是增量抽取的关键。对捕获方法一般有两点要求:准确性,能够将业务系统中的变化数据按一定的频率准确地捕获到;性能,不能对业务系统造成太大的压力,影响现有业务。

目前增量数据抽取中常用的捕获变化数据的方法有:

a.触发器:在要抽取的表上建立需要的触发器,一般要建立插入、修改、删除三个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个临时表,抽取线程从临时表中抽取数据,临时表中抽取过的数据被标记或删除。触发器方式的优点是数据抽取的性能较高,缺点是要求业务表建立触发器,对业务系统有一定的影响。

b.时间戳:它是一种基于快照比较的变化数据捕获方式,在源表上增加一个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳字段的值。当进行数据抽取时,通过比较系统时间与时间戳字段的值来决定抽取哪些数据。有的数据库的时间戳支持自动更新,即表的其它字段的数据发生改变时,自动更新时间戳字段的值。有的数据库不支持时间戳的自动更新,这就要求业务系统在更新业务数据时,手工更新时间戳字段。同触发器方式一样,时间戳方式的性能也比较好,数据抽取相对清楚简单,但对业务系统也有很大的倾入性(加入额外的时间戳字段),特别是对不支持时间戳的自动更新的数据库,还要求业务系统进行额外的更新时间戳操作。另外,无法捕获对时间戳以前数据的delete和update操作,在数据准确性上受到了一定的限制。

c.全表比对:典型的全表比对的方式是采用MD5校验码。ETL工具事先为要抽取的表建立一个结构类似的MD5临时表,该临时表记录源表主键以及根据所有字段的数据计算出来的MD5校验码。每次进行数据抽取时,对源表和MD5临时表进行MD5校验码的比对,从而决定源表中的数据是新增、修改还是删除,同时更新MD5校验码。MD5方式的优点是对源系统的倾入性较小(仅需要建立一个MD5临时表),但缺点也是显而易见的,与触发器和时间戳方式中的主动通知不同,MD5方式是被动的进行全表数据的比对,性能较差。当表中没有主键或唯一列且含有重复记录时,MD5方式的准确性较差。

d.日志对比:通过分析数据库自身的日志来判断变化的数据。Oracle的改变数据捕获(CDC,Changed Data Capture)技术是这方面的代表。CDC 特性是在Oracle9i数据库中引入的。CDC能够帮助你识别从上次抽取之后发生变化的数据。利用CDC,在对源表进行insert、update或 delete等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给目标系统。CDC体系结构基于发布者/订阅者模型。发布者捕捉变化数据并提供给订阅者。订阅者使用从发布者那里获得的变化数据。通常,CDC系统拥有一个发布者和多个订阅者。发布者首先需要识别捕获变化数据所需的源表。然后,它捕捉变化的数据并将其保存在特别创建的变化表中。它还使订阅者能够控制对变化数据的访问。订阅者需要清楚自己感兴趣的是哪些变化数据。一个订阅者可能不会对发布者发布的所有数据都感兴趣。订阅者需要创建一个订阅者视图来访问经发布者授权可以访问的变化数据。CDC分为同步模式和异步模式,同步模式实时的捕获变化数据并存储到变化表中,发布者与订阅都位于同一数据库中。异步模式则是基于Oracle的流复制技术。

ETL处理的数据源除了关系数据库外,还可能是文件,例如txt文件、excel文件、xml文件等。对文件数据的抽取一般是进行全量抽取,一次抽取前可保存文件的时间戳或计算文件的MD5校验码,下次抽取时进行比对,如果相同则可忽略本次抽取。

数据转换和加工

从数据源中抽取的数据不一定完全满足目的库的要求,例如数据格式的不一致、数据输入错误、数据不完整等等,因此有必要对抽取出的数据进行数据转换和加工。

数据的转换和加工可以在ETL引擎中进行,也可以在数据抽取过程中利用关系数据库的特性同时进行。

(1)ETL引擎中的数据转换和加工

ETL引擎中一般以组件化的方式实现数据转换。常用的数据转换组件有字段映射、数据过滤、数据清洗、数据替换、数据计算、数据验证、数据加解密、数据合并、数据拆分等。这些组件如同一条流水线上的一道道工序,它们是可插拔的,且可以任意组装,各组件之间通过数据总线共享数据。

有些ETL工具还提供了脚本支持,使得用户可以以一种编程的方式定制数据的转换和加工行为。

(2)在数据库中进行数据加工

关系数据库本身已经提供了强大的SQL、函数来支持数据的加工,如在SQL查询语句中添加where条件进行过滤,查询中重命名字段名与目的表进行映射,substr函数,case条件判断等等。下面是一个SQL查询的例子。

select ID as USERID, substr(TITLE, 1, 20) as TITLE, case when REMARK is null then ' ' else REMARK end as CONTENT from TB_REMARK where ID > 100;

相比在ETL引擎中进行数据转换和加工,直接在SQL语句中进行转换和加工更加简单清晰,性能更高。对于SQL语句无法处理的可以交由ETL引擎处理。

数据装载

将转换和加工后的数据装载到目的库中通常是ETL过程的最后步骤。装载数据的最佳方法取决于所执行操作的类型以及需要装入多少数据。当目的库是关系数据库时,一般来说有两种装载方式:

(1)直接SQL语句进行insert、update、delete操作。

(2)采用批量装载方法,如bcp、bulk、关系数据库特有的批量装载工具或api。

大多数情况下会使用第一种方法,因为它们进行了日志记录并且是可恢复的。但是,批量装载操作易于使用,并且在装入大量数据时效率较高。使用哪种数据装载方法取决于业务系统的需要。

四、ETL工具综合对比:

ODI有局限性,与 oracle 数据库耦合太深,做不到异构数据库之间(C/S架构);

Informatica是业界最专业ETL工具。但是对CPU和内存、硬盘的要求过高,需慎选(C/S架构);

Taskctl是国内最早ETL工具产品商。支持10万级作业规模调度,国人核心技术,一直紧追国际专业产品(C/S架构);

Datastage与informatica旗鼓相当。没有断点恢复能力;自身调度、监控客户端功能较薄弱(C/S架构);

Kettle是业界最有名的开源ETL工具。首先数据安全隐患;其次服务跟进问题。需要借助第三方调度工具控制作业执行时间、稳定性差,需要定期重启软件;缺乏元数据管理;后期维护管理成本不可预估......闭源是个地雷! 


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:swagger,一个全新的维护 API 文档的方式
下一篇:​打破障碍,实现协同发展是高速铁路工程项目接口管理的重中之重
相关文章

 发表评论

暂时没有评论,来抢沙发吧~