现代数据栈或数据栈是作为企业数据基础架构基础的云原生应用程序的集合。现代数据栈的概念已迅速普及,并已成为各种规模的组织从数据中提取价值的事实上的方式。与工业价值链一样,现代数据栈遵循摄取、转换、存储和产品化数据的逻辑。
本博客是对现代数据栈的介绍,在接下来的文章中我们将深入探讨每个不同的组件。
什么是现代数据栈?
现代数据栈可以定义为用于将原始数据转换为可操作的业务洞察力的不同技术的集合。源自这些不同工具的基础架构可用于降低管理数据平台的复杂性,同时确保数据得到充分利用。公司可以采用最适合其需求的工具,并且可以根据用例添加不同类型的层。
现代数据栈简史
几十年来,本地数据库足以满足公司为其用例存储的有限数据量。然而随着时间的推移,数据量呈指数级增长,这要求公司找到解决方案来保留所有信息。这导致了新技术的出现,使组织能够处理大量数据,如 Hadoop、Vertica 和 MongoDB。这是 2000 年代的大数据时代,当时系统通常是分布式 SQL 或 NoSQL。 大数据时代持续了不到十年,但在 2010 年代初和中期被广泛采用的云技术打断。传统的本地大数据技术难以迁移到云端。与更敏捷的云数据仓库相比,它们更高的复杂性、成本和所需的专业知识使它们处于劣势。这一切都始于 2010 年的 Redshift——几年后 BigQuery 和 Snowflake 紧随其后。
使现代数据栈得到广泛采用的变化
重要的是要记住,我们目前所知道的现代数据栈是数据的最新发展。只有最近的技术变化才能让公司充分利用其数据的潜力。让我们来看看支持采用现代数据栈的一些关键发展。
云数据仓库的兴起
2012 年,当亚马逊推出 Redshift 时,数据仓库格局发生了显著的变化。当今市场上的所有其他解决方案(例如 Google BigQuery 和 Snowflake)都遵循了亚马逊发起的革命。这些数据仓库工具的开发与 MPP(大规模并行处理)或 OLAP 系统(如 Redshift)和 OLTP 系统(如 PostgreSQL)之间的差异有关。但我们将在关注数据仓库技术的博客上更详细地讨论这个话题。
那么云数据仓库发生了什么变化?
• 速度级别:云数据仓库显着减少 SQL 查询的处理时间。在 Redshit 之前,计算缓慢是大规模利用数据的主要障碍。
• 连接性:云数据仓库将数据源连接到数据仓库在云中要容易得多。最重要的是云数据仓库管理的格式和数据源比本地数据仓库多。
• 用户可访问性:本地数据仓库由*团队管理。这意味着最终用户的访问受到限制或间接访问。另一方面,所有目标用户都可以访问和使用云数据仓库。这自然会在组织层面产生影响。也就是说本地数据仓库限制了保存服务器资源的请求数量,从而限制了充分利用可用数据的潜力。
• 可扩展性:云数据仓库的兴起使得越来越多的人可以访问数据成为可能,使组织内数据*化。
• 可负担性:云数据仓库的定价模型比传统的本地解决方案(如 Informatica 和 Oracle)灵活得多,因为它们基于存储的数据量和/或消耗的计算资源。
从 ETL 到 ELT
在之前的博客中,我们已经讨论过从 ETL 过渡到 ELT 的重要性。简而言之,通过 ETL 流程,数据在加载到数据仓库之前进行了转换。另一方面,使用 ELT,在进行任何转换之前将非结构化数据加载到数据仓库中。数据转换包括清理、检查重复项、使数据格式适应目标数据库等等。在数据加载到仓库之前进行所有这些转换可以让公司避免数据库过载。这就是传统数据仓库解决方案如此依赖 ETL 的原因。随着云的兴起,存储不再是问题,管道管理的成本也急剧下降。这使组织能够将所有数据加载到数据库中,而无需在提取和摄取阶段做出关键的战略决策。
自助分析和数据*化
云数据仓库的兴起不仅促进了从 ETL 到 ELT 的过渡,而且也促进了 Power BI、Looker 和 Tableau 等 BI 工具的广泛采用。这些易于使用的解决方案允许组织内越来越多的角色访问数据并做出数据驱动的业务决策。
云数据仓库是唯一重要的吗?
重要的是要记住,仅仅拥有一个基于云的平台并不能使数据栈成为现代数据栈。正如 Jordan Volz 在他的博客中所写,许多云架构无法满足被纳入该类别的要求。对他而言,技术需要满足五项主要功能才能包含在现代数据栈中。
• 它需要以云数据仓库为中心
• 它必须作为托管服务提供:只需最少的设置工作和用户配置
• 它使数据*化:这些工具的构建方式使组织内尽可能多的人可以访问数据
• 弹性工作负载
• 它必须将自动化作为核心竞争力
现代数据栈的主要组件
现代数据栈的目标是使数据更具可操作性,并减少从组织中的信息中获取洞察所需的时间和复杂性。然而由于数据工具和技术的数量不断增加,现代数据栈变得越来越复杂。让我们分解现代数据栈中的一些关键技术。各个组件可能会有所不同,但通常包括以下内容:
数据集成
主要工具:Airbyte、Fivetran、Stitch、Portable
组织从各种系统(如数据库、CRM 系统、应用程序服务器等)收集大量数据。数据集成是将这些不同源系统中的数据提取并加载到单个统一视图中的过程。数据集成可以定义为将数据从整个企业发送到集中式系统(如数据仓库或数据湖)的过程,从而形成一个单一、统一的位置,用于访问流经数据中心的所有信息。
数据转换/建模
主要工具:dbt
如果原始数据没有以允许组织对其进行分析的方式结构化,那么它就完全没有用。这意味着需要先转换数据,然后才能使用它来获得洞察力并预测业务。数据转换可以定义为改变数据格式或结构的过程。正如我们在本博客中所解释的,数据可以在数据管道的两个不同阶段进行转换。通常使用本地数据仓库的组织使用 ETL(提取、转换、加载)流程,其中转换发生在中间——在数据加载到仓库之前。
但是当今大多数组织都使用基于云的仓库,这使得可以显着增加仓库的存储容量,从而允许公司存储原始数据并在需要时对其进行转换。该模型称为 ELT(提取、加载、转换)。
工作流编排
主要工具:Airflow、Dagster
一旦你决定了转换,你需要找到一种方法来编排它们,以便它们以你喜欢的频率运行。数据编排使与数据摄取相关的流程自动化,例如将来自多个来源的数据汇集在一起,将其组合起来,并为分析做准备。
数据仓库
主要工具:Snowflake、Firebolt、Google BigQuery、Amazon Redshift
如果不访问仓库则无法访问数据,因为数据仓库是一个连接所有其他部分的地方。因此所有数据都会流入和流出数据仓库。这就是为什么我们认为它是现代数据栈的中心。
反向 ETL
主要工具:Hightouch、Census
简单来说,反向 ETL 就是 ETL 的逆过程。基本上是将数据从仓库转移到外部系统(如 CRM、广告平台或任何其他 SaaS 应用程序)以使数据可操作的过程。换句话说反向 ETL 允许将数据仓库中的数据提供给业务团队——弥合数据团队的工作与最终数据消费者的需求之间的差距。这里的挑战与越来越多的人要求组织内的数据有关。这就是为什么今天的组织旨在参与所谓的运营分析,这基本上意味着将数据提供给运营团队(如销售、营销等)以用于功能用例。但是,由于缺乏将数据直接从仓库转移到不同业务应用程序的管道,业务团队难以访问云数据仓库并充分利用可用数据。数据仓库中的数据的使用仅限于创建仪表板和 BI 报告。这就是反向 ETL 对于完全使用数据至关重要的地方。
商业智能与分析
主要工具:Power BI、Looker、Tableau
BI 和分析包括允许访问组织收集的数据以优化业务决策和绩效的应用程序、基础架构和工具。
数据可观测性
数据可观测性已成为现代数据栈不可或缺的一部分。对 Gartner 而言,数据可观测性对于支持和增强任何现代数据架构至关重要。正如我们在本博客中所解释的,数据可观测性是 DevOps 世界中的一个概念,适用于数据、数据管道和平台的上下文。与软件可观测性类似,数据可观测性使用自动化来监控数据质量,以便在潜在数据问题成为业务问题之前识别它们。换句话说,它使数据工程师能够监控数据并快速解决任何可能的问题。随着组织每天处理更多数据,他们的数据栈变得越来越复杂。同时不容忍不良数据,这使得全面了解数据管道的状态以监控质量、性能或效率的损失变得越来越重要。最重要的是组织需要在数据故障传播之前识别它们,从而了解在数据灾难的情况下下一步该做什么。 数据可观测性可以采取以下形式:
• 观测数据和元数据:这意味着监控数据及其元数据以及历史模式的变化,并观察准确性和完整性。
• 观测数据管道:这意味着监控数据管道和元数据中关于数据量、频率、模式和行为的任何变化。
• 观测数据基础设施:这意味着监控和分析查询日志中的处理层日志和操作元数据。
这些不同形式的数据可观测性有助于数据工程师和分析工程师等技术角色,也有助于数据分析师和业务分析师等业务角色。
有完美的数据栈吗?
现在可能会问自己:每个组织都应该采用完美的数据栈吗?回答是否定的。在选择最佳工具和技术来处理数据时,没有一种万能的方法。每个组织都有不同的数据成熟度、不同的数据团队、不同的结构、流程等等。但是我们可以将现代数据栈分为三个不同的组:基本、中级和高级。
基本数据栈
一个基本的数据栈应该能够使用 dbt 或自定义 SQL 摄取、存储、建模数据,然后根据用例,组织制定其反向 ETL 流程以进行运营分析或投资于 BI 工具。通常基本数据栈中的 BI 工具是开源工具,例如 Metabase。最重要的是一个基本的数据栈包括测试或数据质量监控的基本形式。
中级数据栈
中级数据栈要复杂一些,除了我们上面描述的内容之外,它还包括某种形式的工作流编排和数据可观测性工具。基本测试和数据质量监控使团队能够了解数据资产的质量状态。但是它们无法提供知道如何快速解决潜在问题的方法。这就是数据可观测性的用武之地。整个数据栈(日志、作业、数据集、管道、BI 仪表板、数据科学模型等)的数据可观测性信号 - 支持大规模监控和异常检测。
高级数据堆栈
高级数据堆栈包括以下技术和工具:
• 集成:使用 Airbyte、Fivetran 和 Segment 等工具将数据从一个地方提取并加载到另一个地方
• 仓储:将所有数据存储在一个地方——使用 Snowflake、Firebolt、Google BigQuery 和 Amazon Redshift 等工具
• 转换:将数据转化为可用数据——使用 dbt 等工具
• 工作流程编排:使用 Airflow 和 Dagster 等工具将来自不同来源的数据汇总、组合并为分析做准备
• 反向 ETL:将数据从仓库移动到外部系统——使用 Hightouch 和 Census 等工具
• BI 和分析:使用 Power BI、Looker 和 Tableau 等工具分析组织收集的所有信息并做出数据驱动的决策
• 数据可观测性:确保数据在数据的整个生命周期内(从摄取到 BI 工具)都是可靠的。数据可观测性不是一个组件,而是现代数据栈的监督层。
结论
在过去的几年里,基础设施、技术、流程和实践以惊人的速度发生了变化。云的兴起、云和存储的隔离以及数据*化阻碍了现代数据栈的运动。请记住没有一种万能的方法,而且它是针对特定用例的——取决于组织的数据成熟度级别、数据团队等因素。在此博客上详细了解我们认为您应该如何根据组织的成熟度来建立现代数据团队。
许多人认为数据仓库是现代数据栈的中心。因此为了更好地描述数据管道每个阶段所需的不同流程和工具,我们创造了“仓库左侧”和“仓库右侧”这两个术语。我们基本上将数据仓库之前发生的所有事情称为“左侧”,将数据仓库之后发生的所有事情称为“右侧”。在以下博客中,我们将描述现代数据栈左侧发生的情况,从第一步开始:数据集成。