详解数据集成方法ETL、ELT和反转ETL

译文 精选
云计算
近年来,ETL(extract、transform、load,提取、转换、加载)一直都是数据集成的标准方法。随着云计算的兴起、以及集成式数据自助服务需求的增多,诸如ELT(提取、加载、转换)和反向ETL等新的方法论,正在蓬勃发展。

​译者 | 陈峻

审校 | 孙淑娟

为了协助您为数据管道项目选择合适的数据集成方法,我们将简要地探讨ETL和ELT各自的优缺点,以及如何使用这两种技术。同时,我们也会讨论反向ETL为何成为那些需要快速数据加载、最小化维护、以及高度自动化工作流的更好选择。

ETL和ELT的一般概念

目前,企业面临的一种常见挑战是:需要以多种格式,从多个来源捕获数据,然后将其转移到一到多个数据目标。由于大多数数据转移项目都需要收集多个数据源,因此它们需要拥有一个定义良好的数据管道(即,信息从源头到终点的路径或工作流程)。如果目标与数据源的存储格式不同,那么我们就必须在加载到最终目标之前,对数据进行细化或清理。目前,业界有许多工具、服务和流程,可以在数据管道中,起到一定的应用数据转换与协调的工作。

ETL的流程

ETL是一个数据集成的过程。它使得数据管道项目能够从各种源头顺利地提取数据、转换数据、并将数据结果加载到目标数据库中。无论是ETL还是ELT,数据的转换与集成过程,都会涉及如下三个阶段(如图1所示):

  1. 提取——使用数据库查询或变更数据捕获(change data capture,CDC)流程,从源系统(如:SAS、在线、本地)提取数据。提取后,数据会被转移到暂存区域,以待进一步处理。
  2. 转换——数据被清理、处理、转换、充实后,会被转换为目标数据管道、数据仓库、数据库或数据湖使用的格式。
  3. 加载——将原始数据和转换后的数据加载到目标系统中。此过程会涉及到写入分隔文件、在数据库中创建模式、以及用累积或聚合的数据去覆盖现有的数据。

图1:ETL的流程(源自Kai Waehner的《何时使用反向ETL以及何时使用反模式》)

ETL和ELT流程会以不同的顺序执行上述步骤。数据管道团队必须决定是在将数据加载到目标数据存储库之前、还是之后进行数据转换。

ELT的流程

ELT是一种用于整合来自整个组织的数据,以防止出现数据孤岛的方法。数据会经历数据源中被提取,加载到数据仓库中,然后按需进行转换的过程。虽然是要按照应用之需进行转换,但是在ELT流程中,数据应当在存储之前进行转换(如图2所示)。

  1. 提取——与ETL相同。
  2. 加载——与ETL不同,数据直接(即,无需进行清理、扩充、转换)被加载和交付到目标系统(通常需要考虑目标模式和数据类型的各种迁移)。
  3. 转换——在加载数据后,目标平台会根据业务报告的目的进行转换。一些公司会利用dbt等工具,来转换其目标数据。因此,在ELT管道中,我们应按需对目标数据执行转换。

图2:ELT的流程(源自Kai Waehner的《何时使用反向ETL以及何时使用反模式》)

ELT会对集成过程中涉及的步骤进行重新排序,使得转换发生在最后,而不是中间。ELT的流程可以通过切换阶段顺序,在不考虑结构或格式的情况下,将数据加载到可接受原始数据的数据湖中,并且允许进行即时的数据提取和加载。

促成采用ELT的另一个因素是:基于云的数据仓库被广泛地采用与实施。云数据仓库解决方案提供了计算和存储之间的完全分离,以及存储无限数据的能力。如今,大多数数据仓库都是被托管的。这就意味着企业既不需要购买或管理任何硬件或存储设备,也不需要安装软件或考虑扩展。这些都将由云服务提供商来管理与负责。据此,企业可以在较短的时间内,配置出云托管的数据仓库。

ETL与ELT:属性、功能和用例

就ETL与ELT的用例而言,并不存在“一边倒”的现象。我们通过下表总结了两者在不同属性上的区别:

属性

ETL

ELT

最适合于……

结构化数据、历史遗留系统、以及关系型数据库;在加载到数据仓库之前转换数据

更快、更及时的数据加载,结构化和非结构化的数据,以及庞大且不断增长的数据,按需转换数据

支持非结构化数据?

主要用于本地的关系型数据

随时可以支持非结构化的数据

支持数据湖?

不支持数据湖

支持数据湖

查找

事实数据和维度都可用于暂存区

由于提取和加载发生在同一个操作中,因此所有数据皆可用

加载时间

数据最初被加载到暂存中,然后进入目标系统

数据一次性被加载到目标系统中

数据输出

通常被用于需要在上传到关系型数据仓库之前,实现结构化的本地数据

使用结构化、半结构化和非结构化数据,最适合在提供了大容量存储和计算能力的云环境中,处理海量数据,使数据湖能够按需快速存储和转换数据

数据加载的性能

由于它是一个多阶段的过程,因此数据加载的时间比其他替代品更长

由于节省了转换的等待时间,而且数据会被一次性加载到目标数据库中,因此数据加载的速度更快

转换的性能

数据转换可能会很慢

由于是在加载后按需完成的,因此数据转换完成得更快

聚合

复杂性会随着数据量和种类的增加而增多

目标平台的强大功能可以快速地处理大量数据

数据部署

基于本地或云端

通常基于云端

分析的灵活性

用例和报告模型都已被明确定义

随着模式的发展,随时添加数据,分析师可以构建目标仓库的新视图

合规

更符合GDPR、HIPAA和CCPA标准;用户可以避免将敏感数据加载到目标系统

会暴露个人数据,无法不遵守GDPR、HIPAA和CCPA标准

实施

提供各种工具和支持技术,更易于实施

需要有适当的技能来实施和维护的团队

反向ETL的一般概念

反向ETL是一种提取已清理的和处理过的数据架构。它会将数据从数据仓库(或数据湖/集市)复制到一个或多个操作系统。数据可以被重新引入诸如Salesforce等其他应用程序,可用于业务运营和预测。通过操作已提取的数据源,各类用户可以使用常用的工具来访问数据,并获取相关的洞见。作为现代化数据技术栈的组件,反向ETL允许企业开展那些比单独使用商业智能(BI)工具,更为复杂的分析。

作为一种战略性全新的集成流程,反向ETL可以减少那些快速发展型企业在数据分析上花费的时间。该流程更专注于将数据与业务用户的操作工具相同步,以激活数据仓库中的数据。用户必须事先定义好数据,并将其映射到最终目的地的适当列/字段上。

同时,由于企业的数据存储(如,数据参考或关系数据库)已成为一种并非所有人都可以完全访问到的存储库,因此,我们需要通过反向ETL,来为不同的业务角色提供基本的数据(如图3所示)。

图3:逆向ETL流程(源自Kai Waehner的《何时使用反向ETL以及何时使用反模式》)

反向ETL用例

为了利用数据仓库中已经清理和准备好的信息,而不是将数据仓库仅仅视为数据管道中的最终组件,反向ETL用户可以通过使用连接器,来读取数据仓库(如:SAP或SASS)。例如,现代化数据团队可以借助现成的反向ETL方案,从数据仓库中提取数据,为电子邮件营销、客户支持、销售或财务模型提供支持。同时,他们也能够为业务团队提供更深入、更高效、以及更有价值的自助服务。

总地说来,反向ETL可以协助企业实现:

  • 业务响应——快速跟踪业务应用和数据的变化,并做出反应。
  • 业务分析——为业务团队的分析工作流程提供洞见,以便他们做出更多以数据为依据的决策。
  • 数据基础设施——随着源系统数量的增加,反向ETL现在已成为能够快速、有效地操作数据仓库、以及数据湖中数据的重要工具。
  • 为云应用程序复制数据——增强各种报告功能,并能及时查找信息。

购买与构建反向ETL

当数据团队采用第三方反向ETL工具时,他们可以快速实施运营分析,但到底是该购买,还是自行构建反向ETL?下面我们以设计和构建反向ETL的流程和平台为例,给出企业需要在做出决定之前,慎重考量的三个因素:

  1. 构建数据连接器——将数据从仓库传输到下游操作系统,往往需要集成API连接器。这是一个的复杂工作。如果您选择设计和构建反向ETL、及其相关流程,就需要将ETL管道的构建流程,分配给开发团队。
  2. 为长期维护做准备——一旦您的开发团队推出了数据连接器,那么就需要针对API规范的经常性变化,保持连接器的更新。
  3. 可扩展性和可靠性设计——数据工程师需要确保反向ETL管道能够被快速开发,以便跟随企业的发展,有效地管理数据的激增。而且,反向ETL管道必须是可靠的,不会出现性能或数据传输上的问题。

小结

在创建数据管道的过程中,最繁重、且最耗时的步骤便是:从各种来源提取数据,然后测试整个过程。其中,同步每个数据源的收集过程,往往需要各个层面的大量专业知识。如果您和您的团队对此感兴趣的话,请参考如下链接:

译者介绍

陈峻 (Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验;持续以博文、专题和译文等形式,分享前沿技术与新知;经常以线上、线下等方式,开展信息安全类培训与授课。

原文标题:ETL, ELT, and Reverse ETL​,作者:Wayne Yaddow​

责任编辑:华轩 来源: 51CTO
相关推荐

2022-03-14 07:53:27

ELTETL大数据

2009-01-20 14:47:19

ETL数据集成技术研究

2023-10-30 15:51:43

ByteHouse大数据

2021-02-19 13:19:30

ETL数据科学工具

2020-06-08 12:47:08

ETLHadoopSpark

2022-10-21 18:31:21

ETL

2013-03-27 15:10:14

ETL

2009-01-19 13:35:57

ETLEAI数据仓库

2020-07-20 07:33:44

Python开发工具

2023-04-20 16:48:22

PandasPolarsPython

2019-10-30 05:13:22

ETL开源数据库

2013-03-27 13:34:49

数据清洗

2013-05-20 09:36:32

Hadoop大数据分析工具大数据

2019-09-09 16:10:32

ETL数据科学数据

2022-02-22 09:25:11

PandasETL数据分析

2021-07-12 22:39:15

JVM深度学习ETL

2023-12-07 14:03:06

系统设计ETL系统

2009-01-19 14:48:02

ETL优化过程原理

2024-09-06 10:25:32

人工智能ETL微服务
点赞
收藏

51CTO技术栈公众号