前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​想转型数据驱动,ETL是拦路虎?十年来的传统工作模式,该升升级了

​想转型数据驱动,ETL是拦路虎?十年来的传统工作模式,该升升级了

作者头像
木东居士
发布2020-03-06 09:39:37
6550
发布2020-03-06 09:39:37
举报
文章被收录于专栏:木东居士的专栏

大数据业内有两个趋势,已经悄悄滋生出来。

两个趋势下,你面临的可能是个无法解决的问题

第一个趋势,是在任何一个公司,甚至是垂直领域的公司,数据量正在剧烈增长,而且数据类型越来越复杂。

我们已经没有办法通过单一、关系型数据库来存储这些数据了。将BI工具配置一下,指向数据存储,马上开始数据业务分析的日子,一去不返了。

事实上,传统的ETL工具栈,也在努力适应企业内现代化的数据格局,只是架构越来越复杂,效率越来越低。如下图所示:

从数据到洞察(灯泡所示),各个环节都需要精密的控制和配合

很多大型公司,已经认识到这种局面,启动了数据治理,希望可以一举扭转这种被动。我们把这个趋势称之为:现代化数据场景与传统数据工具链的不匹配

然而,事情还没有结束。即使只是这一个挑战,处理起来就已经是按下葫芦浮起瓢了。若是将这个趋势,与另一个趋势相结合的话,只能用“雪上加霜”来形容了!我们来看下大数据的第二个趋势。

这个趋势就是,使用数据的用户,成分越来越多样,比如业务分析师、业务人员、产品经理、营销分析师、算法工程师等等。

这些身份中,很多人并不是数据专家,数据只是他们日常工作的辅助。问题在于,这些人,在日常生活中,都有令人惊叹的数据体验:

  • 他们打开智能手机,在两分钟之内,就可以预订旅行行程
  • 他们在Google上提出问题,可以在一秒以内得到答案
  • 打开抖音,马上就可以找到自己非常感兴趣的视频

在生活中,这部分用户,对这种“数据的即时满足感”印象深刻。当他们回到公司,发现新创建一个可视化报表,从寻找数据源、数据采集、到清洗、到最终完成工作,需要两周、甚至一个月的时候,这种沮丧之情,是可以想象的。

这种与日常数字生活中,用户体验的巨大反差,也给公司解决大数据问题带来了很大的压力:

  1. 分析师和业务用户,对自助服务的呼声持续增大
  2. 公司内数据的复杂性,同样日益提升。

很快,你会发现,你面临了一个不可能解决的问题!

如何理解传统数据架构

回头再看下这些技术栈,会发现,多年来,它几乎没有什么改变。

我们看看这些数据。它们存储在不同的地方,倒是使用了越来越多的现代数据技术,如S3,Hadoop,MongoDB,Elasticsearch等等,当然还有关系数据库。

我们看看数据的使用方式。下面是人们在数据分析中常用的工具。如果公司已经到一定规模,那么你还可能同时存在多个工具链(数据链路)来处理数据:

  • 通过自助式BI工具Tableau、Power BI来可视化探索数据,得到洞察结论。
  • 使用Excel,进行基本的数据处理和分析
  • Python和R,最好配有Jupyter等主流的NoteBook工具,这是数据科学家更偏好的工具
  • SQL工具,这个当然也必不可少了

注意:我有意的不把ETL工程师和数仓工程师加进来,因为他们对数据的价值没有主张,是赋能业务线的。

可以看到,不同角色和背景的员工,倾向于使用不同的工具来处理和分析数据。

我们再看看团队间如何协同的。数据使用方非常依赖IT。

  • 比如数仓内没有的数据,分析师只能向数仓团队提需求,然后等待数仓团队按照自己的优先级来处理
  • 面对未被采集的数据源,数仓工程师只能向IT团队提需求,然后等待IT团队按照自己的优先级来处理
  • …也许一个月后…,数仓工程师把数据清洗并建模后,放到数仓某个地方了
  • 分析师从数仓找到他们需要的数据,并可以通过BI工具进行后续工作了

上面三个方面构成的工作模式,我们称之为传统的数据架构, 那么他在现代化的企业中,有什么问题呢?

传统数据架构面对的问题与分析-如何逐步演变成劳动密集型工种的

数据链路的维护是灾难

首先通过ETL工具,把数据转移到一个特定区域里,通常是Hadoop集群、云存储、S3等数据湖中。当然,这个工作是需要很多人、很多数据处理脚本来完成的。

如果上游的数据源发生变化,比如,业务同学在Mysql数据表中添加了字段,下游数据该怎么做呢?是维持不变,还是自动的添加上这些新的字段呢?这都是需要考虑的问题。

因此,只是维护该数据链路的正常运行,就已经是一个非常具有挑战的工作了。

大数据已经是人力密集型行业了

数据副本是灾难

大家都知道,直接在数据湖上进行分析,通常情况下都很慢。

一般都是通过ETL,把部分数据(可能是过去30天或某些聚合级别数据)放入数据仓库中,如基于云的Redshift,也可能是Teradata,Vertica,Oracle,SQL Server等非云环境。

这些都是专用系统,昂贵不说,能否提供BI用户想要的性能,还需要画个疑问号。

为了解决上面的问题,一般会引入一个额外的数据产品层-多维数据集(CUBE)。通常的做法是,在数据仓库中预先聚合数据:

  1. 创建一个新表,用于存储聚合级别的数据集,比如通过会话ID或城市来进行数据的预聚合(sum、count等)。
  2. 将数据导出到BI系统中,这份数据,是专门给此BI工具使用的。

最后才发现,你为大数据支付了巨大的费用:

  1. 在基础设施上。公司的每个数据都有10余个副本,无形中需要使用更多的机器。
  2. 数据管理的复杂性提升。当你拥有大量数据副本时,数据最终会出现不一致。 在受监管的行业或公司,不同版本不一致而提供不同的结果,会被罚款或处罚。
  3. 引入安全风险。这些零散的数据副本,由不同部门、不同角色的用户来创建和管理,增加了数据泄露和非法访问的可能性

既有架构上,无法构建大数据的自助服务

基于上面的事实,在目前既有的数据架构上,是无法构建起自助服务的:

  • 不同的数据存储在不同的系统、不同类型的结构中,最终的Tableau/PowerBI用户面临巨大困难
    1. 用户不知道他们需要去哪里找到数据。比如销售数据,如果它只是一个非常简单的销售数据分析,就可以直接去使用那个多维数据集;若打算与网站的会话数据联合分析,就没有那么简单了。
    2. 没有办法解决跨数据源的数据分析。此时,只有依赖数据仓库。
  • 在传统数仓场景下,数据使用方过度依赖数仓和IT。正如上面的分析,不同团队有自己的做事方式和优先级,数据消费链路上的强依赖,导致工作效率低到不可忍受

上述这种非常繁琐、过度依赖的工作模式,已经维持了至少10年,基本上没有改变过。如果想让公司变成数据驱动,那么这套传统数据架构,已经不得不调整了。

我们呼吁:把数据使用的权利真正赋予数据公民,使那些通过BI工具、机器学习的员工,可以自给自足的完成工作。当然,这种自助的工作方式,需要在公司的管理和安全控制下。

传统与现代数据架构

把数据使用权真正赋予数据公民

有了上面的分析,我们就可以看看什么样的数据架构,是用户需要的。

首先,它必须支持任何数据源,但又允许以统一的方式访问。解决传统ETL带来的问题的有效办法,就是省去ETL。

大多数公司,都拥有许多不同的数据源,比如mysql、Elasticsearch。同时,必须适用于任何主流的分析工具,如Tableau、MicroStrategy、Excel和Python等等。

如果没有数据仓库和cube,世界将变得更加美好。当然,不可能在一天之内摆脱所有这些,但必须有一个更好的方法,没有人真的喜欢管理这些。

其次,我们深信,甚至崇拜,自助服务和协作。这是现代数据体系必备的能力:

  • 自助服务,是在数据消费链路的自助
  • 协同,是专家准备数据、产品团队准备产品层面的协同。

再次,性能是所有这一切的关键。如果你做的东西不够快,就没有人愿意在它上面浪费时间。

如果你曾经在大数据基础上,使用过各种BI,并且需要十分钟才能看到查询结果,那就说明,这套架构是有问题的。

即使对于最大的数据集,甚至是数PB和数十亿条记录,我们也必须能够提供一到两秒的交互式体验。

最后,我们认为它必须是开源的。任何类型的数据基础架构,或分析技术都需要是开源的。任何公司不希望被绑死。同时,这也是构建健康的生态系统所需要的。

基于上面的分析,我们已经认清了,什么样的数据架构,才是数据消费者所需要的。那么如何构建这个数据体系呢?

面向自服务的数据架构

数据消费者,需要的不仅仅是服务的自助化,本质上,更是数据的自助化,即自服务的数据。

我们在数据工作栈中,引入一个数据抽象层,来解决数据自助服务的问题。这个抽象层架起数据本身与工具之间的桥梁。

需要使用数据的人,通过这个抽象层,可以获得它所需要的任何基础能力。比如:

  • 对于数据使用者,可以通过数据地图查找数据、通过桌面工具来探索数据、通过BI工具来分析数据。
  • 对于数据专家,即使是非技术的业务专家,也可以方便的萃取数据,生成一个新的数据集,即“虚拟数据集”

这个数据抽象层,即自服务的数据架构,从物理层上来看,它需要提供如下的能力:

  • 可以连接到不同的数据源,并执行查询请求
  • 可以跨数据源执行联合查询,并进行查询的加速。

查询的加速,对于自服务的数据架构来说,是至关重要的。可以想象一下,即使面对PB级别的数据,业务人员还是想以交互的方式得到查询结果。也就是说,响应速度不能超过几秒钟。

如何实现一个自服务的数据架构呢?

现代化自服务的数据架构

从架构上来说,它需要包含如下的组件:

  1. 数据集管理。数据集可以理解为虚拟的数据,主要是解决传统ETL的问题。它不会生成数据备份,没有数据冗余和不一致。同时,也不占用额外的存储资源。
  2. 数据萃取。通过虚拟数据集的能力,实现数据变换,逻辑复用。
  3. 数据查找。通过数据地图提供数据的检索能力、元数据完善能力。由于数据集具有很强的规范性,因此可以轻易的根据数据血缘,找到数据的依赖、数据的使用方式
  4. 查询加速。采用了一套独立的数据加速层,可以称之为 “Data Reflections”,它类似于物化视图。通过Reflections,数据专家就有能力干预查询的加速了。数据查询加速和数据建模过程是统一的,他们合二为一。

相比于传统的数据服务优化,我更强调数据的优化,通过对数据服务和数据双向的优化,来提供协作和自助服务能力。

再强调一次,目前大部分的做法,是把注意力放在工具的优化上。短期来看,可能有效果,但是它不解决根本问题。我们需要从数据的角度,重新审视大数据当前面临的问题,在优化工具的同时,对数据本身进行架构的优化,才有可能解决当前企业快速发展和数据驱动中,面临的问题。

“数据分析”、“数据分析师”这些词很有误导性,它让人认为,分析的目标是数据本身。叫“业务分析”可能好点,它至少会让人把焦点放到业务本身,数据是它的支撑。

注:Dremio是上述数据架构的一个参考实现。文中部分图片来自Dremio。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木东居士 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 两个趋势下,你面临的可能是个无法解决的问题
  • 如何理解传统数据架构
  • 传统数据架构面对的问题与分析-如何逐步演变成劳动密集型工种的
  • 把数据使用权真正赋予数据公民
  • 面向自服务的数据架构
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档