从数据提取到数据仓库:释放AWS的ETL工具的力量
ETL代表抽取、转换和加载。ETL工具从各种来源抽取数据并将其转换为适合目标系统或数据模型要求的中间格式。最后,它们将数据加载到目标数据库、数据仓库甚至data lake。
我还记得15到20年前,ETL这个术语只有少数人理解。当各种自定义批处理作业在本地硬件上达到巅峰时。
许多项目都进行了某种形式的ETL。即使他们不知道,他们应该称之为ETL。在那个时候,每当我解释任何涉及ETL流程的设计时,我称之为并以那种方式描述它们,它看起来几乎像另一个世界的技术,非常罕见。
但是今天,情况不同了。迁移到云端是当务之急。而ETL tools是大多数项目架构中非常重要的一部分。
最终,迁移到云端意味着将数据从本地作为源提取出来,并以与云架构尽可能兼容的形式转换为云数据库。这正是ETL工具的工作。
ETL的历史及其与现在的联系
ETL的主要功能一直是相同的。
抽取
ETL工具从各种来源(如数据库、平面文件、Web服务或最近的基于云的应用程序)中提取数据。
通常意味着将Unix文件系统上的文件作为输入并进行预处理、处理和后处理。
你可以看到可重用的文件夹命名模式,如:
- 输入
- 输出
- 错误
- 归档
在这些文件夹下,还存在基于日期的子文件夹结构。
这只是处理传入数据并准备将其加载到某种数据库的标准方式。
今天,没有Unix文件系统了(不再与以前一样)-可能连文件都没有了。现在有API-应用程序编程接口。你可以,但不需要将文件作为输入格式。
它可以全部存储在缓存内存中。它仍然可以是文件。无论是什么,它必须遵循某种结构化格式。在大多数情况下,这意味着使用JSON或XML格式。在某些情况下,旧的好逗号分隔值(CSV)格式也可以。
你可以定义输入格式。是否还涉及创建输入文件历史完全取决于你。这不再是标准步骤。
转换
ETL工具将提取的数据转换为适合分析的格式。这包括数据清理、数据验证、数据增强和数据聚合。
与过去一样,数据通过Pro-C或PL/SQL过程化数据分阶段、数据转换和数据目标模式存储的一些复杂自定义逻辑。这是一个类似于根据文件被处理的阶段将传入文件分隔到子文件夹中的标准过程。
为什么它同时又是一种自然而然的方式,却又是根本错误的方式?通过直接转换传入的数据而没有永久存储,你失去了原始数据的最大优势-不可变性。项目只是毫无机会地将其扔掉,无法进行重构。
好吧,猜猜看。今天,执行原始数据的变换越少越好。至少对于系统来说是这样。下一步可能会进行一些严重的数据变换和数据模型转换。但是你希望将原始数据存储为尽可能不变和原子结构。相比以前,这是一个很大的转变,如果你问我。
加载
ETL工具将转换后的数据加载到目标数据库或data warehouse中。这包括创建表,定义关系,并将数据加载到适当的字段中。
加载步骤可能是唯一一个遵循相同模式的步骤。唯一的区别是目标数据库。以前,通常是Oracle,现在可以是AWS云中可用的任何数据库。
今天的云环境中的ETL
如果你计划将数据从本地环境带入(AWS)云中,你需要一个ETL工具。没有它是不行的,这就是为什么云架构的这一部分可能成为最重要的拼图。如果这一步错了,之后的任何事情都会有相同的问题。
虽然有很多竞争对手,但我现在只关注我个人最有经验的三个:
- Data Migration Service (DMS) – AWS的原生服务。
- Informatica ETL – 可能是ETL领域的主要商业参与者,成功将业务从本地环境转移到云端。
- Matillion for AWS – 在云环境中相对较新的参与者。虽然不是AWS的原生服务,但是云原生。与Informatica等公司没有可比性的历史。
AWS DMS作为ETL
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提供了一些基本的数据转换和自定义功能,但在这方面可能还不够成熟。如果您的需求有限data transformation,这仍然是一个优势。
- 在DMS中,数据质量和治理需求通常是相对有限的。但是,这些是可以在项目的后续阶段通过其他工具进行改进的领域,这些工具更专注于此目的。您可能希望将ETL部分尽可能简单地完成。那么DMS是一个完美的选择。
- DMS对于预算有限的组织来说可能是一个更具成本效益的选择。DMS的定价模型比Informatica或Matillion等ETL工具更简单,这使得组织能够更容易地预测和管理其成本。
Matillion ETL
Matillion是一种面向云的解决方案,您可以使用它将来自各种来源的数据集成到一起,包括数据库、SaaS应用程序和文件系统。它提供了一个可视化界面来构建ETL流水线,并支持各种AWS服务,包括Amazon S3、Amazon Redshift和Amazon RDS。
Matillion易于使用,对于对ETL工具不熟悉或数据集成需求较简单的组织来说是一个不错的选择。
另一方面,Matillion有点像一张白纸。它有一些预定义的潜在功能,但您必须自定义编码才能实现这些功能。即使按照定义,您也不能指望Matillion能够立即完成工作。
Matillion通常也被描述为ELT而不是ETL工具。这意味着对于Matillion来说,在转换之前进行加载更为自然。
适用性因素
换句话说,Matillion在数据存储在数据库中后才进行转换方面更为有效。这主要是因为前面提到的自定义脚本义务。由于所有特殊功能必须首先编码,因此效果将严重依赖于自定义代码的效果。
可以自然地期望这在目标数据库系统中处理得更好,并且只在Matillion上保留简单的1:1加载任务-在这里用自定义代码破坏的机会要少得多。
虽然Matillion为data integration提供了一系列功能,但可能不像其他一些ETL工具那样提供相同级别的数据质量和治理功能。
Matillion可以根据组织的需求进行扩展或缩减,但在处理大量数据时可能不太有效。并行处理相当有限。在这方面,Informatica肯定是一个更好的选择,因为它在同时更先进和功能丰富。
然而,对于许多组织来说,Matillion for AWS可能提供了足够的可扩展性和并行处理能力来满足他们的需求。
Informatica ETL
Informatica for AWS是一种基于云的ETL工具,旨在帮助在AWS中集成和管理各种数据源和目标。它是一个完全托管的服务,提供了一系列数据集成的功能和能力,包括数据分析、数据质量和data governance等。
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,它可能能很好地满足您的需求。
接下来,查看data transformation tools以更好地管理您的数据。