草庐IT

现代数据栈,谁主沉浮?

朝朝Mumu 2023-03-28 原文

欢迎访问我的博客https://kelvin-qzy.top
2022年已经没有人谈大数据这个概念,不是它失败了,恰恰是因为它成功了。成功技术的吊诡之处在于,它最终会被认为是理所当然,消失在背景音中。

从最近的新闻热点里,我们不难看到大数据的身影,例如大数据加持的金税四期,疫情防控下的大数据时空伴随者等等……

随着SaaS的普及和深入,数据驱动成为共识,云计算以及云端数据仓库的发展,逐渐有了现代数据技术栈这个新的数据生态体系。现代数据栈(MDS)主要是在欧美,确切的来讲是美国近几年出现的一个称呼,我们可以把它理解为一套新的数据生态体系。

何为现代数据栈?

现代数据技术栈通常是指构成云原生数据平台的一组技术,对比传统的数据平台,使用它们可以大大的降低复杂度,这个技术栈的构成组件不是固定的:

  • 一个云端的数据仓库,比如Snowflake, Redshift, BigQuery或者Databricks Delta Lake

  • 一个数据集成服务,比如Fivetran, Segment或者Airbtye

  • 一个ELT数据转换工具,几乎确定是dbt

  • 一个BI层,例如Looker或者Mode

  • 一个反向ETL工具,比如Census或者Hightouch

数据栈怎样构成?

说起现代数据栈,那不得不说经典数据栈:一个基础平台之上的存储、计算、分析、可视化、管理和安全等的组件分层图,这种架构应该是各大数据厂商都有自家的一版。相对于RDBMS的成熟老练来讲,这套系统从诞生到现在不过二十载的时间里还是如日中天,然鹅现代社会,尤其是技术生命的新陈代谢已经到了一个非常高的水平,一代人的时间足以产生翻天覆地的变化。

看到这张架构图里是否有你熟悉的面孔?

现代数据栈1.png

不错,还有几个老朋友,NiFi、Spark、Flink都还有一席之地,每一层多了很多新朋友。

  • 提取和加载:
    从所有事件源(如 Web、应用程序、后端服务)收集数据,并将它们发送到数据仓库。
    • 付费 SaaS 工具:Stitch、Fivetran
    • 免费和开源替代品:Singer、Meltano、Airbyte
  • 数据仓库
    组织所有数据的结构化、非易失性、单一事实来源,我们可以在其中存储和查询所有数据。
    • 付费:AWS Redshift、Google BigQuery、Snowflake
    • 免费和开源替代品:Apache Druid
  • 转换和建模
    使用文档从原始数据创建模型以更好地使用。
    • 付费:Dataform、DBT
    • 免费和开源替代品:Talend Open Studio、Apache NiFi
  • 编排
    用于执行和编排处理数据流的作业的软件。
    • 付费:Prefect.io
    • 免费和开源替代品:Apache Airflow、Dagster
  • 可视化和分析
    为了更好地了解和解释来自不同数据源的数据。
    • 付费:Tableau、Microsoft PowerBI、Grafana
    • 免费和开源替代品:Metabase、D3js、DyGraphs

但是我们继续看下面这张图:


现代数据栈2.png

Google 图片中输入“现代数据栈”即可注意到数据市场中的所有公司都在提出他们自己的技术列表来组成这个栈,虽然王婆卖瓜,但几乎所有关于现代数据栈的博客文章都没有 Spark,却无一例外地包含了dbt。

过去、现在与未来

dbt的创始人Tristan Handy表示,他从2015年开始整理"现代技术栈",整整五年的时间里,构成最佳技术栈的这个集合一直维持不变。

Tristan Handy归纳的现代数据技术栈的三个不同时间段:

寒武纪大爆发第一阶段,2012-2016

现代数据技术栈是围绕着亚马逊2012年10月份发布的Amazon Redshift而产生的。

数据技术栈中其他层的核心产品的创建日期:

  • Chartio: 2010

  • Looker: 2011

  • Mode: 2012

  • Periscope: 2012

  • Fivetran: 2012

  • Metabase: 2014

  • Stitch: 2015

  • Redash: 2015

  • dbt: 2016

redshift之后的融资.png

你可以看到2012年的确是时代开始了。这种天地之别是由于像Redshift这种MPP(大规模并行计算)/OLAP系统的内部架构和类似于Postgres这种OLTP系统的显著的区别带来的。

简而言之,Redshift能够在巨大的数据集上响应分析查询,处理很多个数据表关联,比OLTP数据库要快10-1000倍。10-1000倍的性能提高往往会改变你对产品构建的看法。

BigQuery直到2016年才发布标准SQL的支持,因此在这之前并没有被广泛采用。Snowflake的产品直到2017-2018年才真正的成熟。

部署期,2016-2020

事实证明,这是行业要经历的一个正常的周期。一个主要的可用技术一旦发布,激发了该领域的一系列创新,然后这些产品会经历一个部署阶段使得公司去采用它们。


部署S曲线.png

这是向上S曲线的一个过程,早期采用者是宽容的,但是技术需要改进才能被越来越多的受众所采纳。

这一阶段在国内基本属于经典大数据的扩张期,以及上云的兴起阶段。

寒武纪大爆发第二阶段,2020-2025

快速的做个总结,在2012年Redshift发布之后,我们立刻看到了大量的创新,释放了全新水平的性能、效率以及新的用户习惯。然后到了一个成熟期,这些新生的产品被部署到市场,精进技术,并完善功能。到现在为止,这些新产品已经准备好可以充当建立新的后续创新的基石。
我们准备迎接新的一波创新,一个新的寒武纪大爆炸。这将带来哪些类型的创新?

  • 数据治理
    数据治理是一个时机成熟的产品领域。这个产品领域包括非常广泛的用户用例,包括数据集的发现,查看数据的血缘关系和谱系,以及为数据优先的公司内地广泛的数据使用者提供数据导航和数据痕迹。
    没有很好的治理,更多的数据=更多的混乱=更少的信任。

    有商用的,但缺乏广大的用户量。

    • Linkedin有DataHub
    • Lyft有Amundsen
    • Wework有Marquez
    • Airbnb有Dataportal
    • Spotify有Lexikon
    • Netflix有Metacat
    • Uber有Databook
  • 实时
    对于今天的现代数据技术栈的主要用例来讲,实时数据当然不是必须的,但是将整个数据处理流的延迟降低到15-60秒可以为这个技术解锁全新的用例。
    并且我们已经有信号能够感受到这个领域的技术已经触手可及:每个主要的数据仓库开始实现支持构造更多的实时数据流。

    • Snowflake非常强大依赖它的流式功能,而Bigquery和Redshift都强调他们的物化视图。这两种方法都在朝着正确的方向前进,但是以我来看,这两种方法都无法让我们走到终点。
    • 另外有趣的话题是KSQL, 一个在Kafka之上构建的流式SQL。它的确非常对有趣并且有前景,但是围绕着SQL还是存在一些限制(尤其是在表关联上),因此对于我来讲,它还是一个“还欠点火候”的东西。
      我们还没真正达到目标,但是我们已经能够看到胜利的曙光。
  • 完成反馈闭环
    数据从运营系统流入到现代数据技术栈,并在这里进行分析,支持生产业务系统,Census和Tray可以关注。

  • 民主化数据探索

    • 这是一个可能引起争议的观点。
      今天不使用SQL的数据消费者有很多的选择。所有的主流的BI工具都有一些不用SQL就能辅助数据探索的操作界面。但是绝对没有一个(包括LookML)甚至能够远远的接近Excel的广泛采用水平或者纯粹的创作的灵活性。
      这个挑战是不平凡的,如果没有一个强大的,灵活的工具能让数据消费者自服务,现代数据技术栈将永远只为少数人服务,这是一个非常糟糕的结果。
  • 垂直分析体验
    将所有的数据视为行和列的工具和专门用于某种特定数据类型的分析工具哪种更好?答案是:我们两者都需要。但是我们缺少的是在现代数据技术栈上构建的垂直的分析界面。
    随着使用现代数据技术栈的公司的增加,构建像这种新的、轻量级的、垂直的应用的机会将会大大的增加。你已经可以在Looker的应用市场中看到这个方向。

关于实时

现代企业的需求和要求正在以戏剧性的方式转变。因此,旧的“批处理”模式正在让位于更细化、更高频率的实时更新,从而带来更新鲜的数据和更快的洞察力。

除了分析性的洞察力,实时数据基础设施正在促成一类新的应用,可以在数据发生变化时做出反应。这涉及到数据堆栈的每一个部分,从数据摄取,到业务分析,到机器学习和人工智能。

在现代数据栈中,实时基础设施和工具可以采取多种形式:

  • 以高频率和高容量将小数据包从A处流向B处(例如:Apache Kafka、Redpanda、Apache Pulsar)。
  • 通过流处理工具过滤和转换对流数据(例如:Apache Flink、Apache Samza、Decodable)。
  • 实时分析,让分析师在低延迟的情况下获得对业务查询的最新反馈(例如:Materialize、ClickHouse、Tinybird)。
  • 实时或在线机器学习模型,不断适应和学习数据,并实时生成预测(例如:Tecton)。

今天,将这些不同的系统组合起来仍然是是一件棘手的事情,但是,进行这些投资的组织将获得丰厚的回报。

关于数据栈民主化

数据管理简化浪潮是一个非常重要的趋势。

对于数据民主化的一个定义。总结起来就是:数据民主化是让一个组织中所有人都可以无阻碍的去访问需要的数据,从而让这个组织中的每个人都可以随时随地的基于数据去做决策而不会受到限制。

数据民主化是目前海外数据领域一个比较热门的词汇,作者认为这跟海外的社会环境以及企业发展的现状密不可分。对于国内来讲,由于我们国情的不同,数据民主化应该还有相当长的一段路要走。

现代数据栈的未来

现在采用现代数据技术栈路线的公司一般会根据需要来采用其中合适的技术-也就是你并不需要里边所有的组件,有些公司也可能会采用其他的技术,比如Airflow, Dagster或者Prefect用作编排层。一个简单的架构示例如下图:


数据栈未来1.png

仅仅在云上拥有一个数据平台并不能称之为一个"现代数据技术栈"。如果我们纵观整个生态系统中的技术,我们会发现他们有一些共同的属性,这些属性正是现代数据技术栈的核心,是作为现代数据技术栈的关键能力:

  • 提供一个托管式的服务:不需要或者让客户尽量少的配置就能使用,并且绝对不需要工程师的介入。用户可以立即可以开始使用,这绝对不是一个乏味的营销承诺。

  • 以云数据仓库为中心:如果公司正在使用一个流行的云端数据仓库,所有的一切前提条件就已经具备。因为已经知道数据在哪里,你就彻底消除了杂乱无序的集成,并且所有工具都可以很好的一起工作。

  • 通过以SQL为中心的生态系统来使得数据民主化:工具是为了数据/分析工程师和业务人员所构建的。这些用户通常最了解公司的数据,因此通过为他们提供会说他们语言的工具来提高他们的技能是非常有意义的。
  • 弹性工作负载:按照使用量付费。对于大的处理负载,可以随时进行扩容。对于现代的云来讲,金钱是限制规模的唯一因素。
  • 专注于可以运行的工作流:点击式工具对于低技术用户来说是很好的,但是如果没有可行的路径让相关工作转移到生产,它就是毫无价值。现代数据堆栈工具通常以自动化为核心能力构建。

ps:这就像智能机时代的到来摧枯拉朽地席卷了功能机的时代,处于变革前夕的路口仍然能看到过去Nokia的辉煌,但落幕就在一夕之间,错愕、无情、又理所当然。


数据栈历史.png

云数据仓库本身很有用,但不是变革性的。围绕这些平台涌现的生态系统真正使现代数据技术栈成为现实。创新者在开始将精力和资源投入到新的创新中之前,还需要看到来自用户的积极信号;否则,他们就有可能在一个死的平台上进行创新的风险。
Handy 得出的结论是,未来五年现代数据技术栈应该会出现另一轮创新,他强调了他认为已经成熟的五个关键领域值得探索:数据治理、实时、完成和反馈循环、数据访问民主化以及垂直分析体验。

在现代数据技术栈成长到今天这个时候,我相信如下的几个关键领域的创新正在成熟:

  • 人工智能

  • 数据分享

  • 数据治理

  • 流式计算

  • 应用服务

人工智能

任何在过去十年从事数据科学相关的工作的人都可能熟悉"Data Science Hierarchy of Needs", 它如下图所示:


数据科学5层需求图.png

每个步骤都是环环相扣的,该图说明了达到甚至可以开始解决 AI 问题的所需要的依赖。具象化的需求图已经呼之欲出,只缺AI层:


数科需求图实现1.png

对于许多业务来讲,AI代表了巨大的增长机会。我们相信到 2030 年,几乎每个行业的领先公司都将把在整个企业中启用人工智能作为优先考量的事情。然而,不乏文章哀叹普通公司未能将他们的数据科学工作投入到有意义的生产环境中。现代数据技术栈是一个新型AI平台的一个重要的着陆点,这个AI平台是一个声明式的数据优先的AI平台,能够大幅度的简化操作AI的复杂度。

数据分享

数据即服务

数据只有被分享和能流动才能产生更大的价值。(Census和Hightough 反向ELT)

数据治理

回到让现代数据技术栈能够服务大型企业这个话题:数据治理的重要性再怎么强调都不为过。一些公司有如此多的数据集,如果没有数据治理工具,几乎不可能跟踪和理解他们的数据。这是一个单个的个体会经常忽略的问题-与公司总体的数据视图相比,一个人的视野通常会比较有限。但是优秀的数据领导者会始终如一的强调好的数据治理工具的重要性,这些工具通常涵盖数据发现、数据可观测性、数据目录、数据血缘以及审计等等。

在现在数据技术栈为背景的基础上,有不少公司在尝试解决这个问题。尽管这场竞赛还远未结束,但是有一些供应商表现出了巨大他的前景:Monte Carlo Data, Stemma以及Metaplance。

流式处理

今天,相关流式处理功能已经在不同的供应商的平台中提供:Snowflake有Snowpipe并且暗示了一些新的能力,BigQuery, Redshift以及Snowflake有物化视图(尽管有一些严重的限制); Databricks支持Structured Streaming。除了这些标准的CDW提供商外,Confluent提供ksqlDB, Decodable正在重新设计流式数据工程,Meterialize是一个新定位自己的现代数据技术栈原生的流式计算的公司(通过使用dbt插件)。
如果有人能够提供一种解决方案,我不需要考虑基础设施,将我的数据移动到一个新平台,并且可以通过标准 SQL 查询简单可靠地获取实时数据,这将是非常值得大书特书的。

应用服务

云端数据仓库完全属于OLAP类型,然后实际的应用经常需要高并发和低延迟,这通常是OLTP类型的特性。

现代数据栈3.png

拭目以待

考虑现代数据栈?

数据湖扮演什么角色?

数据湖仍然有一席之地,但不是今天这个样子。随着时间的推移,关系SQL数据仓库将替换数据湖。

Snowflake与MDS

「现代数据栈」是否成立并不取决于技术本身,而是背后更大的前置条件——市场是否接受公有云。

Snowflake让很多人知道了云数仓,云数仓也是MDS的核心一环,没有云数仓的MDS犹如海市蜃楼。CDW 改变了企业收集与统一数据的方式,创业公司只需要接入几家主流 CDW,以 SaaS 的形式提供服务,专注在自己核心的价值主张上,然后迅速成长并吸引到资金。

Fivetran与MDS

Fivetran的使命是让用户使用数据就像用电一样简单,无论数据的来源如何。它在传统的ETL赛道上创新,独创了适合云计算时代的ELT+E模式。目前,Fivetran估值56亿美元,是数据整合赛道的领导者,与Snowflake、IBM、SAP、Oracle等数据库或数据仓库连接,与ASICS、Autodesk、DocuSign、Forever 21、WeWork等知名公司是合作伙伴。

Fivetran支持数百个数据库的连接。

如果数据是新石油, Fivetran就是从源头到炼油厂的管道。

每多一种连通,就意味着要增加一种连接器。Fivetran目前支持超过150种数据源,这是Fivetran的护城河,也是在数据整合赛道中无与伦比的竞争优势。

Airbyte的产品主要的使用场景跟Fivetran非常类似,是ELT + E的场景,关注数据的互联互通,和最终的数据交付。

回头来讲,Airbyte和Fivetran唯一的区别是:产品是否开源。

附录

参考链接

关于现代数据技术栈的浅见 https://www.modb.pro/db/377596
面向初创公司的现代数据堆栈 https://jiagoushi.pro/modern-data-stack-startups
现代数据栈谁可以替换Spark https://mp.weixin.qq.com/s/YPDyKohKdw0-wqzoaCSD1g
Tristan Handy,2020年12月,The Modern Data Stack:Past Present, and Future
2025年的现代数据栈 https://m.meremoggies.com/blog/modern-data-stack-2025
2021 年要寻找的 6 种现代数据堆栈趋势 https://segmentfault.com/a/1190000038585639
聊一下数据民主化 https://www.modb.pro/db/377592
Jordan Volz,现代数据栈的未来 https://continual.ai/post/the-future-of-the-modern-data-stack
Fivetran:云计算时代的数据管道 https://view.inews.qq.com/a/20220119A08J9Z00

有关现代数据栈,谁主沉浮?的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  3. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  4. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  5. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  6. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  7. ruby-on-rails - 创建 ruby​​ 数据库时惰性符号绑定(bind)失败 - 2

    我正在尝试在Rails上安装ruby​​,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf

  8. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  9. SPI接收数据异常问题总结 - 2

    SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

  10. 微信小程序通过字典表匹配对应数据 - 2

    前言一般来说,前端根据后台返回code码展示对应内容只需要在前台判断code值展示对应的内容即可,但要是匹配的code码比较多或者多个页面用到时,为了便于后期维护,后台就会使用字典表让前端匹配,下面我将在微信小程序中通过wxs的方法实现这个操作。为什么要使用wxs?{{method(a,b)}}可以看到,上述代码是一个调用方法传值的操作,在vue中很常见,多用于数据之间的转换,但由于微信小程序诸多限制的原因,你并不能优雅的这样操作,可能有人会说,为什么不用if判断实现呢?但是if判断的局限性在于如果存在数据量过大时,大量重复性操作和if判断会让你的代码显得异常冗余。wxswxs相当于是一个独立

随机推荐