是时候将数据分析迁移到云端了。我们比较了 Databricks 和 Snowflake,以评估基于数据湖和基于数据仓库的解决方案之间的差异。
在这篇文章中,我们将介绍基于数据仓库和基于数据湖的云大数据解决方案之间的区别。我们通过比较多种云环境中可用的两种流行技术来做到这一点:Databricks 和 Snowflake。
正如我们在上一篇文章中了解到的,数据分析平台可以分为多个阶段。上面,我们可以看到一张图片,大致了解了管道中 Snowflake 和 Databricks 的角色。在这里,我们可以将工具分类为处理(绿色)或存储(蓝色)。 Databricks 是一种处理工具,而 Snowflake 涵盖了处理和存储。另一方面,Delta Lake 是与 Databricks 相关的存储解决方案。我们稍后会介绍。
根据上一篇给出的定义,我们可以粗略的说Databricks是一个基于数据湖的工具,而Snowflake是一个基于数据仓库的工具。现在让我们更深入地研究这些工具。
Databricks 是具有数据仓库功能的数据湖工具
Databricks 是一个基于 Apache Spark 的处理工具,它为编程环境提供高度可自动扩展的计算能力。Apache Spark 是基于编码的大数据处理的事实上的标准编程框架。
Databricks 计费本质上是基于使用情况的。您为使用的计算资源付费,仅此而已。原则上,Databricks 特别适合在管道的早期阶段处理数据,尤其是在青铜层和银层之间。它也可用于准备黄金层数据,但在为报告工具等提供数据方面并不是最好的。
最近,Databricks 已将其能力大幅扩展至传统数据仓库的方向。Databricks 提供了现成的 SQL 查询接口和轻量级的可视化层。此外,Databricks 提供了一种数据库类型的表结构。数据库类型功能是专门使用 Delta 文件格式开发的。
Delta 文件格式是一种将数据库优势带入数据湖世界的方法。除其他外,该格式提供数据模式版本控制和数据库类型 ACID 事务。根据数据湖范式,文件格式本身是开放的,任何人都可以免费使用。
基于 Delta 格式和 Databricks 工具,该公司正在尝试为数据湖和数据仓库混合方法传播一种新颖的“Data Lakehouse”范式概念。
Snowflake 是一个借鉴数据湖范式的可扩展数据仓库
Snowflake 是专为云环境开发的可扩展数据仓库解决方案。 Snowflake 以专有文件格式将数据存储在云存储中。因此,根据数据仓库范式,数据只能通过 Snowflake 获得。除了计算资源外,您还需要为雪花文件格式的数据存储付费。但是,您还可以使用典型的数据仓库功能,例如可用的精细权限管理。
几年前,Snowflake 通过提供高度分布式和可扩展的计算能力扰乱了数据仓库市场。这是通过在数据仓库架构中完全分离存储和处理层来完成的。传统上,这一直是大数据世界中数据仓库解决方案的主要障碍。这是 Snowflake 向数据湖范式方向扩展其解决方案的方式之一。如今,它提供了用于实时数据摄取的高效工具等。
说 Snowflake 的成功给 Amazon Redshift 和 Azure Data Warehouse 开发带来了危机,这可能并不为过。后两种数据仓库解决方案的可扩展性明显受到更多限制:如果您想避免高额费用,则需要在小存储容量或慢处理之间进行选择。很多时候,很难找到合适的组合。因此,您通常会为您没有实际使用的储备资源支付大量资金。尽管如此,这两款产品都已采取措施解决这个问题。
结论:Databricks 和 Snowflake
在这篇文章中,我们讨论了两个非常流行的多云数据分析产品:Databricks 和 Snowflake。正如上一篇博文中所讨论的,我们从它们的背景范式的角度专门研究了它们。
我们注意到 Snowflake 在数据仓库领域有基础,而 Databricks 更面向数据湖。然而,两者都将其范围扩展到了其范式的典型限制之外。
这两种工具绝对可以单独使用来满足数据分析平台的需求。 Databricks 可以直接从存储中提供数据或将数据导出到数据集市。不需要单独的数据仓库。另一方面,可以将数据直接摄取到 Snowflake 进行处理、建模和提供。以我的经验,纯Snowflake解决方案更常见,可能是因为 Databricks 已经出现很久了。
然而,正如在上一篇文章中提到的,在一个平台上同时使用这两种产品可能是个好主意。图中描述了这种解决方案的故障,Databricks 读取和处理原始数据,Snowflake 负责管道的发布端。同样重要的是要注意 Databricks 和 Snowflake 正在合作以更好地集成产品。
总而言之,混合解决方案的未来似乎更加光明。