我们可以不再使用ETL了吗?

近年来,我们在数据科学和高级分析方面取得了一些进步,但许多项目仍然采用20世纪80年代的遗留技术:萃取(extract)、转置(transform)和加载(load),也就是我们所说的ETL。这让数据架构师感到无比头疼,但我们似乎又无法超越它,那有什么方法能改变这个局面吗?

在研究ETL的代替者之前,让我们先看看这项技术的起源。上世纪80年代和90年代,随着企业在生产数据库中积累了越来越多的事务性数据,它们意识到需要专门的商业智能(BI)系统来进行分析和报告。在许多方面,BI将“p”重新放到了企业资源规划(ERP)中。

数据仓库有多种用途。首先,除了核心生产系统之外,它还为连接和分析来自多个源的数据提供了一个通用的位置。它还避免了影响支持生产ERP系统的服务器及其底层关系数据库。数据仓库是分析师研究数据和尝试新想法的有效手段。

由于BI项目的数据将来自于各种来源——包括在线事务处理(OLTP)系统、市场营销和客户关系管理,甚至是从第三方数据代理那里购买。因此公司需要更多专为处理数据类型和工作负载而定制的数据库软件。从Arbor Software的Essbase开始,出现了一种新的多维数据库,用于支持在线分析处理(OLAP)工作负载。

但是将这些丰富的OLTP和客户数据迁移到OLAP系统中并不是一项简单的任务。生产数据库以不同的方式存储数据,对必须费力映射到数据仓库的列使用特殊的命名约定。其中一些源系统甚至不是关系数据库,而是专有的大型机文件系统或平面文件存储,这更加大了难度。除了事务性数据之外,还有时间序列和地理数据,所有这些数据都必须经过调整,以适应所选择的模式。

将所有这些数据转换为数据仓库中一致且可用的格式仍然是一项艰巨的任务。公司雇佣大量的专家和顾问来编写和维护定制的ETL脚本,这些脚本可以将数据敲入数据仓库中使用的特定模式。无论何时更改源数据库表或文件,下游ETL脚本都需要进行调整,以确保数据仓库继续提供相同的数据。

除了ETL的维护噩梦之外,它的批处理特性是另一个很大的缺点,尤其是在只关注当下的环境中。更新数据仓库中成千上万个表的ETL作业通常在夜间运行,此时生产处于停顿状态。其他时候,公司每天运行多个ETL作业,希望为不断使用各种SQL查询访问数据仓库的分析师提供更新鲜、更有洞察力的见解。

尽管在ETL上花费了大量时间和金钱,公司仍然会遇到很大的问题。为了确保干净准确的数据通过ETL到达,并且防止垃圾数据填满数据仓库,应该制定详细的流程。很多人都能迅速完成大任务,但是当涉及到数据定义时,会有很大的困难。数据也会随着时间的推移而改变,影响分析查询的结果,使其与早期比较不再那么准确。

ETL的使用既痛苦又昂贵且容易失败,但我们能做些什么呢?事实上,许多公司已采取各种方法来解决这一难题。以下是避免ETL的四种可能方法。

1. 合并OLTP和OLAP

如果ETL是您的痛苦之源,那么可以避免它的一种方法是在相同的系统上运行所有内容。这种方法最好的例子是SAP的HANA,它最初是一个超快的内存分析数据库,现在已经成长为ERP业务套件方面的核心事务数据库。据说,这家德国软件巨头的整个业务包括OTP和OLAP都在一个相对较小的系统上运行。它并没有完全消除对ETL的需求,但是它最小化了可能出错的范围。

如今,许多新的扩展关系数据库还提倡使用“translytical”方法合并操作和分析操作,以加快处理时间。像Aersospike、MemSQL、Splice Machine和VoltDB这样的供应商,将集群架构和内存处理结合起来,以支持非常快速的SQL查询处理,足以支持Web和移动应用程序并对它们进行实时分析(但不一定是像ERP这样的核心业务应用程序)。

Forrester分析师Noel Yuhanna和Mike Gualtieri在2015年表示传统的ETL流程无法实现实时更改。Translytical克服了这一挑战,为关键业务数据提供了实时、可靠的视图,确保信息来源准确以及整个组织的一致性。

Garter支持一种类似于混合事务分析(HTAP)的方法。 NoSQL数据库供应商Couchbase通过其嵌入式SQL ++引擎支持这种方法用于查询JSON数据,亚马逊也是如此。

2. 给ELT一个机会

ETL中一个受欢迎的转折是改变处理顺序。不是在ETL过程中进行所有重要的数据转换,而是在将其加载到数据仓库之后再进行转换——因此是ELT而不是ETL。这种方法在更现代的数据湖中很流行,在现代数据湖中,数据语义和模式不像在传统数据仓库中那样严格执行(如果它们被强制执行的话)。

ELT在Hadoop中很受欢迎,在Hadoop中,客户可以快速地存储大量原始数据,然后在稍后运行大量批处理工作,为后续处理(包括SQL分析和机器学习)准备数据。

如果您的数据工程师正在使用Apache Spark为下游数据科学和分析工作负载开发数据转换管道,那么您一定会大吃一惊。因为他实际上是在编写ELT工作,这是Spark最大的用例之一。Spark背后的Databricks公司于2017年推出了Delta,可以说是ELT和数据转换即服务。ELT方法也用于一些NoSQL数据库。

3.实时流式ETL

一些公司采用的是流式ETL方法,而不是事后批量转换数据,即数据到达现场后不断进行处理和细化。这种方法可能不适用于传统的ERP数据,但对于处理不断增长的Web和移动应用程序数据(本质上是时间序列)来说,它可能是绝对必要的。

通过在数据到达时直接处理数据,开发人员可以避免在一个单独的ETL阶段来处理数据。本质上说,这就是Apache Storm的创建者Nathan Marz在2011年提出的Lambda架构,其中一个加速层 (Storm)可以快速处理数据,但可能不是100%准确,而批处理层 (Hadoop)可以在稍后修复任何错误。

Apache Kafka的联合创作者Jay Kreps在构思Kappa架构时也想到了类似的解决方案,这是Lambda的一个精简版本,不包含单独的加速和批处理层。相反,Kafka在流媒体事件数据生成过程中扮演着核心角色。

4. 直接数据映射

最小化ETL的另一个选项称为直接数据映射,即源数据直接在其所在位置查询,而不是将其移动到数据仓库。这是Incorta所支持的方法,该公司由甲骨文(Oracle)前高管Osama Elkady于几年前创建。

Incorta的直接数据映射方法仍然要求用户将数据移动到数据湖,比如HDFS、S3或Azure Data Lake,并将其存储为高度压缩的Parquet文件。但是,通过在“提取”和“加载”步骤之间注入元数据标记,它可以允许客户跳过“T”部分。

“Incorta想表达的是,如果我们只将数据加载到另一个仅用于分析的数据库中,会发生什么,如果我们按原样获取数据而不必对数据进行扁平处理,会怎么样?” Elkady指出: “它可以将查询时间从小时级缩短到秒级。”

Incorta的方法很有效果,正如最近一轮3000万美元的C轮融资所显示的那样。这家硅谷公司正在吸引大量客户,包括苹果(Apple)、博通(Broadcom)和星巴克(Starbucks)。Elkady表示:“如果客户无法实时查看运营数据,无论是制造业务、零售业务还是仓库管理,都可能会损失数百万美元。”

目前我们没有办法完全摒除ETL以及应用它的麻烦。在完全使用相同一致数据格式的系统之前,仍然需要从一个地方获取数据并为其应用做好准备,然后加载数据。但是,数据转换的新方法可以帮助避免ETL应用过程中的问题。

原文网址:https://www.datanami.com/2019/09/03/can-we-stop-doing-etl-yet/

Image placeholder
hehanlin
未设置
  15人点赞

没有讨论,发表一下自己的看法吧

推荐文章
使用Electron构建跨平台的桌面应用

作者:李晓健。苏宁视频云前端部门经理。拥有7年前端业务研发和架构经验,目前负责苏宁云视频前端研发和架构工作。Electron简介Electron是一个使用JavaScript,HTML和CSS等Web

Onvif/RTSP海康大华网络安防摄像机网页无插件直播方案EasyNVR如何使用Excel将通道配置简单化?

进入移动互联网时代以来,企业微信公众号已成为除官网以外非常重要的宣传渠道,当3.2亿直播用户与9亿微信用户的势能累加,在微信上开启直播已成为越来越多企业的必然选择。EasyNVR核心在于摄像机的音视频

日均5亿查询量的京东订单中心,为什么舍MySQL用ES?

京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常大,造成了订单数据读多写少的情况。我们把订单数据存储在MySQL中,但显然只通过DB来支撑大量的查

为了面试后不再回去等消息,我决定阅读源码

01、读源码的经历刚参加工作那会,没想过去读源码,更没想过去改框架的源码;总想着别人的框架应该是完美的、万能的,应该不需要改。另外即使我改了源码,怎么样让我的改动生效了?项目中引用的不还是没改的jar

PHP 如何上传文件和下载,你学会了吗?

第1章文件上传 1.1客户端上传设置 ​在B/S程序中文件上传已经成为一个常用功能。其目的是客户可以通过浏览器(Browser)将文件上传到服务器(Server)上的指定目录。 ​网络上常见的支持文件

在云、AI时代,传统应用性能监控方案过时了吗?

近年来,企业云对IT复杂性产生巨大影响,越来越多的企业需要能够解决云复杂性上升或加速数字化转型的有效方案,而人工智能正在成为解决这些问题的不二之选。在全球智能运维浪潮下,不少公司都选择重写代码,颠覆自

DTCC | 云数据库时代已来,你准备好了吗?

作为基础软件之一,数据库一直是企业IT系统的核心,过去数十年,数据库技术发展缓慢。而随着云计算的到来及相关技术的不断成熟推动了数据库行业的快速发展,传统数据库铁打的防线也正在被撕裂。截至目前,全球主流

Java没有创新了吗?Java 13提供可提高生产率和效率的功能

在其CodeOne会议上,Oracle解释了JavaSE13正式发布后Java的快速发布周期如何带来创新。在过去的二十多年中,Java编程语言新版本的开发速度相对较慢,仅每隔几年就会进行重大更新。甲骨

嗨!你的 2019 晒好封存了吗?快来看程序老兵的 2019 吧!

时间过得真是太快快快了,2019还剩下最后几个小时了。回望即将过去的这一年,老兵哥做了不少事情,有计划内的,也有计划外的,当然还有不少事情没做。赶在最后时刻晒一晒我的2019年,希望从成绩荣誉中获得一

前端都该懂的浏览器工作原理,你懂了吗?

课程推荐《前端开发工程师--学习猿地精品课程》 前言在我们面试过程中,面试官经常会问到这么一个问题,那就是从在浏览器地址栏中输入URL到页面显示,浏览器到底发生了什么?这个问题看起来是老生常谈,但是这

Java8函数式接口和Lambda表达式你真的会了吗

课程推荐:java开发工程师--学习猿地精品课程 Java8由Oracle在2014年发布,是继Java5之后最具革命性的版本了。Java8吸收其他语言的精髓带来了函数式编程,lambda表达式,St

降低 80% 的读写响应延迟!我们测评了 etcd 3.4 新特性(内含读写发展史)

导读:etcd作为 K8s集群中的存储组件,读写性能方面会受到很多压力,而 etcd 3.4 中的新特性将有效缓解压力,本文将从etcd 数据读写机制的发展历史着手,深入解读 etcd 3.4 新特性

Java 与 Kotlin 系列文章 (一):性能问题

随着对Kotlin越来越深入的了解,我发现市面上关于Kotlin方面,比较深入的资料几乎是0,所以我决定,将Kotlin各个方面的研究作为我的研究生课题,而性能问题往往是程序员最佳关注的内容,所以第

估值 27.5 亿美元,GitLab“超车”GitHub

近日,知名代码托管平台GitLab宣布完成E轮2.68亿美元融资。据悉,本次融资由高盛银行和IconiqCappital牵头,包括YCombinatorContinuity基金。这可能是该公司上市前

Git 拉取 GitLab 分支上的项目

一、选择一个空文件夹用来储存克隆下来的项目,然后鼠标右键选择gitbashhere,然后输入命令gitclone+自己Git库的地址 二、从dev分支上更新代码 1.与远程仓库建立连接:gitremo

GitLab,是谁给了你歧视中国程序员的勇气?

GitLab安全漏洞不断,收集用户行为数据,今天又找到新的作死方法了。由谷歌投资的全球第二大开源代码托管平台GitLab在其官网上发布了一项声明,称他们决定为有权访问客户数据的团队成员启用“工作家庭国

Java并发编程,深入理解ReentrantLock

ReentrantLock简介ReentrantLock重入锁, 是实现Lock接口的一个类 ,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次

滴滴海量离线数据的在线化 — FastLoad

桔妹导读:滴滴自成立以来,有海量的数据存储在离线平台,离线数据虽然存储便宜,压缩比高,但不适用于线上使用。为此,我们提供了一键式DTS平台——FastLoad,帮助业务往在线存储系统搬运离线数据,目前

资源混淆是如何影响到Kotlin协程的

导言随着kotlin的使用,协程也慢慢在我们工程中被开始被使用起来,但在我们工程中却遇到了一个问题,经过资源混淆处理之后的apk包,协程却不如期工作。那么两者到底有什么关联呢,资源混淆又是如何影响到协

海量数据AtlasDB:把“数据库好用”这件事做到极致

导语:坚守初心、不辱使命,近期海量数据研发的企业级数据库AtlasDB获得了市场的普遍关注。这款以“好用”著称的国产数据库产品,不仅承载着海量数据公司对技术创新的坚持和投入,更凝结着一群拥有“工匠之心

Kotlin如何安全访问lateinit变量

Kotlin设计之初就是不允许非null变量在声明期间不进行初始化的,为了解决这个问题,Kotlinlateinit允许我们先声明一个变量,然后在程序执行周期的将来某个时候将其初始化,让编译检查时不会

pymysql fetchone () , fetchall () , fetchmany ()

最近在用python操作mysql数据库时,碰到了下面这两个函数,标记一下: 1.定义 1.1fetchone(): 返回单个的元组,也就是一条记录(row),如果没有结果则返回None 1.2fet

谷歌限制华为使用安卓服务!任正非首次回应美国禁令:半导体不卖给我们也没关系

大数据文摘编辑部出品5月19日,路透社援引单一匿名信源报道称,Google已经停止与华为之间除了开源以外的一切业务。也就是说,谷歌公司已经暂停了与华为公司的商业往来。据路透社报道:“华为只能使用安卓系

物联网可以推动IPv6的部署吗?

IPv6具有IPv4所缺乏的特性,这使得它在物联网部署方面具有优势,例如支持大型物联网网络、有助于延长物联网设备的电池寿命,减少其管理和维护负担。那么物联网能否有助于推动企业网络中的IPv6应用?IP

eclipse可以开发vue吗?

CodeMix是Eclipse的一款插件,它解锁了VSCode和CodeOSS附加扩展的各种技术,支持各种语言,具有Webclipse中您最喜欢的功能(包括带有LivePreview的Terminal