ETL和ELT是两种数据集成方法,它们主要的任务就是将数据从一个地方转移到另一个地方。两者最大的区别是:ETL在转移之前会对数据进行转换;而ELT是在转移之后再进行数据转换。
ETL是一种存在已久的技术,而ELT则是伴随云数据库兴起的一种较为新的技术。
什么是ETL
ETL是 extract、 transform 和 load三个单词的缩写,它代表一种数据集成过程,属于方法学;它将来自多个数据源的数据组合成一个单一的、一致的数据存储,并将其加载到数据仓库或其他目标系统中。
ETL为数据分析和机器学习提供了基础。通过一系列业务规则,ETL以满足特定业务需求的方式清理和组织数据,比如月度报告,另外它还可以处理更高级的分析,这可以改善后续流程或用户体验。ETL的工作流程一般包含以下三个步骤
以OLAP系统为例,在线分析系统一般使用的都是关系型数据库,需要结构化的数据,此时就需要ETL处理程序来对源头数据进行清洗,对不合格的数据进行转换,然后再将数据导入OLAP系统中。
什么是ELT
ELT是直接将原始数据导入目标数据库中,在这个过程中并不需要经过转换。
对于ELT来说,数据清洗、加工以及转换都发生在目标数据库内部。ELT适用于使用了云数据仓库的体系,例如,常见的云端数据仓库:
这些仓库都内置了各种数据处理程序,方便对导入的原始数据进行处理转化。
ETL vs ELT
ETL和ELT之间最明显的区别是操作顺序的不同。ELT从源位置复制或导出数据,但不是将其加载到暂存区域进行转换,而是将原始数据直接加载到目标数据库中,由目标数据库根据需要进行转换:
- ETL在一个独立的服务器上对原始数据进行转换;而ELT在目标数据仓库内部进行数据转换
- ETL不会把原始数据传输到目标数据库;而ELT中,目标数据库直接接受原始数据
ELT保留原始数据集,而ETL则相反;对于非结构化数据的处理,ELT更有优势,因为它提供了很多在这方面的工具。
在安全和隐私方面,ETL则相对有一定的优势,因为它在将数据传输到目标数据前可以对数据进行一定的处理,例如加密,脱敏等;而ELT传输的是原始数据,有一定的安全风险。
项目 | ETL | ELT |
---|
定义 | 从上游系统提取数据,在另一个独立的系统上对数据进行转换,最后将转换后的数据导入下游系统 | 从上游系统提取数据,直接将数据导入下游系统,在下游系统内部对数据进行转换 | 速度 | 较为耗时 | 更快,数据导入和转换可以并行进行 | 维护 | 独立的转换系统增加了维护成本 | 系统数量更少,维护成本降低 | 隐私 | 较强 | 弱 | 输出 | 结构化的数据 | 结构化、半结构化、非结构数据 | 数据量 | 适合需要经过复杂转换的小数据集 | 适合对时效性要求比较强的大数据集 |
相关框架-kestra介绍
- Github地址:https://github.com/kestra-io/kestra
- Demo演示:https://demo.kestra.io/
kestra是一个任务调度平台,同时具有ETL和ELT的特性,它提供丰富的插件以及自定义插件等功能,可以适配各类复杂的场景。
参考
- https://www.ibm.com/cloud/learn/etl
- https://rivery.io/blog/etl-vs-elt/
|