是时候将数据分析迁移到云端了——您选择数据仓库还是数据湖解决方案?了解这两种方法的优缺点。
数据分析平台正在转向云环境,例如亚马逊网络服务、微软 Azure 和谷歌云。
云环境提供了多种好处,例如可扩展性、可用性和可靠性。此外,云提供商有大量的原生组件可供构建。还有多种第三方工具可供选择,其中一些是专门为云设计的,可通过云市场获得。
工具自然倾向于强调自己在分析集成中的作用。当您尝试选择最佳工具集时,这通常会令人困惑。在这篇文章中,我们将详细介绍许多工具的优缺点。
这是一个由三部分组成的系列文章的第一篇,我们评估了基于数据仓库和数据湖的解决方案的基本方法或范式的差异。
博客系列
- 数据湖和仓库第 1 部分:范式简介
- 数据湖和仓库第 2 部分:Databricks 和雪花
- 数据湖和仓库第 3 部分:Azure Synapse 观点
两种范式:数据湖与数据仓库
基于一些主要组件的选择,云分析解决方案可以分为两类:数据湖和数据仓库。简而言之,数据仓库解决方案传统上是集中式的,而数据湖解决方案则分散到核心。这两种方法都有其优势,并且通常用于略有不同的目的。如今,产品具有这两个类别的典型特征是很常见的。即便如此,产品仍然展示其原始类别及其观点。
让我们将这种基本类别方法称为范式。理解范式的基本哲学有助于理解全局。
在这篇文章中,我们深入挖掘了范式的特征和差异。我们首先将分析平台划分为典型的组件阶段。在此之后,我们讨论从两种范式的角度选择组件的方法。
在本系列的下一篇文章中,我们将讨论如何在一些流行的产品中看到范式。
数据分析平台通常根据它们所涵盖的过程部分分为多个阶段。典型的批量数据流水线平台如上图所示。但是,文章分析也适用于实时平台。这些工具可以从处理(绿色)或存储(蓝色)的角度进行分类。下面的工具行对应于它们在平台不同阶段的可用性。
例如,典型的数据湖解决方案由单独的处理和存储工具组成。在数据仓库的情况下,一个单一的解决方案通常同时兼顾处理和存储功能。让我们更清楚一点。
从处理(绿色)的角度来看,数据平台阶段是:
- 摄取 (Ingest )- 使用 API 接口或 ELT/ETL 工具从源系统读取数据
- 准备(Prepare)——数据将进行初步清理和检查
- 转换和丰富(Transform & Enrich)——根据用例丰富和修改数据
- 服务 (Serve)- 准备好的数据提供给选择的工具以供实际使用
- 可视化和报告(Visualize & Report )——信息以可视化或报告的形式提供给最终用户
此外,大数据世界的当前趋势是根据应用的处理级别将数据存储在多个层中。数据存储层(蓝色)通常至少包括:
- 原始(也称为青铜)——未处理的源数据,按原样存储
- 精炼(银)——经过初步清理和标准化的质量验证数据。数据通常尚未修剪。
- 已发布(金)——经过处理、组合和丰富的数据。通常,数据也已针对特定用例进行聚合和修剪。
数据存储层的确切覆盖范围因源而异,但此处的细节无关紧要。但是,重要的是要注意,尤其是在银层和金层中,数据可以存储不止一次。例如,黄金层通常为不同的使用场景提供多个版本的数据。
比较数据分析平台
传统上,数据分析平台是用于公司报告目的的解决方案。对于这个用例,基于关系数据库的数据仓库是事实上的标准。但是,数据仓库不太适合处理新类型的数据,通常称为大数据。问题是由于数据量、实时要求和类型多样性造成的,其中包括非结构化和半结构化数据。为了补充工具集,在过去十年左右开发了数据湖类型的解决方案。
根据 Wikipedia 中的一个非常广泛的定义,数据湖是一种可以以原始形式存储数据的解决方案。一般来说,这意味着任何文件格式的潜在存储容量都是无限的。在实践中,该术语还涵盖处理存储数据的工具。
市场上倾向于将产品展示为“整体数据湖解决方案”。通常他们是对的:理论上,即使是具有大硬盘驱动器的虚拟机也能让有能力的编码人员创建数据湖解决方案。自然,这种极简主义的定义不是很有用。
相反,考虑范式的差异更有意义:数据仓库的基本原则和基于数据湖的解决方案。
数据仓库:以有组织的结构提供的已清理数据
对于数据仓库范式,基本方法是提供一个集中式产品,使数据能够存储在有组织的层次结构中,通常以数据库表的形式。该解决方案包括表之间的外键引用、细粒度数据加密和详细的用户访问管理等内容。对数据的访问主要通过特定的数据仓库产品处理,通常使用 SQL 语言。
数据仓库范式的优点是能够定义向用户提供的数据和格式。通常,数据以经过处理和干净的格式提供。例如,这样我们就可以保证数据的有效性。此外,源系统和数据的变化至少在某种程度上对用户是隐藏的。
另一方面,作为限制,我们依赖单一的产品供应商。例如,只能以产品支持的方式从数据仓库解决方案中检索数据。此外,我们需要以一种或另一种方式为数据的检索付费。数据仓库解决方案也可能成为数据处理的资源瓶颈。最近,在解决后一个限制方面取得了重大进展。
数据湖:去中心化带来的自由
数据湖范式的核心原则是责任分散。借助大量工具,任何人都可以在访问管理的范围内使用任何数据层中的数据:青铜、白银和黄金。组织数据和表的关系是可以的,但是通常不强制使用,我们可以很容易地绕过它们。
数据湖解决方案的一个主要优势是计算和处理工具的去中心化。数据科学家可以在自己的机器上使用青铜层数据进行 Python 图像分析,数据工程师可以使用 Apache Spark 修改银层数据,分析师可以通过报告工具利用黄金层数据。SQL 语言通常作为一种可能性提供。此外,计算是分散的,几乎没有瓶颈。
数据湖范式解决方案的一个主要弱点是缺乏数据组织,包括集中的元数据存储库。如果由于纠错或源系统修改而导致处理的数据更改,则可能非常难以跟踪。此外,不能始终保证数据的有效性或结构。集中式数据湖元数据管理工具越来越多,但使用它们取决于开发过程。技术很少强制这样做。
结论:数据湖和数据仓库
在这篇文章中,我们讨论了数据仓库和基于数据湖的解决方案的基本方法或范式的差异。基于数据仓库的解决方案通常是集中式的,而数据湖解决方案则分散到核心。然而,这两个类别的工具都在发展,并且划分变得越来越不清晰。然而,理解范式方法有助于理解全局。
原则上,您可以纯粹在数据湖或基于数据仓库的解决方案上构建云数据分析平台。
我见过大量基于数据湖工具的功能齐全的平台。在这些情况下,可以使用特定于用例的数据库数据集市来提供信息,而根本不需要数据仓库。
另一方面,也有成功的解决方案,其中整个平台都建立在数据仓库产品之上。数据直接读入数据仓库,在那里进行处理和服务。
但是,由于此处解释的差异,基于其中一种范例的解决方案不一定在所有情况下都是最佳的。他们的优势和基本理念是不同的。在处理青铜级和白银级数据时,在早期阶段利用基于数据湖的方法可能是有意义的。然后可以将数据存储在数据仓库中,以进一步组织成白银和黄金数据。通过这种方式,所有数据既可以用于快速实验的原始格式,也可以用于报告的结构格式。
这样,我们可以利用这两种方法的优势。