ETL与ELT理解

2023-09-16 15:33:39

ETL

ETL( Extract-Transform-Load),用来描述将数据从来源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程。ETL模式适用于小数据量集。如果在转换过程中需要处理的数据量达到千万上亿或者P级与E级,那么ETL整个流程所需的耗时肯定会很长。
请添加图片描述

ETL的流程:

  1. 首先从源端拉取数据,这个过程就是Extract。例如:sqoop,datax等数据同步工具就是Extract抽取数据。
  2. 当从源端拉取数据后,并没有直接灌入到目标表,可以理解成是先放到一个缓冲区,在这个区域内进行一些符合目标系统标准的预处理,比如我们建设数仓的时候对于数据同步后会把一些空值置为一些默认值,以此来保障数据完整性,对于不同源端的同一种含义的字段信息会进行统一格式转换,对于敏感数据会进行加密等等这些操作,一般是在入仓之前处理掉的。大家也可以当作是在ODS层。
  3. 当预处理完之后,将数据写入到目标系统中,那么这个时候也就是真正的入仓,也就是说数仓中的数据都是要符合数仓标准的。

ETL转化Transform主要体现:

  • 空值处理:可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。
  • 规范化数据格式:可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。
  • 拆分数据:依据业务需求对字段可进行分解。
  • 验证数据正确性:可利用Lookup及拆分功能进行数据验证。
  • 数据替换:对于因业务因素,可实现无效数据、缺失数据的替换。
  • Lookup:查获丢失数据 Lookup实现子查询,并返回用其他手段获取的缺失字段,保证字段完整性。
  • 建立ETL过程的主外键约束:对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键唯一记录的加载。

ETL架构的优势

  • ETL可以分担数据库系统的负载(采用单独的硬件服务器)。
  • ETL相对于EL-T架构可以实现更为复杂的数据转化逻辑。
  • ETL采用单独的硬件服务器。
  • ETL与底层的数据库数据存储无关。

ELT

ELT( Extract-Load-Transform),在ELT架构中,数据的整个加工过程都在目标和源的数据库之间流动,ELT协调相关的数据库系统来执行相关的应用,数据加工过程既可以在源数据库端执行,也可以在目标数据仓库端执行(主要取决于系统的架构设计和数据属性)。当ETL过程需要提高效率,则可以通过对相关数据库进行调优,或者改变执行加工的服务器就可以达到。一般数据库厂商会力推该种架构,像Oracle和Teradata都极力宣传ELT架构。
在这里插入图片描述

在这里插入图片描述

ELT的流程:

1、源端数据抽取和ETL中的E作用一样,即从源端系统抽取数据。
2、加载流程就和ETL不一样了,T和L进行了位置置换,这里是先加载到目标系统,大家也可以理解成是数据入了数仓。
3、当数据入了仓之后,再进行T操作,也就是进行转换。也就是说数据转换标准化操作由缓冲区转移到了仓中进行。

ELT架构的优势

  • ELT主要通过数据库引擎来实现系统的可扩展性(尤其是当数据加工过程在晚上时,可以充分利用数据库引擎的资源)。
  • ELT可以保持所有的数据始终在数据库当中,避免数据的加载和导出,从而保证效率,提高系统的可监控性。
  • ELT可以根据数据的分布情况进行并行处理优化,并可以利用数据库的固有功能优化磁盘I/O。
  • ELT的可扩展性取决于数据库引擎和其硬件服务器的可扩展性。
  • 通过对相关数据库进行性能调优,ETL过程获得3到4倍的效率提升一般不是特别困难。

ETL与ELT的区别

在实际场景中这两种模式普遍是共存的。只是针对不同的场景选择不同的模式来解决而已。对于小数据量集而且转换过程不会过于耗时的场景可以采取ETL处理,例如使用sqoop同步数据,日志采集过程当中直接清洗数据这类场景;对于数据体量较大而且转换逻辑比较复杂的场景可以采取ELT处理,例如前面提到的数据加密场景。目前比较火的数据湖和中台的建设多数是以ELT模式开展的。
在这里插入图片描述

更多推荐

【性能测试】JMeter:集合点,同步定时器的应用实例!

一、集合点的定义在性能测试过程中,为了真实模拟多个用户同时进行操作以度量服务器的处理能力,可以考虑同步虚拟用户以便恰好在同一时刻执行操作或发送请求。通过插入集合点可以较真实模拟多个用户并发操作。(注意:虽然通过加入集合点可以约束请求同时发送,但不能确保请求同时到达服务器,所以只能说是较真实模拟并发)在JMeter中可以

Android SurfaceFlinger导读(03)MessageBase

该系列文章总纲链接:AndroidGUI系统之SurfaceFlinger系列文章目录说明:关于导读:导读部分主要是方便初学者理解SurfaceFlinger代码中的机制,为后面分析代码打下一个更好的基础,这样就可以把更多的精力放在surfaceFlinger的业务逻辑分析上。关于代码分支:以下代码分析均在androi

用Jmeter进行压测详解

简介:1.概述一款工具,功能往往是很多的,细枝末节的地方也很多,实际的测试工作中,绝大多数场景会用到的也就是一些核心功能,根本不需要我们事无巨细的去掌握工具的所有功能。所以本文将用带价最小的方式讲解如何快速上手使用jmeter来进行压测。JMeter,一款接口测试工具,是Java程序,需要JDK环境,建议使用JDK8或

GaussDB技术解读系列:高级压缩之OLTP表压缩

8月16日,第14届中国数据库技术大会(DTCC2023)在北京国际会议中心顺利举行。在GaussDB“五高两易”核心技术,给世界一个更优选择的专场,华为云数据库GaussDB首席架构师冯柯对华为云GaussDB数据库的高级压缩技术进行了详细的解读。GaussDB高级压缩全景高级压缩是面向业务全场景的数据库压缩解决方案

优橙内推天津专场——5G网络优化(中高级)工程师

北京电旗通讯技术股份有限公司北京电旗通讯技术股份有限公司(以下简称“电旗”)成立于2001年,是卓越的移动网络工程服务和创新网络智能解决方案供应商,为一级设备供应商,提供包括无线网络及核心网络的规划设计、优化、维护、培训认证及其他相关服务。电旗的总部设在北京,分公司设在北京、台湾、马来西亚、印度和印度尼西亚等四个地区,

《Docker 容器化的艺术:深入理解容器技术》

🌷🍁博主猫头虎(🐅🐾)带您GotoNewWorld✨🍁🐅🐾猫头虎建议程序员必备技术栈一览表📖:🛠️全栈技术FullStack:📚MERN/MEAN/MEVNStack|🌐Jamstack|🌍GraphQL|🔁RESTfulAPI|⚡WebSockets|🔄CI/CD|🌐Git&Versio

Python Functions-函数

目录创建函数调用函数参数还是自变量?参数数量任意参数,*args关键字参数任意关键字参数,**kwargs默认参数值将列表作为参数传递ThepassStatement递归函数是一个只有在被调用时才运行的代码块。可以将称为参数的数据传递到函数中。函数可以作为结果返回数据。创建函数在Python中,函数是使用def关键字定

线程池:神秘的“轻量级线程”

当前我们的多线程部分已经学习了几个代码案例:1.单例模式2.阻塞队列->生产者消费者模型3.定时器4.线程池而线程存在的意义就是,使用进程来实现并发编程会“太重了”,创建和销毁进程都会比较耗资源。但是线程会更加高效。此时,使用多线程就可以在很多时候代替进程来实现并发编程了。但是随着并发程度的提高,随着我们对于性能要求的

【跟小嘉学 Rust 编程】二十九、Rust 中的零拷贝序列化解决方案(rkyv)

系列文章目录【跟小嘉学Rust编程】一、Rust编程基础【跟小嘉学Rust编程】二、Rust包管理工具使用【跟小嘉学Rust编程】三、Rust的基本程序概念【跟小嘉学Rust编程】四、理解Rust的所有权概念【跟小嘉学Rust编程】五、使用结构体关联结构化数据【跟小嘉学Rust编程】六、枚举和模式匹配【跟小嘉学Rust

STM32H5开发(4)----开发板介绍

STM32H5开发----4.开发板介绍套件概述样品申请特征系统控制和生态系统访问功能示意图系统框图跳线设置开发板原理图套件概述STM32H503RBTx_LQFP64是STM32H5系列微控制器的一款出色评估套件,它采用了先进的40nm工艺制造,为开发者提供了卓越的性能和能效。主频高达250MHz的Arm®Corte

华为云CodeArts产品体验的心得体会及想法

文章目录前言CodeArts的产品优势一站式软件开发生产线研发安全Built-In华为多年研发实践能力及规范外溢高质高效敏捷交付功能特性说明体验感受问题描述完结前言华为云作为一家全球领先的云计算服务提供商,致力于为企业和个人用户提供高效、安全、可靠的云服务。在其众多产品中,CodeArts作为一款全新的开发工具集,为开

热文推荐