ELT已死,EtLT才是现代数据处理架构的终点!

news2024/10/4 15:38:15

file

提到数据处理,经常有人把它简称为“ETL”。但仔细说来,数据处理经历了ETL、ELT、XX ETL(例如,Reverse ETL、Zero-ETL)到现在流行的EtLT架构几次更迭。目前大家使用大数据Hadoop时代,主要都是ELT方式,也就是加载到Hadoop里进行处理,但是实时数据仓库、数据湖的流行,这个ELT已经过时了,EtLT才是实时数据加载到数据湖和实时数据仓库的标准架构。

本文主要讲解下几个架构出现的原因和擅长的场景及优缺点,以及为什么EtLT逐步取代了ETL、ELT这些常见架构,成为全球主流数据处理架构,并给出开源实践方法。

ETL时代(1990-2015)

在数据仓库早期时代,数据仓库提出者Bill Inmmon把数据仓库定义为分主题的存储和查询的数据存储架构,数据在存储时就是按主题分门别类清洗好的数据。而实际情况也如此,大部分数据源是架构化数据源(例如,mysql、Oracle、SQLServer、ERP、CRM等等),而作为数据集中处理的数据仓库大部分还是以OLTP时代查询和历史存储为主的数据库(DB2、Oracle),因此数据仓库在面对复杂ETL处理时并不得心应手。而且这些数据库购买成本都比较高,处理性能较弱,同时,各种各样的软件数据源越来越多。为了更方便地整合复杂的数据源、分担数据计算引擎负担、大量的ETL软件出现,大家耳熟能详的Informatica、Talend、Kettle都是那个年代的典型软件产品,很多软件至今还在很多企业的传统架构当中配合数据仓库使用。

file

优点:技术架构清晰、复杂数据源整合顺畅、ETL软件分担接近50%的数据仓库工作

缺点:所有处理都由数据工程师实现,业务需求满足时间较长;硬件成本几乎投入双份,数据量大时硬件成本过高

在数据仓库早期和中期,数据源复杂性比较高的时候,ETL架构几乎成为行业标准流行了20多年。

ELT时代(2005-2020)

随着数据量越来越大,数据仓库的硬件成本与ETL硬件成本双向增长,而新的MPP技术、分布式技术出现导致在数据仓库中后期和大数据兴起时代,ETL的架构逐步走向ELT架构。例如,当年数据仓库最大厂商Teradata、至今流行的Hadoop Hive架构,都是ELT架构。它们的特点就是,将数据通过各种工具,几乎不做join,group等复杂转化,只做标准化(Normolization)直接抽取到数据仓库里数据准备层(Staging Layer),再在数据仓库中通过SQL、H-SQL,从数据准备层到数据原子层(DWD Layer or SOR Layer);后期再将原子层数据进入汇总层(DWS Layey or SMA Layer),最终到指标层(ADS Layer or IDX Layer)。虽然Teradata面向的结构化数据,Hadoop面向非结构化数据,但全球大数据和数据仓库几乎用的同一套架构和方法论来实现3-4层数据存储架构。 file

优点:利用数据仓库高性能计算处理大数据量处理,硬件ROI更高;同时,复杂业务逻辑可以通过SQL来用数据分析师和懂业务逻辑的技术人员来处理,而无需懂ETL(如Spark, MapReduce)降低数据处理人员总成本。

缺点:只适用于数据源比较简单、量比较大的情况,面对复杂的数据源明显处理方式不足;同时直接加载,数据准备层到数据原子层复杂度过高,无法通过SQL处理,往往利用Spark、MapReduce处理,而数据重复存储率较高;无法支持实时数据仓库等需求。

面对ELT的数据仓库无法加载复杂数据源,实时性比较差的问题,曾经有一个过渡性解决方案被各种公司方法采用,叫做ODS(Operational Data Store)方案。将复杂的数据源通过实时CDC或者实时API或者短时间批量(Micro-Batch)的方式ETL处理到ODS存储当中,然后再从ODS ELT到企业数据仓库当中,目前,还有很多企业采用此种方式处理。也有部分企业,把ODS放置在数据仓库当中,通过Spark、MapReduce完成前期的ETL工作,再在数据仓库(Hive、Teredata、Oracle、DB2)当中完成后期的业务数据加工工作。 file

其实此时,EtLT初期的人群已经形成,它的特点是人群划分开,复杂的数据抽取、CDC、数据结构化、规整化的过程,往往由数据工程师实现,我们叫做小“t”,它的目标是从源系统到数据仓库底层数据准备层或者数据原子层;而复杂的带有业务属性的数据原子层到数据汇总层到数据指标层的处理(带有Group by、Join等复杂操作)往往是擅长使用SQL的业务数据工程师或者数据分析师来处理。 而ODS架构的独立项目也随着数据量级变大和EtLT架构的出现逐步淡出历史舞台。

EtLT (2020-未来)

EtLT的架构是由James Densmore 在《Data Pipelines Pocket Reference 2021》中总结提到的一个现代全球流行的数据处理架构。EtLT也是随着现代数据架构(Modern Data Infrastructure)变化而产生的。

EtLT架构产生的背景

现代数据架构架构有如下特点 ,导致EtLT架构出现:

  • 云、SaaS、本地混合复杂数据源
  • 数据湖与实时数据仓库
  • 新一代大数据联邦(Big Data Federation)
  • AI应用大爆发
  • 企业数据社群(Data Community)分裂

复杂数据源出现

现在全球企业运行当中,除了传统的软件、数据库之外,云和SaaS的出现将本已经很复杂的数据源情况更加复杂,于是面对SaaS的处理,北美企业提出了新的数据集成(Data Ingestion)的概念,例如 Fivetran,Airbyte,以解决SaaS数据进入数据仓库(例如Snowflake)当中的ELT问题,它是传统ELT架构在SaaS环境下的升级。而云端数据存储(例如,AWS Aruroa,AWS RDS,MongoDB Service等)和传统线下数据库与软件(SAP、Oracle、DB2等)在混合云架构(Hybrid Cloud)也在迅速增加数据源复杂性。传统的ETL和ELT架构就无法满足如此复杂环境的数据源处理。

数据湖与实时数据仓库

在现代数据架构环境下,数据湖的出现融合了传统的ODS和数据仓库的特点,它可以做到贴源的数据变更和实时数据处理(例如 Apache Hudi, Apache Iceberg,Databricks Delta Lake),针对传统的CDC(Change Data Capture)和实时数据流计算都做了数据存储结构变化(Schema Evolution)和计算层面的支持。同时,实时数据仓库理念出现,很多新型计算引擎(Apache Pinnot、ClickHouse、Apache Doris)都将支持实时ETL提上日程。而传统的CDC ETL软件或者实时计算流计算(Datastream Computing)对于数据湖和实时数据仓库的支持,要么是在新型存储引擎支持要么是在新型数据源连接方面存在很大问题,缺乏很好的架构和工具支持。

新一代大数据联邦

在现代数据架构当中还有一种新型架构出现,它们以尽可能减少数据在不同数据存储间流动,直接通过连接器或者快速数据加载后直接提供复杂数据查询而见长,例如 Starburst的TrinoDB(前PrestDB)和基于Apache Hudi的OneHouse。这些工具都以数据缓存以及即席跨数据源查询为目标,各种ETL、ELT工具亦无法支撑新型的Big Data Federation架构。

大模型大爆发

随着2022年ChatGPT的出现,AI模型已经具备在企业应用中普及的算法基础,阻碍AI应用模型落地的更多的是数据的供给,数据湖和Big Data Federation出现解决了数据存储和查询问题。而数据供给侧,传统的ETL和ELT和流计算都形成了瓶颈,亦或无法快速打通各种复杂传统、新兴数据源、亦或无法用一套代码同时支持AI训练和AI线上的数据差异化需求。

企业数据社群分裂

随着数据驱动和使用的深入,企业内部的数据使用者也快速增加,从传统的数据工程师到数据分析师、AI人员甚至销售分析师、财务分析师都有从企业数据仓库当中提取数据的需求。因此,经历了No-SQL,New-SQL各种变化之后,SQL还是成为企业最后面对复杂业务分析的唯一标准。大量分析师、业务部门工程师使用SQL来解决企业数据最后一公里的问题,而复杂的非结构化数据处理,留给了专业数据工程师使用Spark、MapReduce、Flink处理。因此,两批人群的需求产生了比较大的差异,传统ETL,ELT架构无法满足新型企业使用者的需求。

EtLT架构应运而生!

在上述背景下,数据处理逐步演化成为EtLT架构: file

它拆分了原有ETL和ELT的结构,并力求实时和批量统一在一起处理以满足实时数据仓库和AI应用的需求:

  • E(xtract)抽取:从数据源角度来看,支持传统的线下数据库、传统文件、传统软件同时,还要支持新兴云上数据库、SaaS软件API以及Serverless数据源的抽取;从数据抽取方式来看,需要支持实时CDC(Change Data Capture)对数据库Binlog日志的解析,也要支持实时计算(例如Kafka Streaming),同时也需要支持大批量数据读取(多线程分区读取、限流读取等)。
  • t(ransform)规范化:相对于ETL和ELT,EtLT多出了一个小t,它的目标是数据规范化(Data Normalization)将复杂、异构的抽取出来数据源,快速地变为目标端可加载的结构化数据,同时,针对CDC实时加载Binlog进行拆分、过滤、字段格式变更,并支持批量和实时方式快速分发到最终Load阶段。
  • L(oad)加载:准确的说,加载阶段已经不是简单的数据加载,而是配合Et阶段,将数据源的数据结构的变更、数据内容的变更以适合数据目标端(Data Target)的形式快速、准确的加载到数据目标当中,其中,对于数据结构的变化要支持同源数据结构变更(Schema Evolution),数据加载也应该支持大批量加载(Bulk Load)、SaaS加载(Reverse ETL)、JDBC加载等。确保既支持实时数据和数据结构的变化,还要支持大批量数据快速加载。
  • (T)ransform转化:在云数据仓库、线下数据仓库或新数据联邦的环境下,完成业务逻辑的加工,通常使用SQL方式,实时或批量地将复杂业务逻辑准确、快速变为业务端或者AI端使用的数据。

在EtLT架构下,使用者人群也有了明确的分工:

  • EtL阶段:以数据工程师为主,他们将复杂异构的混合数据源,变为数据仓库或者数据联邦可加载的数据,放到数据存储当中,他们无需对企业指标计算规则有深入理解,但需要对各种源数据和非结构化数据变为结构化数据转化有深入理解。他们需要确保的是数据的及时性、数据源到结构化数据的准确性。
  • T阶段:以数据分析师、各业务部门数据SQL开发者、AI工程师为主,他们深刻理解企业业务规则,可以将业务规则变为底层结构化数据上的SQL语句进行分析统计,最终实现企业内部的数据分析和AI应用的实现,他们需要确保的是数据逻辑关系、数据质量以及最终数据结果满足业务需求。

    EtLT 架构开源实践

在新兴的EtLT架构下,其实全球有不少开源实践,例如在大T部分,DBT帮助企业分析师和业务开发者快速基于Snowflake开发相关数据应用。而以大数据任务可视化调度协同(Workflow Orchestration)见长的Apache DolphinScheduler也在规划Task IDE,让企业数据分析师可以在DolphinScheduler上直接调试Hudi、Hive、Presto、ClickHouse等的SQL任务并直接拖拽生成Workflow任务。 作为EtLT架构当中代表Apache SeaTunnel则是从云、本地数据源多种支持开始起步,逐步支持SaaS和Reverse ETL,大模型数据供给等方面,逐步完善EtLT的版图,可以看到SeaTunnel最新的Zeta计算引擎把复杂的Join,Groupby等复杂操作交给最终的数据仓库端来实现,自己只完成归一化、标准化的动作以达到实时数据和批量数据一套代码和高效引擎处理的目标,而大模型支持也放入支持列表当中: file

目前Apache SeaTunnel从2022年底加入Apache孵化器的20个连接器发展到现在1年增长了5倍,目前支持的数据源超过100(https://seatunnel.apache.org/docs/Connector-v2-release-state/),从传统数据库到云上数据库最终到SaaS的支持都在逐步完善。

file

(参见https://seatunnel.apache.org/docs/2.3.2/category/source-v2浏览最新支持组件)

而Apache SeaTunnel 2.3.0 发布的SeaTunnel Zeta引擎也支持数据分布式CDC,目标源数据表变更(SchemaEvolution)和整库和多表同步诸多Feature和针对大数据量优异的性能赢得全球大量用户(例如,印度第二大运营商Bharti Airtel,新加坡电商Shopee.com,唯品会Vip.com等)。相信随着Connector数据量增多,SeaTunnel会赢得更多的企业用户的青睐。

大模型的支持

更有意思的是现在SeaTunnel已经支持了对大模型训练和向量数据库的支撑,让大模型可以直接和SeaTunnel支撑的100多种数据源交互(参见《图书搜索领域重大突破!用 Apache SeaTunnel、Milvus 和 OpenAI 提高书名相似度搜索精准度和效率》),而现在SeaTunnel更可以利用ChatGPT直接生成SaaS Connector让你的大模型和数据仓库快速获取互联网上多种信息。

随着AI、云、SaaS的复杂性增加,企业对于实时CDC、SaaS和数据湖、实时数据仓库装载的需求,简单的ETL架构已经很难满足现有企业的需求,而具有面向企业不同阶段的EtLT架构会在现代数据架构当中大放异彩。

而Apache SeaTunnel的目标就是是“连接万源,同步如飞”。

SeaTunnel社区非常活跃,当前版本也在快速迭代,加入Apache SeaTunnel社区,当前2.3.x版本还有不少地方在快速变化,也欢迎大家一起来贡献!

本文由 白鲸开源科技 提供发布支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/953114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Talk | SIGGRAPH‘23 Best Paper徐瑞:全局一致点云法向估计、特征保持的点云重建

本期为TechBeat人工智能社区第526期线上Talk! 北京时间8月30日(周三)20:00,山东大学硕士生—徐瑞的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “全局一致点云法向估计、特征保持的点云重建”,他以全局一致点云…

邮件群发的功能特性

自动切换IP登录多账户发送 保证第三方发件邮箱系统发送成功率 由于第三方免费邮箱如同个IP登录多个163账号会造成被屏蔽的问题,我们采用自动拨号vps的方式可全国多个地区自动拨号切换IP,自动保证每个账号同时只登录一个账号发送,更可以多种类型小号混合…

kvm虚拟机开启VNC功能

停止kvm虚拟机 virsh shutdown 虚拟机名称 在kvm虚拟机配置文件里面添加如下内容 <graphics typevnc port-1 autoportyes listen0.0.0.0 keymapen-us passwd123456> 启动kvm虚拟机 virsh start 虚拟机名称 得到虚拟机进程id ps -ef|grep 虚拟机名称 得到虚拟机vnc…

DolphinDB 加入 NVIDIA 初创加速计划

近日&#xff0c;DolphinDB 正式加入“NVIDIA 初创加速计划&#xff08;NVIDIA Inception&#xff09;”&#xff0c;该项目是 NVIDIA 提供的一个加速创业公司发展的全球生态项目&#xff0c;为免费会员制&#xff0c;旨在培养颠覆行业格局的优秀创业公司。 DolphinDB 专注于为…

Qt基础开发_窗口切换常见的场景与实现方法

一、前言介绍 在Qt软件开发过程中,窗口切换是一个非常常见的需求。一般切换窗口可以分为3种情况。 【1】独立窗口切换:例如,在一个登录界面中,用户输入正确的用户名和密码后,需要切换到主界面窗口。就像QQ登录、微信登录一样,登录成功之后,就关闭登录界面,弹出了一个…

电脑设备管理器在哪?学会这3招,轻松找到!

“有没有朋友知道电脑的设备管理器在哪里呀&#xff1f;找了好久都找不到&#xff0c;希望大家能帮帮我&#xff01;非常感谢&#xff01;” 电脑设备管理器是Windows操作系统中一个重要的工具&#xff0c;用于管理硬件设备&#xff0c;安装、更新、卸载驱动程序以及解决硬件相…

Tomcat安装及配置教程-Windows

一,安装 1,打开官网,https://tomcat.apache.org/,选择Tomcat 8.5.93版本,点击Download,根据系统版本选择压缩包 2,下载完毕,将压缩包解压,将所有文件放在本地D盘 二:运行 1,启动服务,进入tomcat目录D:\apache-tomcat-8.5.93\bin,双击startup.bat,出现黑色窗口,注意不要关闭 2…

TL6478(TI TMS320C6748 DPS)第一讲:串口终端ZOC软件的安装

串口终端ZOC软件的安装 1、软件获得2. 安装软件3. 软件设置1、软件获得 zoc602串口工具下载地址: https://download.csdn.net/download/Windgs_YF/88279060 2. 安装软件 1、将zoc602.zip文件解压,双击解压目录中的zoc602.exe安装文件,弹出如下安装界面: 2、点击 Next,…

【Redis】Redis 的学习教程(七)之 SpringBoot 集成 Redis

在前几篇文章中&#xff0c;我们详细介绍了 Redis 的一些功能特性以及主流的 java 客户端 api 使用方法。 在当前流行的微服务以及分布式集群环境下&#xff0c;Redis 的使用场景可以说非常的广泛&#xff0c;能解决集群环境下系统中遇到的不少技术问题&#xff0c;在此列举几…

C++信息学奥赛1182:合影效果

#include <bits/stdc.h> using namespace std;int main() {int n; // 人数cin >> n;string arr[n]; // 存储性别的数组double brr[n]; // 存储身高的数组// 读取每个人的性别和身高for (int i 0; i < n; i){cin>>arr[i]>>brr[i];}// 对男…

JavaScript Web APIs - 06 正则表达式

Web APIs - 06 文章目录 Web APIs - 06正则表达式正则基本使用元字符边界符量词范围字符类 替换和修饰符正则插件change 事件判断是否有类 目标&#xff1a;能够利用正则表达式完成小兔鲜注册页面的表单验证&#xff0c;具备常见的表单验证能力 正则表达式综合案例阶段案例 正…

Kafka系列一消息队列

文章首发于个人博客&#xff0c;欢迎访问关注&#xff1a;https://www.lin2j.tech 消息队列是分布式系统中的重要组件&#xff0c;也是 Java 开发中常用的技术点之一。 使用消息队列可以解决模块间的解耦、流量削峰、异步消息&#xff0c;提高系统的可用性、稳定性以及性能。…

Python编程——深入了解不可变的元组

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 本文专栏&#xff1a;Python专栏 专栏介绍&#xff1a;本专栏为免费专栏&#xff0c;并且会持续更新python基础知识&#xff0c;欢迎各位订阅关注。 目录 一、元组是什么 二、元组的定义 1、相同类型组成元组…

如何利用 SmartX 存储性能测试工具 OWL 优化性能管理?

作者&#xff1a;深耕行业的 SmartX 金融团队 张瑞松 运维人员在日常管理集群时&#xff0c;有时难免会产生这样的困惑&#xff1a; 新业务准备上线&#xff0c;在具备多套存储的情况下&#xff0c;应如何选择承载业务的存储环境&#xff1f; 业务虚拟机刚上线时运行速度很快…

<algorithm> 头文件

头文件是 C 标准库中的一个头文件&#xff0c;提供了许多常用的算法函数。除了 erase 之外&#xff0c; 头文件还包含了以下一些重要的函数&#xff1a; 1、排序算法&#xff1a; sort&#xff1a;对容器进行排序。 #include <iostream> #include <algorithm> #…

基于Android的旅游管理系统 微信小程序

随着网络科技的发展&#xff0c;移动智能终端逐渐走进人们的视线&#xff0c;相关应用越来越广泛&#xff0c;并在人们的日常生活中扮演着越来越重要的角色。因此&#xff0c;关键应用程序的开发成为影响移动智能终端普及的重要因素&#xff0c;设计并开发实用、方便的应用程序…

百度文心一率先言向全社会开放 应用商店搜“文心一言”可直接下载

8月31日&#xff0c;文心一言率先向全社会全面开放。广大用户可以在应用商店下载“文心一言APP”或登陆“文心一言官网”&#xff08;https://yiyan.baidu.com&#xff09; 体验。同时&#xff0c;企业用户可以直接登录百度智能云千帆大模型平台官网&#xff0c;调用文心一言能…

IntelliJ IDEA中代码提示功能不见了

IntelliJ IDEA中代码提示功能不见了&#xff1f;试试这几个方法&#xff01; 在我们敲代码的时候&#xff0c;环境中的代码提示功能非常强大且方便。但是这突如其来的问题纠结我两天&#xff0c;不给提示&#xff0c;不给引包&#xff0c;连个错他妹的也不给报。 第一种情况&…

Texlive2023与Texstudio2023卸载与安装(详细全程)

早在两年前安装了texlive2020&#xff0c;最近重新使用总是报错&#xff0c;好像是因为版本过低。我就找了个时间更新一下texlive版本&#xff0c;全程如下。 1、卸载texlive老版本 1&#xff09;找到texlive目录&#xff0c;比如我的是D:\texlive\2022\tlpkg\installer&…

[linux实战] 华为云耀云服务器L实例 Java、node环境配置

系列文章目录 第一章 [linux实战] 华为云耀云服务器L实例 Java、node环境配置 文章目录 系列文章目录前言一、任务拆解二、修改密码三、配置安全规则四、远程登录并更新apt五、安装、配置JDK环境5.1、安装openjdk,选择8版本5.2、检查jdk配置 六、安装、配置git6.1、安装git6.2…