你真的了解ELT和ETL吗?

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 你真的了解ELT和ETL吗?

ETL 和 ELT 有很多共同点,从本质上讲,每种集成方法都可以将数据从源端抽取到数据仓库中,两者的区别在于数据在哪里进行转换。 接下来,我们一起详细地分析一下 ETL 和 ELT各自的优缺点,看看在你们现在的业务中用哪种方式处理数据比较合适。

01 ETL

ETL - 抽取、转换、加载

从不同的数据源抽取信息,将其转换为根据业务定义的格式,然后将其加载到其他数据库或数据仓库中。另一种 ETL 集成方法是反向 ETL,它将结构化数据从数据仓库中加载到业务数据库中,如我们常用数据仓库加工好的报表,推送到报表系统的数据库中。

02 ELT

ELT - 抽取、加载、转换

同样的从一个或多个数据源中抽取数据,然后将其加载到目标数据仓库中,此时不需要进行数据格式的转换。在 ELT 过程中,数据的转换发生在目标数据仓库中。ELT 对远程资源的要求较少,只需要它们的原始数据即可。

03 ELT的演变

ELT 已经存在了一段时间,但 Hadoop 等大数据技术出现后,更加活跃了。像以前转换 PB 级原始数据这样的大型任务无法处理,现在可以被分成小作业,进行处理,然后再加载到目标数据库中。同时,处理能力也提高了,尤其是以私有云集群的方式,把处理、加工数据可以在一个数据仓库中完成了。

04 ELT的工作原理

与 ETL 不同,ELT是从多个数据源收集信息,将其加载到数据仓库(或者数据湖)中,然后将其转换为可操作的商业智能的过程。

抽取——在ELT和ETL两种数据管理方法中的原理相似。一般我们会采用增量抽取,对于一些维表数据量比较小的也会采用全量抽取。

加载——这是 ELT 和 ETL 开始不同的地方了。ELT 不是在抽取大量原始数据的过程中将其转换,而是将所有数据都加在到湖仓中,然后统一进行转换,这样做加快了抽取的效率,但也意味着数据变得有用之前还有很多工作要做。

转换——数据湖或数据仓库对数据进行规范化,将部分或全部数据保留在湖仓中,并可用于定制报告。存储海量数据的开销更高,但也是为了后续能够更加快速的进行数据挖掘和报表展现,也就是我们常说的用空间换时间。

05 什么时候我们选择ELT

这取决于公司现有的网络和技术架构、预算以及它已经利用云和大数据技术的程度。如果是有下面三个需求场景时,那么ELT就是正确的选择~

1. 当抽取速度是第一选择时

因为 ELT 不必等待数据在抽取过程中进行转换后再加载,那么抽取过程要快得多。

2. 当需要随时访问原始数据时

有很多场景,我们需要保留所有历史数据,分析师可以根据时间、销售模式、季节性趋势或任何对业务变得重要的新兴指标进行挖掘。由于数据在加载之前未进行转换,因此您可以访问所有原始数据。比如,数据仓库一般都有一个原始数据层,很多数据科学家更喜欢访问原始数据,而业务用户更喜欢使用分析后的应用层或者模型层数据。

3. 当需要随时可扩展数据湖仓时

当您使用 Hadoop 或云数据仓库等数据处理引擎时,ELT 可以利用本机处理能力实现更高的可扩展性。

06 数据湖是不是很好的ELT落脚点

首先,我们思考一下数仓为什么会出现?其实是数据量的飞速增长,以至于当时的数据存储计算引擎,不能很好的满足分析需求;于是数仓概念和经典的理论出现了,很好的解决了当时的问题,用“规范+存储”来解决了当时的问题。

那么现在大数据时代,随着技术的不断发展,很多新技术出现了,大批量的存储和计算不再是那么难了,那么我们放弃数仓那一套是否可行呢?从一哥现在处理的业务看,如果你的业务系统相对较单一,没有几十个业务系统每天往数仓里灌数据,那么数据湖可以满足你的需求,并且对于“数据驱动”更“敏捷”。如果一线的业务系统较复杂,那么现在使用数据湖也会一不小心会变成“数据沼泽”。

数据湖治理策略没有明确前,还不要急着就上数据湖,并不是适用于每个公司的业务场景的!

07 结语

ELT和ETL都有各自的应用场景,可以说现在大数据环境下,很多已经是ELT架构了,所以这也是我近几年一直不看好很多厂商在推“拖拉拽”的ETL工具或者平台,未来肯定是需要一种通用语言来实现所有的ELT过程。

同样,数据湖是趋势,但现在依然不成熟,不要看网上很多一线大厂的技术文章中提到了很多数据湖的概念和技术应用,但是请结合自己公司的业务场景,暂时先谨慎选择!

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
数据采集 SQL 分布式计算
常用的数据集成ETL工具有哪些?
六种常用的数据集成ETL工具
常用的数据集成ETL工具有哪些?
|
3月前
|
存储 SQL 大数据
深入解析实时数仓Doris:三大数据模型详解
深入解析实时数仓Doris:三大数据模型详解
|
4月前
|
SQL 存储 JSON
Flink+Paimon+Hologres 构建实时湖仓数据分析
本文整理自阿里云高级专家喻良,在 Flink Forward Asia 2023 主会场的分享。
|
消息中间件 分布式计算 BI
ETL和ELT到底有啥区别???
ETL和ELT到底有啥区别???
|
SQL 存储 自然语言处理
数据导入与预处理-第6章-01数据集成
数据导入与预处理-第6章-01数据集成 1 数据集成概述 1.1 数据集成需要关注的问题 2 基于Pandas实现数据集成
数据导入与预处理-第6章-01数据集成
|
存储 SQL 数据采集
ETL 为什么经常变成 ELT 甚至 LET?
ETL是将数据从来源端经过清洗(extract)、转换(transform)、加载(load)至目的端的过程。正常的 ETL 过程应当是 E、T、L 这三个步骤逐步进行,也就是先清洗转换之后再加载进目标端(通常是数据库),最后在数据库中的只是合理的结果数据。这个过程本来很合理,但实际过程中经常被执行成ELT甚至LET,即源端数据先装载进目标库再进行清洗和转换。
160 0
ETL 为什么经常变成 ELT 甚至 LET?
|
存储 流计算
【实时数仓篇】(02)基于 Flink 的典型 ETL 场景实现2
【实时数仓篇】(02)基于 Flink 的典型 ETL 场景实现2
238 0
【实时数仓篇】(02)基于 Flink 的典型 ETL 场景实现2
|
存储 运维 OLAP
【实时数仓篇】(02)基于 Flink 的典型 ETL 场景实现1
【实时数仓篇】(02)基于 Flink 的典型 ETL 场景实现1
478 0
【实时数仓篇】(02)基于 Flink 的典型 ETL 场景实现1
|
数据采集 OLTP 数据库
|
SQL 消息中间件 算法
Flink CDC 如何简化实时数据入湖入仓
本文整理自云邪、雪尽在 Flink Forward Asia 2021 的分享,该分享以 5 个章节详细介绍如何使用 Flink CDC 来简化实时数据的入湖入仓, 文章的主要内容如下: 1. Flink CDC 介绍 2. Flink CDC 的核心特性 3. Flink CDC 的开源生态 4. Flink CDC 在阿里巴巴的实践与改进 5. Flink CDC 的未来规划
10220 2
Flink CDC 如何简化实时数据入湖入仓