随着数据库在 20 世纪 70 年代越来越受欢迎,ETL 流程出现,用于集成和加载数据以进行计算和分析,并最终成为数据仓库项目中处理数据的主要方法。
ETL 为数据分析和机器学习工作流奠定了基础。借助一系列业务规则,ETL 能够以满足特定商业智能需求的方式来清理和组织数据(例如月度报告),同时 ETL 还可以处理更高级的分析,从而改善后端流程或最终用户体验。组织通常使用 ETL 来:
浏览免费的 O'Reilly 电子书,以了解如何开始使用 Presto,一款用于数据分析的开源 SQL 引擎。
立即注册,获取 AI 治理白皮书
ETL 和 ELT 之间最明显的区别是操作顺序的不同。ELT 从源位置复制或导出数据,但不是将其加载到暂存区域进行转换,而是将原始数据直接加载到目标数据存储,以根据需要进行转换。
虽然这两个流程都利用了各种数据存储库,例如数据库、数据仓库和数据湖,但每个流程都有其优点和缺点。ELT 对于大容量、非结构化数据集特别有用,因为可以直接从源加载。ELT 更适合大数据管理,因为它不需要为数据提取和存储进行太多的前期规划。
另一方面,ETL 流程在一开始就需要更多的定义。需要为数据提取确定特定数据点以及任何潜在的“密钥”,以便在不同的源系统之间集成。即使在这项工作完成后,还需要构建数据转换的业务规则。这项工作通常依赖于特定类型数据分析的数据需求,该需求将决定数据需要具有的汇总级别。
虽然随着云数据库的采用,ELT 变得越来越受欢迎,但作为一个较新的流程,它也有自己的缺点,同时意味着最佳实践仍在建立之中。
要了解 ETL 的工作原理,最简单的方法就是了解流程中每一步都发生了什么。
在数据提取过程中,原始数据将从源位置复制或导出到暂存区域。数据管理团队可以从各种结构化或非结构化数据源中提取数据。这些来源包括但不限于:
在暂存区,会对原始数据进行数据处理。在这里,数据得到转换和整合,以用于其预期的分析用例。此阶段可能涉及以下任务:
在这最后一步中,将转换后的数据从暂存区域移至目标数据仓库。通常,这涉及到对所有数据进行初始加载,然后定期加载增量数据变化,偶尔需要进行完全刷新以擦除和替换仓库中的数据。对于大多数使用 ETL 的组织而言,该流程是一个自动化流程,且定义明确、可连续执行和批量驱动。通常,ETL 发生在非工作时间,此时源系统和数据仓库的流量最低。
ETL 和 ELT 只是两种数据集成方法,还有其他方法也可用于促进数据集成工作流。其中包括:
ETL 解决方案在将数据加载到不同存储库之前会执行数据清理,以此来提高质量。ETL 是一种耗时的批处理操作,通常用于创建需要较少更新的较小目标数据存储库,而其他数据集成方法 – 包括 ELT(提取、加载和转换)、变更数据捕获 (CDC) 和数据虚拟化 – 则用于集成越来越大且发生变更的数据或实时数据流。
过去,组织自己编写 ETL 代码。现在有许多开源和商用 ETL 工具和云服务可供选择。这些产品的典型功能包括:
此外,许多 ETL 工具已经发展到包含 ELT 功能,并支持面向人工智能 (AI) 应用程序的实时数据和流数据集成。
使用企业应用集成 (EAI) 的应用程序编程接口 (API) 可以代替 ETL,以获得更灵活、可扩展的解决方案,其中包括工作流集成。虽然 ETL 仍然是主要的数据集成资源,但在基于 web 的环境中 EAI 越来越多地与 API 配合使用。