当前位置: 首页 > news >正文

从ETL与ELT谈起,理解数仓的任务

最近有个朋友,有几十 PB 的异构数据,数据源包括 MySQL、DB2、Oracle、CSV、磁带机,等等,然后他需要把这些数据中的一些信息做关联整合,从这几十 PB 的数据中提取出若干业务字段到数据仓库,做统一分析。

数据载入

他让我推荐数据提取工具,我学习了一下,发现带 GUI 的开源工具里,AirByte 非常不错,界面大方,支持的 Connector 种类丰富。但是,当我深入研究下去发现一个问题,它的文档里居然没有任何从表格里提取出若干列做同步的描述,倒是支持把数据同步到目标库后,再基于 dbt 做自动转换的能力。再一学习才注意到:AirByte 是一个 E-L-T! 工具,而不是一个 ETL 工具!ELT、ETL,一字之差,用途相差万里。

  • E:Extract,指的是从源端拉取数据,可能是一个 SELECT、可能是 BINLOG、可能是一个文本文件读取动作
  • L:Load,指的是把数据装载到数据仓库,通常基于 INSERT 语句实现。
  • T:Transform,指的是对数据做转换。在 ETL 中,T 通常是由负责数据同步的软件来完成,在 ELT 中,这个门道就多了,负责数据同步的软件一定会做 E、L 两个操作,至于后面的 T,在 AirByte 中它提供的解决方案是 dbt,在其它系统里,可能会依赖目标库/湖的其它解决方案,可以非常灵活。

我以前觉得,ELT 是真好,方便多了。数据先入湖,以后随时用随时变换,多方便灵活。嗯,看上去很美。而实际上,对应的麻烦事可真是一大堆!

  • 数据传输成本大增。我朋友的这个案例里,他的原始数据有几十 PB,但是抽取后的目标数据,大概就是百 T 的水平。ETL 只需要传百 T 的数据,而 ELT 则需要传输几十 PB 的数据,百倍的差距。
  • 存储成本大增。全量数据存在目标库里,会有非常大的存储成本。还不敢随便用过期策略。
  • 管理成本大增。因为数据已经入了湖,但是里面大部分是永远用不到的垃圾数据,如何管理这些数据,也是个头疼事。

从这个实际案例我意识到,ETL、ELT 没有好坏之分,用 ETL 还是 ELT,还是要根据业务来选择。浪漫、性感,在成本面前,不值一提。

数仓

另一个直观的感受就是“数仓”的概念很具体了。数仓很大的价值点就是数据归集作用,这个案例里体现得非常明显。

我挺想给他推荐 OceanBase 开源版的,可惜他要求数据全场景加密,TDE(Transparent Data Encryption)必不可少。而这个我们没有开源。

另外就是我们的存储成本还是高,他的场景里,如果数据存在 S3 里,延迟大点也能接受,QPS 非常低,一天也就查几次。这个挺适合 4.4 的场景,但目标的场景不划算。

最后,他这个场景我给他推荐了 Snowflake,S3存储成本很低,QPS 非常低,说不定机器还可以随用随关。

其它

AirByte 不太行,于是看了 Kettle 和 Astera,感觉 Kettle 像是上个时代的产物,没人维护了一样,Astera 感觉可能还可以,但是网站也很老旧,十年前的风格。TapData 商业版看上去还挺不错的,DB2作为数据源都支持,但是,搜下来,发现居然不支持以 Snowflake 作为目标写入!!!!

熬!AirByte,你怎么就不支持 ETL 了呢!你完全可以支持一个 ETLT 呀!

相关文章:

从ETL与ELT谈起,理解数仓的任务

最近有个朋友,有几十 PB 的异构数据,数据源包括 MySQL、DB2、Oracle、CSV、磁带机,等等,然后他需要把这些数据中的一些信息做关联整合,从这几十 PB 的数据中提取出若干业务字段到数据仓库,做统一分析。 数…...

esp32-cam 2. python opencv 拉取摄像头内容

0. 环境 - win10 python3 - pycharm - esp32-cam http://192.168.4.1 1. 创建工程 File -> Create Project -> -> Location: E:\Workspaces\PycharmProjects\esp32cam_opencv -> Create 2. opencv hello 2.1 添加脚本 File -> New -> Python f…...

js之遍历方法

先创建一个数组&#xff0c;然后使用for.in进行遍历&#xff0c;如下图所示sub代表下标并且遍历几次&#xff0c;arr代表数组 <script>let arr [1, 2, 3, 4, 5, 6];for (let sub in arr) {console.log(arr);}</script> 第二种方法则是for循环遍历&#xff0c;根据…...

Elementui的el-footer标签使用报错

Elementui的el-footer标签使用报错 其余标签的使用没有报错信息 el-footer的报错信息 原因: ​ 警告信息表示 Vue 不识别 <el-footer> 解决方式: 在组件中进行引入和暴露...

Ubuntu24.04安装中文输入法

Ubuntu24.04安装中文输入法 为了更好的体验&#xff0c;请访问个人博客 www.huerpu.cc:7000 一、添加中文语言支持 在安装中文输入法之前&#xff0c;首选要添加中文语言支持。选择System&#xff0c;点击Region & Language。 点击Manage Install Languages。 点击Insta…...

八股kafka(一)

目录 1、面试官&#xff1a;Kafka是如何保证消息不丢失 2、面试官&#xff1a;Kafka中消息的重复消费问题如何解决的 3、面试官&#xff1a;Kafka是如何保证消费的顺序性 4、面试官&#xff1a;Kafka的高可用机制有了解过嘛 5、面试官&#xff1a;解释一下复制机制中的ISR 6、面…...

SemCity: 一个应用于真实户外环境场景生成的3D Diffusion模型

论文标题&#xff1a; SemCity: Semantic Scene Generation with Triplane Diffusion 论文作者&#xff1a; Jumin Lee1, Sebin Lee1, Changho Jo, Woobin Im, Juhyeong Seon, Sung-Eui Yoon 项目地址&#xff1a;https://sglab.kaist.ac.kr/SemCity/ 前言&#xff1a; 该论…...

鸿蒙内核源码分析(互斥锁篇) | 互斥锁比自旋锁丰满多了

内核中哪些地方会用到互斥锁?看图: 图中是内核有关模块对互斥锁初始化,有文件,有内存,用消息队列等等,使用面非常的广.其实在给内核源码加注的过程中,会看到大量的自旋锁和互斥锁,它们的存在有序的保证了内核和应用程序的正常运行.是非常基础和重要的功能. 概述 自旋锁 和…...

MySQL之查询 拿下 * 。*

DQL数据查询语言 对上述的的查询操作进行代码演示&#xff08;续上一篇学生表代码进行处理&#xff09; 下面是上一篇的代码分享 下面进行简单的查询操作 字符串如果强行进行算数运算默认只为0 查询时常用的单行函数列举 未完待续...

目标检测(二阶段)领域,常见词汇

1、Backbone&#xff08;主干网络&#xff09; 定义: Backbone是目标检测模型的基础部分&#xff0c;通常是一个预训练的卷积神经网络&#xff08;如ResNet、VGG、MobileNet等&#xff09;&#xff0c;负责从输入图像中提取多层特征图。这些特征图包含了不同尺度和抽象级别的信…...

区块链与人工智能哪个更有前景?

一、引言 随着科技的飞速发展&#xff0c;区块链技术和人工智能&#xff08;AI&#xff09;无疑是两大热门领域&#xff0c;各自以其独特的魅力吸引着全球的关注。两者虽源自不同的技术基础&#xff0c;却都预示着未来技术发展的无限可能。本文旨在探讨区块链与人工智能各自的前…...

计算机网络【应用层】邮件和DNS

文章目录 电子邮件DNSDNS提供的服务&#xff1a;域名分级域名解析流程DNS资源记录DNS服务器类型 电子邮件 使用SMTP协议发送邮件之前&#xff0c;需要将二进制多媒体数据编码为ASCII码SMTP一般不使用中间邮件服务器发送邮件&#xff0c;如果收件服务器没开机&#xff0c;那么会…...

js遍历数组将数组中属性名相同的属性值组成新的数组再转化成字符串并换行(js换行和html换行不同)

{label: 告警结果,display:true, html:true,formatter:(row)>{let list ""if(row.funRes&&row.funRes.length){let propName value; list row.funRes.map(obj > {return <span style"vertical-align: text-top;padding-right: 2px;">…...

Ai绘画|如何安装使用秋叶comfyui整合包,手把手详细教程

B 站的秋叶大佬在 1 月份就已经发布了 comfy ui 的整合包。用户将压缩包下载后&#xff0c;能够一键启动 comfy ui。其便利性与之前的 webui 整合包如出一辙。然而在整合包下载完成后&#xff0c;新手或许会遭遇插件以及模型缺失的情况&#xff0c;同时也不清楚该如何运行工作流…...

【React】React-redux多组件间的状态传递

效果&#xff08;部分完整代码在最底部&#xff09;&#xff1a; 编写 Person 组件 上面的 Count 组件&#xff0c;已经在前面几篇写过了&#xff0c;也可以直接翻到最底部看 首先我们需要在 containers 文件夹下编写 Person 组件的容器组件 首先我们需要编写 index.jsx 文件…...

XSS-Labs 靶场通过解析(上)

前言 XSS-Labs靶场是一个专门用于学习和练习跨站脚本攻击&#xff08;XSS&#xff09;技术的在线平台。它提供了一系列的实验场景和演示&#xff0c;帮助安全研究人员、开发人员和安全爱好者深入了解XSS攻击的原理和防御方法。 XSS-Labs靶场的主要特点和功能包括&#xff1a;…...

开源版本管理系统的搭建一:SVN服务端安装

作者&#xff1a;私语茶馆 1.Windows搭建SVN版本管理系统 点评&#xff1a;SVN本身非常简洁易用&#xff0c;VisualSVN文档支撑非常好&#xff0c;客户端TortoiseSVN非常专业。5星好评。 1.1.SVN概要和组成 背景介绍 Svn是一个开源版本管理系统&#xff0c;由CollabNet公司…...

Fastfetch一个类似neofetch的系统信息工具软件

1. 使用默认配置运行&#xff1a;fastfetch 2. 使用所有支持的模块运行&#xff0c;并找到您感兴趣的内容&#xff1a;fastfetch -c all.jsonc 3. 查找 fastfetch 检测到的所有数据&#xff1a;fastfetch -s <模块> --format json 4. 显示帮助信息&#xff1a;fastfetch …...

DV试验和PV试验介绍

1 基本介绍 DV试验 DV试验&#xff0c;全称Design Verification Test&#xff0c;又称设计验证试验&#xff0c;是指在产品设计阶段&#xff0c;对产品的设计进行验证的一种试验方法。DV试验的主要目的是为了验证产品的设计是否满足功能和性能要求&#xff0c;并找出设计中的…...

RTT PIN设备学习

获取GPIO编号 GET_PIN(port, pin)#define LED_BLUE_PIN GET_PIN(A, 0)设置引脚模式 void rt_pin_mode(rt_base_t pin, rt_base_t mode);设置引脚电平 void rt_pin_write(rt_base_t pin, rt_base_t value);rt_base_t pin 同上&#xff0c; 为引脚编号&#xff0c;尽量通过宏定…...

Spring Boot面试知识点总结(经典15问)

Spring Boot面试知识点总结&#xff08;问答合集&#xff09; 文章目录 Spring Boot面试知识点总结&#xff08;问答合集&#xff09;一、Spring Boot简介二、核心特性三、面试问题及答案问题1&#xff1a;Spring Boot的核心配置文件是什么&#xff1f;问题2&#xff1a;Spring…...

安卓手机原生运行 ARM Ubuntu 24.04 桌面版(一)

本篇文章&#xff0c;聊一聊尝试让安卓手机原生运行 Ubuntu&#xff0c;尤其是运行官方未发布过的 ARM 架构的 Ubuntu 24.04 桌面版本。 写在前面 最近的几篇文章&#xff0c;都包含了比较多的实操内容、需要反复的复现验证&#xff0c;以及大量的调试过程&#xff0c;为了不…...

AHB---数据总线

1. 数据总线 为了实现AHB系统&#xff0c;需要独立的读写数据总线。虽然推荐的最小数据总线宽度被指定为32位&#xff0c;但这可以根据数据总线宽度进行更改。 数据总线包含以下部分&#xff1a; HWDATAHRDATAEndianness&#xff08;字节序&#xff09; 1.1 HWDATA 在写传输…...

「51媒体」企业单位新闻稿件考核,怎么发布

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 电力税务企事业单位部门等单位提供了新闻稿件&#xff0c;如何在一些重点媒体进行宣发呢&#xff1a; 精准锁定发布媒体 了解考核要求&#xff1a;仔细阅读宣传任务名单&#xff0c;了解…...

「 网络安全常用术语解读 」SBOM主流格式CycloneDX详解

CycloneDX是软件供应链的现代标准。CycloneDX物料清单&#xff08;BOM&#xff09;可以表示软件、硬件、服务和其他类型资产的全栈库存。该规范由OWASP基金会发起并领导&#xff0c;由Ecma International标准化&#xff0c;并得到全球信息安全界的支持&#xff0c;如今CycloneD…...

React 之 内置标签<Fragment> (<>...</>) (十一)

通常使用 <>…</> 代替&#xff0c;它们都允许你在不添加额外节点的情况下将子元素组合。相当于vue的内置标签<template/> 1. 返回多个元素 <><OneChild /><AnotherChild /> </>2. 分配多个元素给一个变量 和其他元素一样&#xf…...

Mac M1 解决安装grpcio不可用

问题描述&#xff1a; 使用 pip 已经更新 grpcio 至最新版&#xff0c;调用时还是报错 如下图&#xff1a; Traceback (most recent call last):File "/Users/yu/anaconda3/envs/dify2/lib/python3.10/site-packages/flask/cli.py", line 245, in locate_app__imp…...

Linux第三节--常见的指令介绍集合(持续更新中)

点赞关注不迷路&#xff01;&#xff0c;本节涉及初识Linux第三节&#xff0c;主要为常见的几条指令介绍。 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1f44d;&#x1f3fb; 收藏 ✨ 加关注&#x1f440; 期待与你共同进步! Linux下基本指令 1. man指令 Linu…...

SpringMVC简介和体验

一、SpringMVC简介和体验 1.1 介绍 Spring Web MVC :: Spring Framework Spring Web MVC是基于Servlet API构建的原始Web框架&#xff0c;从一开始就包含在Spring Framework中。正式名称“Spring Web MVC”来自其源模块的名称&#xff08; spring-webmvc &#xff09;&#…...

Android单行字符串末尾省略号加icon,图标可点击

如图 设置仅显示单行字符串&#xff0c;末尾用省略号&#xff0c;加跟一个icon&#xff0c;icon可点击 tvName.text "test"val drawable ResourcesCompat.getDrawable(resources, R.mipmap.icon_edit, null)tvName.setCompoundDrawablesWithIntrinsicBounds(null,…...

新疆生产建设兵团第七师门户网站/网站seo排名优化

您可能会发现您拥有多个领英帐户。如果您收到消息&#xff0c;提示您尝试使用的邮箱与另一个帐户已绑定&#xff0c;就表明您可能存在重复的领英帐户。如果您使用许多不同的邮箱地址&#xff0c;也可能会收到这样的提示。 领英精灵温馨提示: 目前&#xff0c;仅支持在 PC 端合…...

长沙找人做企业网站文案/seo com

LeetCode 572 题解 给定两个非空二叉树 s 和 t&#xff0c;检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 代码实现 public boolean isSubtree(TreeNode s, TreeNode t) {if(s nu…...

建设网站及域名费用/抚州seo外包

sftp服务与ftp服务两者之间有什么差异&#xff0c;请百度安利&#xff01;sftp服务搭建&#xff1a;一&#xff09;sftp image获取# docker pull docker.io/atmoz/sftp //也可不拉取&#xff0c;在执行docker run命令时会自动拉取二&#xff09;简单启动sftp实例# docker ru…...

中英文网站建设 大概要多久/营销策略

在前一篇文章中&#xff0c;我们讨论了用于人体检测的早期方法&#xff0c;例如Vila Jones的目标检测框架&#xff08;Haar级联&#xff09;和方向梯度直方图&#xff08;HOG&#xff09;检测器。我们也看到了这些早期方法存在的问题&#xff0c;例如漏检、误检等。在本文中&am…...

网站下载软件怎么安装/哔哩哔哩b站在线看免费

1、何谓字符串内建函数 只要创建了字符串&#xff0c;就默认可以调用内建函数(系统准备的一些函数)。 2、与大小写相关 主要的函数有capitalize() 、title() 、upper() 、lower()等。 capitalize() &#xff1a;将字符串第一个字母变大写 message you are a beautiful girl…...

广州住房和建设局网站/精准广告投放

好了&#xff0c;多的也不说&#xff0c;直接开始吧&#xff01;1.下载预训练的好权重文件 yolov4.conv.137,放在build/darknet/x64/下2.创建配置文件&#xff1a;在darknet-master/cfg/下&#xff0c;创建yolo-obj_fre.cfg&#xff1a;这个文件里面的内容跟cfg/yolov4-custom.…...