ETL与ELT - 从数据工程师的角度进行比较
为什么我们总是要在这两者中选择一个?
在高层次上,ETL在加载前对你的数据进行转换,而ELT只在加载到你的仓库后对数据进行转换。
在这篇文章中,我们将详细研究ETL和ELT工作方式的区别,以帮助你确定哪种流程最适合你手头的数据操作。
ETL(提取、转换、加载)已经存在了几十年,一直是收集和改造数据为一种格式的首选方法。然而,随着云数据仓库的出现,ELT(提取、加载、转换)已成为组合数据的较新方法。
重要的是要认识到,ETL和ELT都有相同的目的,但在实施上有所不同。
无论你是使用ETL还是ELT,你都要执行三个关键步骤。
- 提取:在这个步骤中(总是第一个),你将从你的所有数据源中提取数据。这种提取可以来自结构化的关系数据库,也可以来自非结构化的数据源,如图像和电子邮件。
- 转化。在这一步中,你要 对数据进行清理、处理和转换,使其符合你的数据存储中的现有格式。
- 加载:这是一个步骤,你将数据加载到存储目的地,并使用适当的商业智能工具对它们进行分析。
那么,哪种方法更适合你?答案就在于流程的细节。
什么是ETL?

图片来源。Malsha Ranawaka
最初,ETL过程是通过手工编码,从关系型数据库中收集数据。现在,专业开发的ETL工具通常会自动进行这一过程,因为它们可以从一些来源提取数据并自动进行操作。
提取过程
如上图所示,ETL工具将从你的数据源中提取数据。你可以有各种数据源,从数据库和平面文件到发布应用数据的REST APIs。
转化过程
一旦ETL工具提取了数据,数据转换就发生在暂存区。由于数据源可能在不同的时间发布数据,所以有必要设立一个暂存区。
例如,一个销售数据库每天都会有数据更新,而一个员工数据库可能每个月才会有数据发布。
加载过程
在最后的加载步骤中,ETL工具将把转换后的数据存储在你的数据仓库中。
ETL的优势
- 管理数据仓库的存储。你的数据存储是一个对成本敏感的系统吗?在这种情况下,使用ETL可能会帮助你保持低存储成本。ETL工具将转换和过滤,只保留你需要的数据。这将减少对数据存储的使用。
- 遵守安全协议。你可能会与数据隐私法规保持一致,如GDPR、SOC2和HIPAA或针对你公司的要求。这类法规通常要求你在将敏感数据(如电子邮件或IP地址)存储在数据仓库之前将其删除、屏蔽或加密。你可以通过在转换阶段隐藏或删除数据,在ETL过程中轻松实现这一点。
ETL的劣势
- 灵活性低。你的输入数据源和格式是否会经常变化?如果你使用ETL,你就需要提前为这种格式变化和边缘情况配置转换。否则,你将需要为每一个边缘情况停止并修改ETL过程。这可能会导致相当大的维护成本。
- 缓慢:你可能需要等到所有的转换完成后才能将数据加载到仓库。
- 持续维护。如前所述,你可能需要不断地维护ETL流程,以确保它与你不断变化的输入源保持同步。
- 高初始成本。建立ETL流程的初始成本可能很高,因为你可能需要定义你的项目所需的流程和转换。
什么是ELT?

图片来源。Malsha Ranawaka
从ETL到ELT的转换是随着2个重大的转变而产生的。
- 非结构化数据的使用增加
- 以及最近基于云的存储系统的普及(和成本降低)。
转换非结构化数据,如图像、音频和视频,可能需要大量的时间。这可能会减慢ETL的进程。因此,数据首先被存储在存储系统中,以便在需要时进行转换。
向ELT的转变主要由云存储技术支持,如数据仓库和数据湖。这些存储系统支持存储非结构化数据和执行快速和大规模的数据转换。
ELT的优势
- 快速:在ELT过程中,不涉及等待。最好的ELT工具会立即将数据加载到你的数据仓库中,在那里他们已经准备好进行转换。
- 灵活。鉴于转换不需要在一开始就被定义,你可以很容易地将新的和不同的数据源整合到ELT过程中。
- 低初始成本。ELT工具可以很容易地实现数据入库过程的自动化。由于你不需要定义转换,与ETL相比,初始成本更低。
- 最小的维护。与ETL相比,你的维护工作会更少,因为这个过程更简单,更自动化。由于转换是过程中的最后一步,所以更容易修复转换管道中的错误。与ETL不同,你可以只重新运行更新的转换,以获得正确的输出。
- **高可扩展性。**如果你使用的数据量增加,你可以迅速扩大你在云中的存储。ELT流程可以很容易地适应这种情况,并管理大规模的数据摄入,而ETL流程可能需要重新定义。
ELT的劣势
- 数据安全风险。当把大量的原始数据加载到你的存储中时,数据安全可能是一个问题。为了尽量减少安全风险,你需要管理用户和应用程序对存储在数据仓库的原始数据的访问。
- 对数据安全协议的遵守程度低。由于数据在存储时的处理量很小,你可能需要采取额外的措施来确保符合数据安全协议。许多数据仓库有内置的安全协议,包括GDPR,HIPAA和SOC2,以支持数据合规性。
什么时候应该使用ELT而不是ETL?
现在你知道了ETL和ELT之间的区别,你可能想知道哪个是最适合你的选择。
以下是一些使用ELT会给你带来更好结果的实际使用案例。
- 当你有成堆的数据需要处理时。如果你的项目有大量的数据需要加载和分析,你会从使用ELT中受益。与ETL相比,用ELT在一个地方收集你的数据将花费更少的时间。在加载后,ELT将使用云存储中的快速处理能力来执行你的数据转换。
- 当你需要快速存储数据时。与使用ETL相比,ELT工具可以在更短的时间内收集你所有的原始数据。
- 当你需要原始历史数据用于未来分析时。如果你的企业将从分析数据的趋势中受益,你可能需要保留原始的历史数据在手。由于ELT将你所有的原始数据存储在数据仓库中,你将不必在分析期间重新加载数据。
- 当你需要一个灵活的数据整合过程。如果你的公司有经常变化的数据源和格式,ELT将创建一个灵活的流程来满足这些要求。
总结
ETL和ELT都将以不同的方式为您的数据集成目的服务。选择最适合你的解决方案可能取决于各种因素,例如。
- 你拥有的数据
- 你使用的存储类型
- 和你的业务的长期需求