多年来,ETL(提取、转换、加载)一直是数据集成的标准方法。但云计算的兴起和整合自助服务数据的需求导致了新方法的发展,如ELT(提取、加载、转换)和反向ETL。
ETL的优势是什么?这三种数据整合方法有什么不同?对于你的数据管道使用案例,ETL是否比ELT更可取?为什么以及何时反向ETL对你的数据仓库(DW)和数据湖有价值?为什么反向ETL不是数据管道ETL或ELT的可选选择,而是DW和数据湖的另一个流程机会?
为了帮助你为你的数据管道项目选择数据集成方法,我们简要地探讨了ETL和ELT--它们的优点和缺点以及如何利用这两种技术。我们描述了为什么ETL是一个特殊的选择,如果你需要转换以支持业务逻辑,对飞行中的数据进行细化合规,以及在ETL流的情况下,低延迟。我们还探讨了对于那些需要快速数据加载、最小化维护和高度自动化工作流程的人来说,ELT是一个更好的选择。
ETL和ELT的一般概念
企业面临的一个共同挑战是以多种格式从多个来源获取数据,然后将其转移到一个或多个数据目标。目标有可能与源的数据存储方式不一样。如果格式不同,在加载到最终目标之前,必须对数据进行完善或清理。许多工具、服务和流程已经被开发出来以帮助解决这些挑战。无论使用哪种流程,都有一个共同的需求,即协调工作并在数据管道中应用数据转换。
大多数数据移动项目收集了多个数据源。他们需要一个定义明确的数据管道(即ELT/ELT)。但什么是数据管道?它是信息从源头到终端的路径(或工作流程)。
ETL过程
ETL是一个数据集成过程,使数据管道项目能够从各种来源提取数据,转换数据,并将产生的数据加载到目标数据库。不管是ETL还是ELT,数据转换/整合过程包括以下三个阶段(图1)。
- 提取--使用数据库查询或变更数据捕获(CDC)流程从源系统(如SAS、在线、本地)提取数据。在提取之后,数据被转移到暂存区,以便进一步处理。
- 转换--数据被清理、处理、转换、充实等,然后转换为所需的格式,被目标数据管道、数据仓库、数据库或数据湖消费。
- 加载- 原始数据和转换后的数据被加载到目标系统中。这个过程可能涉及到写到一个限定的文件,在数据库中创建模式,或用累积或聚合的数据覆盖现有数据。
ETL和ELT流程以不同的顺序执行这些步骤。数据管道团队必须决定是在将数据加载到目标数据存储库之前还是之后对其进行转换。
ELT过程
ELT是一种整合整个组织的数据以防止数据孤岛的方法。数据从其来源中提取出来,加载到数据仓库中,然后再根据需要进行转换。转换通常是在需要的基础上进行的,而在ETL过程中,数据在被存储之前就被转换了。
- 提取--与ETL相同。
- 加载--与ETL不同,数据被直接交付(即没有清洗、充实、转换)到目标系统--通常在这个过程中考虑到目标模式和数据类型的迁移。
- 转化--加载数据的目标平台可以为业务报告的目的进行转化。一些公司利用dbt等工具来转换他们的目标数据。因此,在ELT管道中,根据需要对目标数据进行转换。
ELT重新安排了整合过程中的步骤,转换发生在最后而不是中间。ELT流程可以转换阶段的顺序,将数据加载到一个接受原始数据的数据湖(例如),无论其结构或格式如何。这可以实现即时的数据提取和加载。
有助于采用ELT的另一个因素是基于云的数据仓库的广泛实施。现在,大多数云托管的DW是可管理的,这意味着企业不需要购买或管理任何硬件或存储,安装软件,或考虑扩展问题--云供应商工具管理一切。例如,云托管的DW可以在很短的时间内配置好。云数据仓库解决方案提供了计算和存储之间的完全分离,以及存储无限数据的能力。
ETL vs. ELT:属性、功能和使用案例
在ETL与ELT用例的讨论中,没有明显的领跑者。下表概述了它们的区别属性。
| 属性 | ETL | ELT |
|---|---|---|
| 最适合... | 结构化数据、遗留系统和关系型数据库;在加载到DW之前转换数据 | 更快、更及时的数据加载,结构化和非结构化数据,以及大量和不断增长的数据;根据需要转换数据 |
| 支持非结构化数据 | 主要用于企业内部的关系型数据 | 对非结构化数据的支持是现成的 |
| 对数据湖的支持 | 不支持数据湖 | 支持数据湖 |
| 查询 | 事实数据以及维度必须对集结区可用 | 所有的数据都是可用的,因为提取和加载发生在一个单一的动作中 |
| 加载的时间 | 数据最初被加载到中转区,然后是目标系统 | 数据被加载到目标系统中一次 |
| 数据输出 | 通常用于在上传到关系型DW之前应该被结构化的企业内部数据 | 结构化、半结构化和非结构化的数据;最适合在提供大量存储和计算能力的云环境中实施大数据量,使数据湖能够根据需要快速存储和转换数据 |
| 数据加载的性能 | 数据加载时间比其替代方案要长,因为它是一个多阶段的过程 | 数据加载速度更快,因为没有转换的等待时间,而且数据只被加载到目标数据库一次 |
| 转换的性能 | 数据转换可能很慢 | 数据转换完成得更快,因为它们是在加载后按需要进行的。 |
| 聚合 | 复杂度随着数据量和种类的增加而增加 | 目标平台的力量可以快速处理大量的数据 |
| 数据部署 | 内部部署或基于云的部署 | 通常是基于云的 |
| 分析的灵活性 | 用例和报告模型定义明确 | 随着模式的发展,可以随时添加数据;分析人员可以建立目标仓库的新视图 |
| 合规性 | 更适合遵守GDPR、HIPAA和CCPA标准;用户可以在将敏感数据加载到目标系统之前将其省略。 | 暴露私人数据和不符合GDPR、HIPAA和CCPA标准的风险更大。 |
| 实施 | 由于有各种各样的工具和支持技能,因此更容易实施 | 需要特定的技能来实施和维护 |
反向ETL的一般概念
反向ETL是一种提取经过清理和处理的数据的架构,包括将数据从数据仓库(或数据湖/市场)复制到一个或多个运营系统。数据可以被摄取回其他应用程序,如Salesforce,可用于业务运营和预测。将提取的数据源操作化,使所有用户都能访问他们经常使用的工具所需的数据和洞察力。作为现代数据技术堆栈的一个组成部分,反向ETL允许公司进行比单独使用商业智能(BI)工具更复杂的分析。
反向ETL已经成为现代数据堆栈中的一个战略性的新整合过程,以减少快速发展的企业所需的分析和数据之间的时间。反向ETL流程的重点是通过将数据同步回业务用户的操作工具来激活数据仓库内的数据。用户必须定义数据并将其映射到最终目的地的适当列/字段中。
反向ETL可能是需要的,因为你的数据存储(例如,DW,关系型数据库)已经成为一个存储库,不能被每个需要数据的人完全访问。如果没有对你的数据仓库进行反向ETL,你的业务所需要的许多基本数据就只能在DW里了。
反向ETL使用案例
反向ETL用户不是把数据仓库看作是数据管道中的终端组件,而是可以利用他们的DW中已经清理和准备好的信息。他们可以通过使用连接器来读取数据仓库(例如,SAP,SASS)来做到这一点。其目的是使DW的数据可以被操作系统操作。
数据湖团队正在接受一套新的高级工程分析技能。他们应该被解放出来,允许使用他们的现代分析工具来使用这些技能和数据。有了反向ETL解决方案,现代数据团队可以从数据仓库中提取数据,为电子邮件营销、客户支持、销售或财务模型提供动力。这意味着,更成功的业务团队可以使自助服务更深入,更有价值,更有效率。
使用反向ETL可以完成什么?在其他方面。
- 业务分析- 快速跟踪业务应用和数据的变化并作出反应。
- 业务分析- 为业务团队的分析工作流程提供洞察力,使他们能够做出更多的数据信息决策。
- 数据基础设施--随着源系统数量的增加,反向ETL现在是快速有效地操作DW和数据湖中的数据的一个基本工具。
- 为现代云应用复制数据--为了增强报告能力,及时找到信息。
购买与构建反向ETL
当数据团队采用第三方反向ETL工具时,他们可以快速实施运营分析,但究竟是购买还是构建,可能很难确定。
在决定构建反向ETL流程和平台之前,应该考虑三个因素。
- 构建数据连接器--将数据从你的仓库转移到下游的运营系统,需要整合API连接器的复杂工作。如果你选择设计和构建反向ETL和相关流程,你很可能会将ETL管道构建过程分配给一个开发团队。
- 为长期维护做准备--一旦你的开发团队推出了数据连接器,工作并没有结束。由于API规格经常变化,保持连接器的更新成为一个额外的负担。
- 设计可扩展性和可靠性--数据工程师需要确保反向ETL管道能够快速发展,以便随着企业的发展毫不费力地管理数据激增。反向ETL管道必须非常可靠,不给性能或数据交付问题留下任何空间。
结论
在创建数据管道的过程中,最繁重、最耗时的步骤是从各种来源提取数据,然后测试整个过程。每个来源都需要它的同步性,你可以有很多数据收集的来源。这可以迅速成为一个技术团队的巨大提升。最终,数据整合会变得非常复杂,因为它们需要在流程的各个层面上有大量的专业知识。然而,需要花时间和精力去了解更多的选项、变化和可用于工作的产品,总是值得的。
参考资料。
- Gartner研究(2021年),"Gartner数据集成工具魔力象限"
- Gartner研究(2020),"数据集成工具的关键能力"
- Kai Waehner,"何时使用反向ETL,何时是反模式"
- Stephen Roddewig,"ETL与ELT:区别是什么,哪个更好?"