Data4Strategy

——合抱之木,生于毫末;九层之台,起于累土

【原创】BI解决方案选型之ETL数据整合工具对比

一、背景

在企业BI平台建设过程中,数据整合始终是一切的基础,简单BI项目可以通过存储过程来实现,而复杂、全面、多方异构数据来源等就大大增加了复杂性,存储过程的可管理性、可维护性、容错性等就无法很好的跟上企业的BI的发展脚步和需要。

因此,一个完善的、健壮的、可视化的、易于开发和管理的ETL解决方案,就非常重要,而这其中,ETL工具的地位不言而喻,更是重中之重。选择一个优秀的ETL工具,不仅可以加快异构数据整合的能力和效率,更能降低开发成本、人员手工维护等成本,好处多多。

现今的ETL工具很多,大企业的有IBM、Oracle的,中小企业的有SSIS、kettle、talend。有开源的,也有收费的,那我们改如何选择呢?

二、对比方面

本人做过ETL开发也有小几年,对于一部分的ETL工具也有很多的接触,也看过其它企业的大型ETL解决方案,今天,就从如下几个我所经历过以及结合一些客户的选择方向来对比下不同ETL工具之间的差异,给予一部分即将选择ETL工具的朋友一些辅助建议吧。

对比的ETL工具,选择这4款主要是我自己接触过,或是有客户采购过,相对比较了解。

  1. talend
  2. kettle
  3. SSIS
  4. informatica

对比的方面主要有如下几方面,每个方面总分都是10分

2.1、成本:软件成本+开发成本+维护成本。

这个是我所知道90%企业都第一考虑的,大家都知道,有多少钱办多少事儿。

  • talend:8分
    1. 软件成本:talend有开源版本,免费,但是实际我用下来,以及一部分客户的实际情况,还是建议买个企业版。因为开源版没有配备完善的自动化调度系统,这个如果开发好之后要定期运行起来,还需要借助其它的调度工具或者自己开发一套调度,估计这个开发也够呛。
    2. 开发成本:如果开源版,前期可能会省很多培训、咨询、售前等费用,但是后期的维护团队、自定义开发的调度平台估计也不会比买企业版花的少。
    3. 维护成本:talend是按照用户数收费的,所以如果开发用户很多的情况下,估计就不划算。
  • kettle:7分
    1. 软件成本、开发成本:和talend一样的,也是分开源和不开源,开源的依然是要自行调度管理。
    2. 维护成本:kettle国内的专业公司好像有点少,一般用的都是做做简单ETL,或者封装一套自己的,所以前期自我探索的成本也比较高。
  • SSIS:8分
    1. 软件成本:这是微软的,因为你只要采购了SQL SERVER,这个工具就是免费给你用的,微软家的产品都是简单、快速入门的,所以使用起来的难度不大。
    2. 开发成本:微软的MSDN是很强大的在线文档,看这个已经足够入门了,咨询几乎不用。
    3. 维护成本:微软系的出了名的好用、上手快。如果你已经采购了SQL SERVER而且还是windows体系的,那我是推荐这个的。
  • informatica:5分
    1. 软件成本:企业级的产品,世界知名,当然软件采购成本也很贵,比上面的贵好多倍。
    2. 开发成本:拥有良好的GUI界面,开发也是脱拉拽,相对还是比较块的。
    3. 维护成本:老牌厂商,软件稳定。

2.2、易用性

易用性可以降低使用人员专业技术水平,降低人员成本。

  • talend:9分
    1. 给予eclipse的GUI界面操作,而且结合了SVN/GIT的版本管理,开发快速、代码管理及时。但是GUI有时候不太稳定。
    2. 拖拉拽的设计风格。
    3. 开发的job直接可以build成jar包,然后部署,或者直接可以在tac后台服务进行部署(企业版才有)。
  • kettle:7分
    1. GUI的界面操作,可以和自己的知识库整合,将开发内容保存到后台元数据库中。
    2. 拖拉拽的设计风格。
  • SSIS:9分
    1. VS的GUI界面操作。
    2. 拖拉拽的设计风格。
    3. 给予GUI的job运行管理、调度平台。
  • informatica:8分
    1. GUI的界面操作。
    2. 拖拉拽的设计风格。

2.3、架构

架构的优劣,也决定的这个产品是否能有足够的能力支撑任何需求变更的挑战。

  • talend:9分
    1. 基于Java体系的,每个ETL job设计完成之后,最终都是编译成了一整个的jar包。
    2. 只要你有JVM环境你就可以运行talend job。
    3. 接收自定义的java代码,可以使得一部分组件无法完成的功能,通过代码来实现。
  • kettle:8分
    1. 基于Java体系的。
    2. 可以使用 job 作业方式或操作系统调度,来执行一个转换文件或作业文件。
    3. 可以通过集群的方式在多台机器上部署
  • SSIS:7分
    1. 基于XML的文件保存格式,基于Windows体系。
    2. 需要.NET FRAMEWORK的支持。
    3. 可以自定义开发.NET程序处理。
  • informatica:8分
    1. 基于他本身的server调度运行。

2.4、 数据源丰富性

ETL主要就是负责数据整合,数据源的丰富性越好,适应能力就越强。

  • talend:9分
    1. 支持各种数据库数据源、web services、文件、云产品等,非常丰富。
    2. 云计算、大数据的支持也是非常迅速的。
  • kettle:9分
    1. 支持各种数据库数据源、web services、文件、云产品等,非常丰富。
    2. 也可以通过自己开发插件来拓展。
    3. 有很多的第三方插件支持。
  • SSIS:7分
    1. 支持各种数据库数据源、web services、文件等
    2. 云产品的支持当前只是支持他自家的微软云。
    3. 有很多的第三方插件支持。
  • informatica:6
    1. 支持各种数据库数据源
    2. 分为不同的版本,标准版,实时版,高级版,云计算版。同时,它还提供了多个可选的组件

2.5、 ETL组件丰富性

ETL组件的完善,可以减少硬编码,提升开发效率和交付质量。

  • talend:9分
    1. talend组件非常多,他将很多的功能都拆分成了不同的组件,大概是3000多个,这样子的组件细化,可以给出不同的组合,满足很多不同的任务需要。
    2. 尤其是对大数据、云计算组件的支持更是业内比较快、领先的。
  • kettle:8分
    1. 组件也是十分丰富。
    2. 自己可以拓展开发第三方组件。
    3. 对于云计算的支持也是比较好的。
  • SSIS:7分
    1. 组件相对比较丰富,而且结合了数据库维护的一些功能,使得不仅仅局限于ETL这单块的内容。
    2. 可以自定义开发组件。
    3. 对于云计算、大数据等支持不是很快。
  • informatica:6分
    1. 组件相对也比较丰富。
    2. 对于云计算也有支持,但是在不同的产品模块,无形中增加了软件成本。

2.6、 性能

性能是决定着数据刷新的频率,对于很多实时性要求较高的业务,这是重点。

  • talend:6分
    1. talend因为要先编译、后运行,因此第一次的运行来看,性能相对比较慢。
    2. talend是基于jvm的,所以很多方面需要调优。
  • kettle:7分
    1. kettle本身会有一定的优化在其中,所以整体运行效率会比talend快一些。
    2. 很多参数也是需要实际情况调优的。
  • SSIS:8分
    1. 如果针对于其本身的MS系产品,效率是杠杠的,微软的测试1TB只需要2小时。
    2. 但是针对其它家的数据库,也是需要优化的,但是综合来看,还是比较块的。
  • informatica:8分
    1. 针对于本身的数据源,其内部就做了很多的调优,因此就会快很多。

2.7、 部署

部署主要是考虑是否能支持横向拓展,以便更快应对数据量的增长。

  • talend:8分
    1. 开发支持多人合作开发,通过SVN/GIT进行协作。
    2. 可以通过部署多个集群job server来负载均衡的运行job。
  • kettle:8分
    1. 支持集群式的部署方式。
  • SSIS:5分
    1. 暂时没有集群式的部署方式。
    2. 但是可以通过job之间的协调调度来实现,技术成本比较高。
  • informatica:6分
    1. 需要部署运行在其server上。

2.8、 监控

完善的监控体系,可以即使的发现ETL内部问题,提升运行稳定性,减少数据整合的错误。

  • talend:8分
    1. 拥有良好的后台运行监控和log日志记录。
  • kettle:8分
    1. 拥有良好的后台运行监控和log日志记录。
  • SSIS:9分
    1. 拥有良好的后台运行监控和log日志记录。
    2. 可以收集不同的运行KPI,分析运行的效率问题。
  • informatica:8分
    1. 拥有良好的后台运行监控和log日志记录。

2.9、 数据质量管理

ETL中包含数据质量管理应该是未来的趋势,而不是简单将数据从A搬到B。

  • talend:8分
    1. 有数据质量管理的支持。
    2. 也可以通过自己代码实现。
  • kettle:8分
    1. 有数据质量管理的支持。
    2. 也可以通过自己代码实现。
  • SSIS:9分
    1. 有自己的数据质量检测组件。
    2. 也可以通过数据质量服务这个软件来实现(免费)但是整合起来的技术难度还是有一些。
  • informatica:7分
    1. 专门有一个产品 Informatica Data Quality 来保证数据质量
    2. 但是这个软件成本有点高。

2.10、 技术支持and社区

主要考虑到未来的疑难问题解决。

  • talend:7分
    1. 在国内的社区和技术支持相对比较薄弱。
    2. 但是好在技术支持比较稳定,可以申请原厂的case,有人回复。(不买产品咨询,应该要收费的)
  • kettle:8分
    1. 国内的社区还不错,很多开源的小企业的人都是在使用的,也有很多的社群活跃。
  • SSIS:9分
    1. 微软的支持无处不在。
    2. MSDN、官方博客都几乎可以找到人,比较方便。
    3. 而且使用人员也很多。
  • informatica:8分
    1. 专业的人员倒是挺多,但是咨询应该不是免费的。

三、总结

最总我们来看得分

产品/考虑方面

成本:软件成本+开发成本+维护成本(10分)

易用性(10分)

架构(10分)

数据源丰富性(10分)

ETL组件丰富性(10分)

性能(10分)

部署(10分)

监控(10分)

数据质量管理(10分)

技术支持&社区(10分)

总分

建议

talend

8

9

9

9

9

6

8

8

8

7

83

1、如果你是java体系的爱好者。你希望跨平台。

2、如果你未来希望能更好接入大数据、云计算。

3、你更喜欢灵活控制每一个ETL组件。

4、对于job调度的要求不是很高。

kettle

7

7

8

9

8

7

8

8

8

8

78

1、如果你是java体系的爱好者。你希望跨平台。

2、如果你未来希望能更好接入大数据、云计算。

3、你们未来是自己打算开发一套调度系统的。

SSIS

8

9

7

7

7

8

5

9

9

9

78

1、你是微软系的服务器、产品为主。

2、你渴望入门快、成果见效快。

3、你希望易于维护、开发快捷,管理简单。

informatica

5

8

8

6

6

8

6

8

7

8

70

1、你有钱。

2、你有丰富的技术人才。

3、你有大量的维护团队。

如果您觉得此文章对您有帮助,请点击右下方【推荐】让更多人看到,thanks!

posted @ 2019-01-03 14:18  John.Xiong  阅读(2294)  评论(0编辑  收藏  举报