原文链接:https://blog.csdn.net/cormier_an/article/details/12349533?utm_source=blogxgwz1
ETL工具还是手工编码

(购买工具集还是自己写程序?)

在《智能企业》杂志的一篇精彩的文章(2003.5.31,Ralph Kimball编辑)中,Gary Nissen对这个问题总结概括后,回答是:“看情况”。我们展开来分析一下Gary的观点。
基于ETL工具的优势

 根据某个ETL工具厂商的说法:“一个有价值的工具目的不在于能够解决琐碎的问题,而是要将不可能的事情变得可能。”

 开发过程简单、快速、低成本。如果项目足够大或足够复杂,工具的成本会显得微不足道。
 了解业务知识但不精通编程的技术人员也能够有效使用ETL工具。

 很多ETL工具内部集成了元数据资料库,这样,源系统、目标数据库以及其他BI工具的元数据既可以同步到这个元数据资料库中。

 大多数ETL工具在每个处理流程会自动产生元数据,从而强制所有的开发人员必须遵循一致的元数据驱动的方法论。

 大多数ETL工具都有内置的调度器,帮助生成文档、简化创建过程以及变更管理。如果系统发生故障,ETL 工具会负责处理全部复杂的依赖关系以及差错控制。
 ETL 工具的元数据资料库能够自动的产生数据沿袭(便于反查)和数据依赖分析(便于前查)。

 ETL工具为大多数源和目标系统设有预置的连接器。在技术层面,ETL工具应当处理能够处理全部种类的数据类型转换。

 ETL工具通常提供内嵌的加密和压缩功能。.

 大多数ETL工具处理大数据集时具有较高性能。如果数据量非常巨大,或者在未来几年可能会非常巨大,那么应该考虑采用ETL工具。

 ETL工具可以跨服务器的复杂的负载均衡,避免服务器死锁。

 当底层框架变更时,会对后续流程和应用造成影响,大多数ETL工具可以自动的进行这种“变更-冲击”分析。

 在指定的处理模块中,ETL 工具可以使用编程语言进行扩展。比如,如果其自带的模块不能达到要求的功能和性能,就可以在ETL工具的数据流程中添加一个自定义的CRC(循环冗余校验)算法;或者,将一个自定义的周期算法作为数据质量检查步骤的一部分加入进去,以判断某个观测值是否合理,等等。

手工编码方式的优势
 在手工编码方式下可使用自动单元检测工具。比如,JUnit 库(www.junit.org)是一个著名的、良好支持Java编写单元测试程序的工具,对其他语言也有一些类似的包。你可以使用某一个脚本语言,比如TCL或者Python来设置测试数据,在ETL过程中运行,然后验证结果。采用这些自动化测试流程能够极大的提高QA人员的工作效率和最终提交版本的质量。

 面向对象的编程技术可以帮助你保持差错报告、有效性和元数据更新的转换一致性。

 如果建立了自己的元数据访问接口,手工编码方式可以更直接的管理元数据。

 对ETL系统的简要需求分析可以指导你快速使用基于文件的流程,而非数据库的存储过程。基于文件的处理流程要更加直接,编码更简单,测试更容易,也更便于理解。

 可以不必考虑用户许可证问题。

 可充分利用内部的编程人员。

 基于某个工具的开发使你只局限于某个工具厂商的工具及其特殊的脚本语言。手工编码方式的系统可使用通用的编程语言。(公平的讲,所有ETL工具在各自的模块中都与标准的编程语言隔离开。)

 手工编码方式可以提供无限的灵活性,几乎可以完成任何想做的事情,当然前提是你确实需要这样。很多情况下,一种独特的方法或一种特定的语言可以提供非常的优势。

这里我们还可以为采用ETL工具提出新的理由:ETL工具自动完成文档的能力更强,可维护性更高,尤其是IT 人员流失较严重的情况下。而反方的观点是,如果ETL开发小组有很强的软件开发能力,并且管理良好,文档和维护性不应当是一个大问题。

使用已证实的技术
建立数据仓库时许多初始成本是无法避免的。比如必须购买一些专用的服务器:至少一台数据库服务器,一台BI服务器,通常还有一台专用的ETL服务器。同时还需要数据库的许可证,BI工具的用户许可证。在开始一个新的项目时可能还需要购买一些咨询服务以及其他的一些成本。建立数据仓库的这些成本是必须要花费的。

但是,有一种成本通常被认为是可有可无,并经常作为成本消减的目标——这就是购买一个专门的ETL工具。不用ETL工具实现数据仓库是可能的,在此也没有假定用户必须使用或不使用ETL 工具。但是,从长远上看,购买ETL工具对于建立和维护数据仓库来讲是降低成本的。使用已经证明的ETL技术有一些特别的优势:

 一次定义,多次使用。通过共享并重用业务规则和结构化程序,保持数据仓库中数据的一致性。

 冲击分析。判断哪些表、列、过程会由于某些修改而受到影响。

 元数据资料库。轻松地创建、维护和发布数据沿袭,继承数据建模工具中的业务定义,在BI工具中展现元数据。

 增量聚合。动态更新聚合表,只将最新的和修改过的数据加入到聚合表中,而无需在每次数据加载时重建聚合表。

 管理批处理加载。减少Shell脚本,执行条件加载,加载统计,自动Email通知等等。

 轻松连接到多种复杂数据源,如SAP和主机系统等。

 并发执行多线程操作。

 供应商经验,包括针对维度模型的成功经验和数据仓库支持方面的记录跟踪。

与能够用到ETL工具的很多高级特性相比,购买一个ETL工具更重要的理由是可以帮助避免走太多的弯路。这些ETL工具的设计基于一个目的:准确执行用户想要完成的工作——加载数据仓库。大多数工具已经发展成为能够支持从不同的异构数据源抽取数据、完成复杂的数据转换、加载维度数据仓库的稳定、强大的ETL引擎, 在ETL配置中不要加入新的、未经测试的产品。像月度仪表盘这样的功能尽管很吸引最终用户,但若放在后台就太不计后果了。保守一些,等待ETL产品的成熟。与那些具有良好记录的厂商配合,确保在将来的5年中会不断的支持和完善这些产品。

作者:Cormier-an
来源:CSDN
原文:https://blog.csdn.net/cormier_an/article/details/12349533
版权声明:本文为博主原创文章,转载请附上博文链接!

【ETL】ETL----如何决定是否采用ETL工具相关推荐

  1. ETL学习总结(2)——ETL数据集成工具之kettle、sqoop、datax、streamSets 比较

    前言 对于数据集成类应用,通常会采用ETL工具辅助完成.ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract).交互转换(transfo ...

  2. etl spring_系统设计与架构笔记:ETL工具开发和设计的建议

    最近项目组里想做一个ETL数据抽取工具,这是一个研发项目,但是感觉公司并不是特别重视,不重视不是代表它不重要,而是可能不会对这个项目要求太高,能满足我们公司的小需求就行,想从这个项目里衍生出更多的东西 ...

  3. ETL讲解,到底什么是ETL

    前述: ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据. ETL是BI项目重要的一个环节. 通常情 ...

  4. PyTorch:采用sklearn 工具生成这样的合成数据集+利用PyTorch实现简单合成数据集上的线性回归进行数据分析

    PyTorch:采用sklearn 工具生成这样的合成数据集+利用PyTorch实现简单合成数据集上的线性回归进行数据分析 目录 输出结果 核心代码 输出结果 核心代码 #PyTorch:采用skle ...

  5. oracle青蛙工具,要对Oracle数据库进行远程管理,可以采用的工具是( )。

    要对Oracle数据库进行远程管理,可以采用的工具是( ). 更多相关问题 爱新觉罗·溥仪是清王朝最后一位帝王.他在位时年号(). PowerPoint中不应用设计模板,将无法设计幻灯片. 手工电弧及 ...

  6. linux dd nand,Flash基础入门之采用dd 工具做Nand Flash磨损均衡

    本文主要向大家介绍了Flash基础入门之采用dd 工具做Nand Flash磨损均衡,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助. 文章采用dd工具,将/dev/zero 作为 ...

  7. java etl 开源框架_开源的ETL工具

    这里记录一些开源的ETL工具: 1.Kettle Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,数据抽取高效稳定. Kettle 中文名称叫水 ...

  8. 《Kettle构建Hadoop ETL系统实践》大数据ETL开发工具选择Kettle的理由

    ETL一词是Extract.Transform.Load三个英文单词的首字母缩写,中文意为抽取.转换.装载.ETL是建立数据仓库最重要的处理过程,也是最能体现工作量的环节,一般会占到整个数据仓库项目工 ...

  9. c语言开发ETL,【ETL开发工作内容|工作职责|ETL开发做什么】-看准网

    工具应用 ETL工具的典型代表有:Informatica.Datastage.OWB.微软DTS.Beeload.Kettle.久其ETL-- 开源的工具有eclipse的etl插件:cloveret ...

最新文章

  1. Matlab错误:Y must be a vector or a character array
  2. 白话详细解读(四)-----FCN
  3. KEIL 默认 char 是无符号的
  4. 【SDOI2017】硬币游戏【KMP】【概率期望】【高斯消元】
  5. 在Log4j2中更好地执行非日志记录器调用
  6. c++对象回收string类型成员时coredump_本体技术视点 | 虚拟机中引用性动态语言对象模型思考...
  7. sql 存储过程返回值 变量名
  8. 201452202014520920145309信息安全系统设计基础实验报告(1)
  9. Unix安装BerkeleyDB
  10. 抖音无水印下载不求人
  11. 入侵检测系统原理和实现
  12. word2013设置封面,摘要,正文不同的页码格式
  13. 2020北航计算机夏令营机试题目讲解
  14. torch+cuda gpu并行计算
  15. deepsort : 牧游 网友提供的思路,用mgn替换reid 的特征检测部分
  16. 计算机不能上网 故障分析,电脑不能上网故障排查方法教程
  17. 酒桌上的潜规则,男人必学,女人必知
  18. 「巨杉学」开展大数据金融人才培养模式探索课题培训
  19. office365邮箱的服务器名称,MailStore使用技巧——同步office 365服务器的用户数据库...
  20. eloqua邮件服务器,ORACLE ELOQUA 营销企业云服务.PDF

热门文章

  1. MySQL中的二进制类型
  2. PHP做好友关系系统,php社交好友网站
  3. python中顺序查找法例子_Python查找算法(一)------ 顺序查找
  4. python开发板比较_再不学点Python,咱真老了--Adafruit Metro M0 Express开发板评测
  5. 帧布局 (FrameLayout)
  6. 异步任务下载apk文件并弹出对话框提示当前进度,文件下载结束后弹出安装界面
  7. 2021甘肃省高考成绩查询日期,2021年甘肃省高考分数公布时间
  8. html tr中可以有br吗,html table tr td br 什么意思 缩写
  9. 朴素贝叶斯 python 实现
  10. Leetcode 198.打家劫舍 (每日一题 20210622)