什么是 ELT(提取、加载和转换)?

在当今数据驱动型环境中,各组织不断寻求更高效的方式来管理和分析海量信息。ELT(提取、加载、转换)流程是一种现代化的数据集成方法,特别适合云环境。了解 ELT 是数据架构、数据工程或分析领域从业者的重要基础,因为 ELT 在处理多样化数据集时,在速度、灵活性和可伸缩性方面具有明显优势。这种方法改变了数据转换发生的时间和地点,为数据利用开辟了新的可能性。

ELT 的定义

ELT 代表提取、加载和转换。这是一种数据流水线模型,其中数据首先从各种源系统中提取。然后,原始数据不会在单独的暂存区中转换,而是直接加载到目标数据存储区(例如数据湖或云数据仓库)中。只有在数据加载到目标系统后,转换才会应用。

这一顺序使 ELT 有别于其前身 ETL(提取、转换、加载),也是其在云原生架构中日益普及的一个重要原因。

ELT 如何运作?

ELT 流程利用了现代数据存储和处理平台的强大功能和可伸缩性。我们来逐一分析各个组成部分:

  • 提取 :这一初步步骤涉及从原始来源收集原始数据。这些来源可能非常多样,包括数据库(SQL 和 NoSQL)、企业应用(如 CRM 和 ERP)、SaaS 平台、API 和日志文件。提取过程的重点是高效地从这些系统中提取数据。
  • 加载:在第二步中,提取的原始数据通常以原始格式或经过最少处理后直接加载到高容量存储系统中。此原始数据的常见目标是云数据湖或现代云数据仓库,它们可以处理大量结构化、半结构化和非结构化数据。
  • 转换 :此最后一步发生在数据安全地存储在目标系统中之后。利用数据仓库或数据湖的计算能力,对原始数据进行清理、结构化、丰富和转换,使其成为适合分析、报告和机器学习的格式。转换可以包括过滤、联接、聚合、标准化格式和派生新数据点。

ELT 流程具有灵活性,因为在加载之前,转换并未固定。例如,数据科学家可以访问原始数据来探索未曾预料到的模式或进行临时分析,而商业智能团队可以构建经过精心整理和转换的数据集来进行报告。

ELT 的优势

ELT 方法具有多项潜在优势,在处理大量数据和多种数据类型的环境中尤其如此:

  • 更快的数据注入速度:将原始数据加载到目标系统通常比等待转换在暂存区域中完成更快。这意味着数据可以更快地用于初步探索或特定应用场景。
  • 灵活性和敏捷性 :由于原始数据会保留在目标系统中,因此可以随着业务需求的演变,迭代开发、修改或添加转换。如果转换逻辑发生变化,无需从源系统重新注入数据;只需对已加载的原始数据重新运行转换即可。
  • 可伸缩性 :现代云数据仓库和数据湖旨在实现大规模可伸缩性。ELT 利用这些目标系统的强大处理引擎执行转换,从而充分利用其固有能力。这使组织能够高效地处理不断增长的数据量和复杂的转换。
  • 原始数据的保留 :存储原始数据可提供更完整的历史记录。这对于数据审核、在发现之前的转换中存在错误时重新处理以及未来尚未预料到的分析需求都非常有用。数据科学家通常可以从访问最精细的未转换数据中受益。
  • 某些工作负载的费用效益 :与维护单独的基础设施或为转换使用专门的 ETL 工具相比,使用云数据仓库的计算能力来执行转换有时更具成本效益,尤其是当数据仓库提供优化处理功能时。
  • 支持多种数据类型: ELT 非常适合处理结构化、半结构化(如 JSON 或 XML)和非结构化数据(如文本或图片)。数据可以以原始格式加载,并可根据需要进行转换,这在处理大数据场景时是一项重要优势。这种“schema-on-read”方法(在处理期间而不是加载之前应用架构)是 ELT 的标志。

ELT 面临的挑战

虽然 ELT 具有多项优势,但组织也应考虑以下问题:

  • 数据治理和安全性 :将可能包含敏感信息或个人身份信息 (PII) 的原始数据加载到数据湖或数据仓库中,需要强大的治理、安全和合规措施。访问权限控制、加密和数据屏蔽技术对于在目标环境中保护这些数据至关重要。
  • 目标系统中的转换复杂性: 虽然功能强大,但直接在数据仓库(例如使用 SQL)或数据湖中管理复杂的转换逻辑可能会变得具有挑战性。这需要熟练的人员,他们精通这些工具,并采用严谨的方法来管理和优化代码。
  • 工具和编排:有效的 ELT 实现依赖于适当的工具来编排提取和加载步骤,以及在目标系统内管理和执行转换。虽然许多云平台都提供工具,但需要仔细规划才能将这些工具集成并管理整个工作流。
  • 可能形成“数据沼泽”: 如果加载到数据湖中的原始数据未得到妥善编目、管理和治理,则数据湖可能会变成“数据沼泽”,其中的数据难以查找、难以信任或难以有效使用。制定可靠的数据管理策略至关重要。
  • 数据质量责任: 由于转换是在流程的后期进行的,因此确保数据质量可能需要在加载之后执行专门的步骤。监控和验证目标系统中的数据变得非常重要。

主动应对这些挑战有助于组织充分利用 ELT 范式的优势。

ELT 与 ETL

了解 ELT 与更传统的 ETL(提取、转换、加载)流程之间的区别对于选择合适的数据集成策略至关重要。主要区别在于转换步骤发生的时间和执行的位置。

功能

ELT(提取、加载、转换)

ETL(提前、转换、加载)

操作顺序

提取、加载、转换

提取、转换和加载

转换位置

在目标数据存储区(数据仓库/数据湖)内

在单独的暂存区或 ETL 工具环境中

加载到目标的数据

未经转换的原始数据

清理、结构化、转换后的数据

处理能力


利用目标数据存储区的强大功能

依赖于专用 ETL 引擎或暂存服务器


数据注入速度


通常初始加载数据的速度更快

由于需要进行前置转换处理,速度可能会较慢


灵活适应新用途


高,因为可以重新转换原始数据

较低,因为转换是预先定义的

架构处理

非常适合在读取时构建架构

通常依赖于“写入时定义架构”

数据类型适用性


非常适合处理结构化、半结构化和非结构化数据

最适合结构化数据和部分半结构化数据

资源利用率

优化可伸缩云数据仓库的使用

可能需要单独的基础设施来进行转换


功能

ELT(提取、加载、转换)

ETL(提前、转换、加载)

操作顺序

提取、加载、转换

提取、转换和加载

转换位置

在目标数据存储区(数据仓库/数据湖)内

在单独的暂存区或 ETL 工具环境中

加载到目标的数据

未经转换的原始数据

清理、结构化、转换后的数据

处理能力


利用目标数据存储区的强大功能

依赖于专用 ETL 引擎或暂存服务器


数据注入速度


通常初始加载数据的速度更快

由于需要进行前置转换处理,速度可能会较慢


灵活适应新用途


高,因为可以重新转换原始数据

较低,因为转换是预先定义的

架构处理

非常适合在读取时构建架构

通常依赖于“写入时定义架构”

数据类型适用性


非常适合处理结构化、半结构化和非结构化数据

最适合结构化数据和部分半结构化数据

资源利用率

优化可伸缩云数据仓库的使用

可能需要单独的基础设施来进行转换


ELT 是 Google Cloud 推荐的数据集成模式。ELT 涉及从源系统提取数据,将其加载到 BigQuery 中,然后将其转换为所需的格式以进行分析。ETL(提取、转换、加载)在将数据加载到数据仓库之前会对数据进行转换,而 ELT 方法与 ETL 不同,它让您可以充分利用 BigQuery 的强大功能来执行数据转换,并让任何 SQL 用户都能有效地开发数据集成流水线。

在 ELT 和 ETL 之间做出选择通常取决于特定的使用场景、现有基础设施、数据量以及组织的分析需求。在许多现代数据架构中,还可能采用混合方法,即在流水线的不同部分同时使用 ELT 和 ETL。

ELT 使用场景

ELT 模式在各种现代数据场景中特别有效:

云数据仓储

ELT 非常适合 Google Cloud 的 BigQuery 等云数据平台,这些平台提供强大的处理能力和可伸缩性,可高效处理大型数据集的转换。

大数据分析

在处理海量、高速且种类繁多的数据时,ELT 可让您快速将数据注入数据湖或可扩缩的存储空间。然后,可以使用分布式处理框架根据需要应用转换。

数据湖实现

数据湖旨在以原生格式存储大量原始数据。ELT 流程会加载这些原始数据,然后各种分析和处理引擎可以对其进行转换和使用。

实时或近乎实时的数据处理

对于需要快速访问新鲜数据的用例,ELT 可以加快加载阶段的速度。然后,可以对此数据的子集执行特定近乎实时的信息中心或应用的转换。

探索性数据分析和数据科学

数据科学家通常倾向于访问未经转换的原始数据,以便进行特征工程、构建机器学习模型和发掘分析洞见,而不会受到预定义转换的限制。ELT 可让这些原始数据随时可用。

整合多种数据源

在将来自众多不同系统且结构各异的数据集成到一起时,ELT 会先将所有内容加载到一个中心位置,然后通过转换将其统一,从而简化初始注入过程。

利用 Google Cloud 解决业务难题

新客户可获得 $300 赠金,用于抵扣 Google Cloud 的费用。

Google Cloud 如何使用 ELT

Google Cloud 提供全面的服务套件,可帮助优化 ELT 架构,让组织能够构建强大且可扩缩的数据流水线。重点是利用 BigQuery 等服务的强大功能进行数据库内转换。

以下是 Google Cloud 服务在 ELT 模式中通常的使用方式:

  • 提取 :可以使用 Dataflow 等服务(用于批量和流式数据处理)、Dataproc(用于 Spark 和 Hadoop 工作负载)从多个来源提取数据,也可以直接通过连接器和 API 将数据提取到 Google Cloud 服务中。Pub/Sub 可用于注入实时流式数据。
  • 加载 :提取的原始数据通常会加载到 Cloud Storage 中,后者充当高度可扩缩且持久的数据湖。从 Cloud Storage 中,您可以高效地将数据加载到 BigQuery 中。BigQuery 是 Google Cloud 的无服务器、可伸缩能力强且经济实惠的多云数据仓库。还可以将数据直接流式传输到 BigQuery 中。
  • 转换: 在 Google Cloud 上,ELT 中的“T”就体现在这一点。BigQuery 旨在使用标准 SQL 执行 PB 级的复杂转换。其强大的处理引擎可直接处理存储在其中的数据的联接、聚合、窗口函数和其他转换。用户还可以在 JavaScript 中开发用户定义的函数 (UDF),或者利用 BigQuery ML 进行数据库内机器学习。原始数据通常保留在 Cloud Storage 或单独的 BigQuery 表中,以便进行多种多样的重新转换。

Google Cloud 的基础设施支持 ELT 的核心原则,为原始数据提供可扩缩的存储空间、快速加载功能,并在 BigQuery 中提供强大的引擎来高效执行转换。这让数据工程师能够构建流水线,在其中快速存储数据,然后根据特定的分析要求对数据进行优化,所有这些操作都在托管式无服务器环境中完成。

更进一步

获享 $300 赠金以及 20 多种提供“始终免费”用量的产品,开始在 Google Cloud 上构建项目。