第 2 章 现代数据基础设施 现代数据基础设施
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在决定构建管道的产品和设计之前,值得了解一下现代数据堆栈的组成。 与技术领域的大多数事情一样,设计分析生态系统或选择产品和供应商并没有唯一正确的方法。无论如何,有一些关键需求和概念已成为行业标准,并为实施管道的最佳实践奠定了基础。
让我们来看看图 2-1 所示的这种基础架构的关键组件。以后的章节将探讨每个组件如何影响数据管道的设计和实施。
数据来源的多样性
大多数组织都有几十甚至上百个数据源,为其分析工作提供数据支持。 数据源在本节涉及的许多方面都各不相同。
图 2-1. 现代数据基础设施的关键组成部分。
源系统所有权
分析团队通常会从组织构建和拥有的源系统以及第三方工具和供应商那里获取数据。 例如,一家电子商务公司可能会在其网络应用程序背后的 PostgreSQL(也称 Postgres)数据库中存储来自购物车的数据。他们还可能使用第三方网络分析工具(如 Google Analytics)来跟踪网站的使用情况。要全面了解客户的购买行为,就必须将这两个数据源结合起来(如图 2-2 所示)。因此,以分析此类行为为目的的数据管道首先要从这两个数据源获取数据。
图 2-2. 一个简单的管道,将多个来源的数据加载到 S3 存储桶,然后再加载到 Redshift 数据库。
备注
术语 "数据摄取"是指从一个数据源中提取数据并将其加载到另一个数据源中。
出于几个原因,了解源系统的所有权非常重要。首先,对于第三方数据源,你可能会受到哪些数据可以访问以及如何访问的限制。大多数供应商都提供 REST API,但很少有供应商会让你以 SQL 数据库的形式直接访问数据。能让你自定义访问数据的内容和粒度的供应商更是少之又少。
内部构建的系统为分析团队提供了更多定制可用数据和访问方法的机会。然而,它们也带来了其他挑战。系统在构建时是否考虑了数据摄取?答案往往是否定的,这会带来各种影响,从数据摄取给系统带来意外负载到无法增量加载数据。如果幸运的话,拥有源系统的工程团队会有时间和意愿与您合作,但在资源有限的现实情况下,您可能会发现这与与外部供应商合作并无二致。
输入界面和数据结构
无论谁拥有源数据,如何获取数据以及以何种形式获取数据,都是数据工程师在构建新的数据摄取时首先要研究的问题。 首先,数据接口是什么?最常见的接口包括以下几种:
-
应用程序背后的数据库,如 Postgres 或 MySQL 数据库
-
系统之上的抽象层,如 REST API
-
Apache Kafka 等流处理平台
-
包含日志、逗号分隔值 (CSV) 文件和其他平面文件的共享网络文件系统或云存储桶
-
数据仓库或数据湖
-
HDFS 或 HBase 数据库中的数据
除界面外,数据结构也各不相同。 下面是一些常见的例子:
-
来自 REST API 的 JSON
-
来自 MySQL 数据库的结构良好的数据
-
MySQL ...