ETL就是Extract、Transfrom、Load即抽取、转换、加载三个英文单词首字母的集合。抽取:就是从源系统抽取需要的数据,这些源系统可以是同构也可以是异构的:比如源系统可能是Excel电子表格、XML文件、关系型数据库,而目标系统通常都是关系型的数据仓库。
转换:源系统的数据按照分析目的,转换成目标系统要求的格式。其实这个名词并没有完全表达出这个步骤的目的,更准确的说法应该是数据清洗和数据加工。
加载:把转换后的数据装载到目标数据库。作为联机分析、数据挖掘的基础。
 
整个ETL过程就像是在源系统和目标系统之间构建一个管道,数据在这个管道里源源不断的流动。而设计一个ETL架构就是要建起起这个管道。这个管道的部署构建就涉及到三个环节,或者说三个位置。分别是Source、Stagearea、Target。对应关系如下:
 
E——————>   T ——————> L
Source————> Stagearea——> Target
 
E:抽取,这个活动毫无疑问发生在数据源上,这个节点也就叫做Souce。
T:转换,转换活动通常是ETL中最具伸缩性的环节,换句话说,这个环节的活动可繁可简。最简单的情形下,源系统的数据不需要任何转换,就直接进入目标,这时这个T实际就是没有的。而复杂的情形就多了,比如数据格式转化、数据精度转换、数据清洗、缺失数据补齐、异常数据排除等等。在这种情形下,通常会专门准备一个临时系统,提供足够的软硬件资源来支持这种转换。这个临时系统就叫做Stagearea,也叫做数据登台区,即数据到达终点之前的区域。
L:加载,这个活动毫无悬念的发生在目标数据库中,这个目标数据库叫做Target。
 
我们明白了什么是ETL,那么ELT就好理解了。ELT也是同样三个单词的首字母组合,只不过是把T、L颠倒了下顺序而已。可就是这个顺序的颠倒,差异就出来了。ETL强调的是先进性数据转换,然后再加载到目标。这个转换过程可能发生在任何地方,可以在原系统进行,也可以在Stagearea进行,也可以在目标系统进行。而ELT是把数据加载到数据仓库后再进行转化,发生的地点只能是目标系统。
这两种方式各有优缺点,如果源系统有多个,比如一个国际型公司,起源数据可能来自世界各地,这时就可以通过部署多个中间节点,从而分散数据转换的压力,有点类似分布式计算的味道,可以提高数据加载效率。因此,ETL非常适用于多个数据源对一个目标的拓扑结构。
而ELT把数据加载到数据仓库在进行转换,通常数据仓库都会部署在高性能主机上,显而易见,这种设计是要充分的利用目标系统的处理能力,大树底下好乘凉吗。ELT的另一个优点是可以充分利用产品的内置能力,如果ETL的源、目标都是相同的产品,比如都是Oracle数据库,现在RDBMS内置的数据处理引擎越来越强大,ELT能够充分利用这些内置引擎。
所以,ETL还是ELT其实并没有绝对的差异,也没有孰优孰劣,最终还是要根据现实环境选择最适合的。
 
 
 
ETL工具的选择   在数据仓库项目中该如何选择ETL工具呢?一般来说需要考虑以下几个方面:   (1)对平台的支持程度。   (2)对数据源的支持程度。   (3)抽取和装载的性能是不是较高,且对业务系统的性能影响大不大,侵入性高不高。   (4)数据转换和加工的功能强不强。   (5)是否具有管理和调度功能。   (6)是否具有良好的集成性和开放性。

啥是ETL、ELT的更多相关文章

  1. Kettle解决方案: 第一章ETL入门

    第一章ETL入门 1.1 OLPT和数据仓库对比 普通的事务系统和商业智能系统(BI)有什么区别? 1个独立的普通事务系统也被称为在线事务处理系统(OLTP) 商业智能系统也常被称为决策支持系统(DS ...

  2. 整理下.net分布式系统架构的思路

    最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...

  3. net分布式系统架构

    net分布式系统架构的思路 最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批 ...

  4. Oracle 数据集成的实际解决方案

    就针对市场与企业的发展的需求,Oracle公司提供了一个相对统一的关于企业级的实时数据解决方案,即Oracle数据集成的解决方案.以下的文章主要是对其解决方案的具体描述,望你会有所收获. Oracle ...

  5. .net分布式系统架构的思路

    首先说明的是.net下开源内容较少,并且也不是做并行数据库等基础服务,因此在这里什么Hadoop.Spark.ZooKeeper.dubbo等我们暂不去考虑. 一.最初假设的网站中,我们把应用系统网站 ...

  6. .NET分布式系统架构思路

    分布式系统是由一组通过网络进行通信.为了完成共同的任务而协调工作的计算机节点组成的系统.分布式系统的出现是为了用廉价的.普通的机器完成单个计算机无法完成的计算.存储任务.其目的是利用更多的机器,处理更 ...

  7. 【转】Talend作业设计模式和最佳实践-Part II

    转载地址:https://mp.weixin.qq.com/s?__biz=MzA3OTg1Mzk4Nw==&mid=2453261363&idx=1&sn=5674f1df8 ...

  8. Lakehouse: 统一数据仓库和高级分析的新一代开放平台

    1. 摘要 数仓架构在未来一段时间内会逐渐消亡,会被一种新的Lakehouse架构取代,该架构主要有如下特性 基于开放的数据格式,如Parquet: 机器学习和数据科学将被作为头等公民支持: 提供卓越 ...

  9. Azure Synapse Analytics Serverless

    数据湖仓 自从Databricks提出Lakehouse后,同时Snowflake的上市,湖仓一体成为数据领域最火热的话题. https://databricks.com/blog/2020/01/3 ...

  10. 使用Spark加载数据到SQL Server列存储表

    原文地址https://devblogs.microsoft.com/azure-sql/partitioning-on-spark-fast-loading-clustered-columnstor ...

随机推荐

  1. linux下tmp目录里很多php开头的文件

    cd /tmp; ll -ash; 51M -rw------- 1 nginx nginx 51M Sep 17 09:33 php3p7FPA 51M -rw------- 1 nginx ngi ...

  2. 删除datatable中的行

    今天遇到一问题,无论如何也删除不干净datatable.我想全部删除.但总是得不到想要的结果. ; i < dt.Rows.Count; i++) { //dt.Rows.Remove(dt.R ...

  3. AGS Server 10.1 切图工具

    在AGS Sever中很重要的功能就是地图缓存的制作,安装AGS Sever会在catalog中增加相关的工具箱,利用这些工具可以制作.删除.更新切片 一.Convert map server cac ...

  4. 转载的shell命令73条

    1.检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo "open" 2.让进程转入后台: Ctrl + z ...

  5. PowerDesigner数据模型(CDM—PDM)

    操作过程 点击:  Tools/Generate Physical Data Model

  6. Java Web项目在Mac系统上启动时提示nodename nor servname provided

    今天一不小心更新了Mac系统,然后在启动Java Web项目的时候,提示了java.net.UnknownHostException: MAC-mini-local nodename nor serv ...

  7. VC6.0 开发 64 位程序

    1. 设置平台SDK(如:Microsoft platform sdk 2003),选择64位的编译.链接环境. setenv /XP64 /DEBUG 2. 利用这个环境启动VC6.0. msdev ...

  8. octotree神器 For Github and GitLab 火狐插件

    Code tree for GitHub and GitLabExtension to show code tree for GitHub and GitLab. Useful for develop ...

  9. 更改计算机名称,影响TFS之前映射的工作区 使用。

    今天把自己电脑的计算机名称改了,打开vs2012的时候,就提示以下的错误: ---------------------------Microsoft Visual Studio------------ ...

  10. scope 作用域

    每当一个指令被创建的时候,都会面临一个选择:继承父作用域,还是创建一个自己的作用域.Angular为指令的scope参数提供了三种选择,分别是: false(继承), true(不继承), {},默认 ...