释放 AWS 的 ETL 工具的力量

理解 ETL:数据处理的基石

ETL,即提取(Extract)、转换(Transform)和加载(Load),是数据处理中的核心概念。ETL 工具负责从各种数据源获取数据,然后将其转化为符合目标系统或数据模型要求的中间形式。最后,这些工具会将转换后的数据加载到目标数据库、数据仓库甚至数据湖中。

大约在十五到二十年前,”ETL” 这个词还鲜为人知。那时,许多定制的批处理任务主要在本地硬件上运行。

实际上,许多项目都在使用某种形式的 ETL,即使当时他们没有明确地称之为 ETL。那时,当我解释涉及 ETL 过程的设计,并用这种方式描述它们时,这几乎被看作一种来自另一个世界的技术,非常少见。

然而,如今情况大不相同。迁移到云端已成为首要任务。 ETL 工具在大多数项目架构中扮演着至关重要的战略角色。

本质上,上云意味着将本地数据作为源头,并将其转换为与云架构兼容的格式,然后存储到云数据库中。这正是 ETL 工具的主要职责。

ETL 的历史及其与现在的关联

资料来源:aws.amazon.com

ETL 的核心功能始终如一。

ETL 工具从各种来源,如数据库、纯文本文件、Web 服务,以及最近的云端应用程序中提取数据。

传统上,这通常意味着从 Unix 文件系统中读取文件,并进行预处理、处理和后处理。

您可能会看到类似以下的文件夹结构:

  • 输入
  • 输出
  • 错误
  • 归档

这些文件夹下通常还会有按日期组织的子文件夹。

这是一种处理传入数据并准备将其加载到数据库的标准方法。

而现在,Unix 文件系统不再是唯一的数据源,甚至可能没有文件。 现在,API(应用程序编程接口)越来越常见。虽然仍可使用文件作为输入格式,但并非必需。数据可以存储在高速缓存中。无论数据形式如何,都需要遵循某种结构化格式,通常是 JSON 或 XML 格式。在某些情况下,旧的 CSV(逗号分隔值)格式也仍然适用。

您可以自定义定义输入格式。是否需要记录输入文件的历史取决于您的具体需求,这不再是标准步骤。

数据转换

ETL 工具将提取的数据转换为适合分析的格式,包括数据清理、数据验证、数据增强和数据聚合。

在过去,数据会经历一些复杂的自定义逻辑,如 Pro-C 或 PL/SQL 过程的数据暂存、转换和目标模式存储。这是一个类似的标准流程,就像将传入的文件按处理阶段分成子文件夹一样。

为什么看似理所当然,却可能存在根本错误?通过直接转换传入的数据,而没有永久存储,您会失去原始数据最重要的优势,即不变性。项目直接丢弃数据,没有重新构建的机会。

现在,您应该尽量减少对原始数据进行的转换,特别是对于首次进入系统的数据。当然,后续步骤可能包括重要的数据修改和数据模型转换。但是,您应尽可能以不变且原子化的形式存储原始数据。这与以往本地部署时代的做法相比,是一个重大转变。

数据加载

ETL 工具将转换后的数据加载到目标数据库或数据仓库中,包括创建表、定义关系并将数据加载到相应的字段中。

加载步骤可能是唯一一个多年来保持不变的步骤。唯一的区别是目标数据库。以前主要是 Oracle,而现在可以是 AWS 云中提供的任何服务。

当今云环境中的 ETL

如果您的计划是将数据从本地迁移到 AWS 云,那么您需要一个 ETL 工具。它是必不可少的,因此云架构的这一部分可能成为至关重要的一环。如果这一步出错,后续环节也会受到影响。

虽然市场上有很多选择,但我将重点介绍我个人经验最丰富的三个工具:

  • 数据迁移服务 (DMS) – AWS 的原生服务。
  • Informatica ETL – 可能是 ETL 领域的主要商业参与者,成功地将其业务从本地部署转移到云端。
  • Matillion for AWS – 云环境中一个相对较新的参与者。它不是 AWS 原生的,而是云原生的。它没有 Informatica 那样的历史。

AWS DMS 作为 ETL

资料来源:aws.amazon.com

AWS 数据迁移服务 (DMS) 是一种完全托管的服务,可用于将数据从不同的来源迁移到 AWS。它支持多种迁移场景。

  • 同构迁移(例如,Oracle 到 Amazon RDS for Oracle)。
  • 异构迁移(例如,Oracle 到 Amazon Aurora)。

DMS 可以将数据从各种来源(包括数据库、数据仓库和 SaaS 应用程序)迁移到各种目标,例如 Amazon S3、Amazon Redshift 和 Amazon RDS。

AWS 将 DMS 服务视为将数据从任何数据库源导入云原生目标的终极工具。虽然 DMS 的主要目标只是将数据复制到云端,但它也具备数据转换能力。

您可以使用 JSON 格式定义 DMS 任务,以便在将数据从源复制到目标时自动执行各种转换操作:

  • 将多个源表或列合并为一个值。
  • 将源值拆分为多个目标字段。
  • 使用另一个目标值替换源数据。
  • 根据输入上下文删除任何不需要的数据或创建全新的数据。

这意味着,是的,您绝对可以将 DMS 用作项目的 ETL 工具。虽然它可能不如其他选项那样复杂,但如果您提前明确定义了目标,它可以完成工作。

适用性因素

尽管 DMS 提供了一些 ETL 功能,但它主要用于数据迁移。在某些情况下,使用 DMS 可能比使用 Informatica 或 Matillion 等 ETL 工具更合适:

  • DMS 可以处理源数据库和目标数据库相同的同构迁移。如果需要在相同类型的数据库之间迁移数据,例如 Oracle 到 Oracle 或 MySQL 到 MySQL,这会很有优势。
  • DMS 提供了一些基本的数据转换和定制功能,但在这方面可能还不是很完善。如果您的数据转换需求有限,这仍然是一个不错的选择。
  • 一般来说,DMS 对数据质量和治理的要求非常有限。 但这些领域可以在项目的后期阶段使用其他工具进行改进,并进行更深入的管理。 如果您只需要尽可能简单地完成 ETL 部分,那么 DMS 可能是理想选择。
  • 对于预算有限的组织,DMS 可能是更具成本效益的选择。DMS 的定价模式比 Informatica 或 Matillion 等 ETL 工具更简单,更容易让组织预测和管理成本。
  • Matillion ETL

    资料来源:matillion.com

    Matillion 是一个云原生解决方案,可用于集成来自各种来源的数据,包括数据库、SaaS 应用程序和文件系统。它提供了一个可视化的界面来构建 ETL 管道,并支持各种 AWS 服务,如 Amazon S3、Amazon Redshift 和 Amazon RDS。

    Matillion 易于使用,对于初次接触 ETL 工具或数据集成需求不太复杂的组织来说,这是一个不错的选择。

    另一方面,Matillion 有点像白板。它具有一些预定义的功能,但您必须进行自定义编码才能实现。您不能期望 Matillion 可以直接为您完成任务,即使该功能是默认提供的。

    Matillion 也经常将自己描述为 ELT 而不是 ETL 工具。这意味着 Matillion 更倾向于先加载数据,然后再进行转换。

    适用性因素

    换句话说,Matillion 更擅长转换已存储在数据库中的数据。主要原因是必须进行自定义脚本编码。由于必须先对所有特殊功能进行编码,因此最终效果很大程度上取决于自定义代码的质量。

    自然地,人们会期望在目标数据库系统中更好地处理这些任务,而在 Matillion 上只保留一个简单的 1:1 加载任务。这样可以最大程度地减少因自定义代码而破坏数据的可能性。

    虽然 Matillion 提供了一系列数据集成功能,但它可能不具备与其他一些 ETL 工具相同级别的数据质量和治理功能。

    Matillion 可以根据组织的需要进行扩展或缩小,但可能无法高效地处理大量数据。并行处理能力有限。在这方面,Informatica 无疑是更好的选择,因为它更先进且功能更丰富。

    然而,对于许多组织来说,Matillion for AWS 提供的可扩展性和并行处理能力可能足以满足他们的需求。

    Informatica ETL

    资料来源:informatica.com

    Informatica for AWS 是一种基于云的 ETL 工具,旨在帮助集成和管理 AWS 中各种来源和目标的数据。它是一种完全托管的服务,为数据集成提供了一系列特性和功能,包括数据剖析、数据质量和数据治理。

    Informatica for AWS 的一些主要特性包括:

  • Informatica 旨在根据实际需要向上或向下扩展。它可以处理大量数据,并可用于集成来自各种来源的数据,包括数据库、数据仓库和 SaaS 应用程序。
  • Informatica 提供了一系列安全功能,包括加密、访问控制和审计跟踪。它符合各种行业标准,如 HIPAA、PCI DSS 和 SOC 2。
  • Informatica 提供了一个可视化界面来构建 ETL 管道,使用户可以轻松创建和管理数据集成工作流。它还提供了一系列预构建的连接器和模板,可用于连接系统并启用集成过程。
  • Informatica 与各种 AWS 服务集成,包括 Amazon S3、Amazon Redshift 和 Amazon RDS。这使得跨各种 AWS 服务集成数据变得容易。
  • 适用性因素

    显然,Informatica 是列表中功能最丰富的 ETL 工具。但是,它可能比 AWS 中可用的其他一些 ETL 工具更昂贵且使用起来更复杂。

    Informatica 的成本可能很高,特别是对于中小型组织。其定价模式基于使用情况,这意味着组织可能需要随着使用量的增加而支付更多费用。

    它的设置和配置也可能很复杂,特别是对于刚接触 ETL 工具的人来说。这可能需要投入大量的时间和资源。

    这也导致了我们所说的“复杂的学习曲线”。对于那些需要快速集成数据或用于培训和入职的资源有限的人来说,这可能是一个缺点。

    此外,Informatica 可能无法有效地集成来自非 AWS 来源的数据。在这方面,DMS 或 Matillion 可能是更好的选择。

    最后,Informatica 是一个非常封闭的系统。 对其进行自定义的能力有限,需要接受其预设的配置,这在一定程度上限制了解决方案的灵活性。

    最后的话

    正如许多其他情况一样,没有一种适用于所有情况的解决方案,即使是 AWS 中的 ETL 工具也是如此。

    您可能会选择最复杂、功能最丰富且成本最高的 Informatica 解决方案。但这在以下情况下才有意义:

    • 项目相当大,而且您确信整个未来的解决方案和数据源也会连接到 Informatica。
    • 您可以负担得起技术娴熟的 Informatica 开发人员和配置人员团队。
    • 您需要强大的支持团队,并且愿意为此付出代价。

    如果以上条件不满足,您可以尝试 Matillion:

    • 如果项目的需求通常不那么复杂。
    • 如果需要在处理过程中包含一些非常自定义的步骤,灵活性是一个关键要求。
    • 如果您不介意团队从头开始构建大部分功能。

    对于任何更简单的任务,显而易见的选择是使用 AWS 的原生服务 DMS,它或许能很好地满足您的需求。

    接下来,研究一些数据转换工具,以便更好地管理您的数据。