zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

BigQuery vs Snowflake终极指南

2023-04-18 12:36:03 时间

译者 | 李睿

审校 | 梁策 孙淑娟

云计算数据仓库是所有现代数据堆栈的中心。缺少基于云计算的数据仓库,很难从数据中获得见解。数据仓库的核心是一个分析平台,存储分析来自各种数据源的信息,在企业进行高级决策以及回答紧迫的业务查询时,这些数据就会派上用场。如今,数据仓库要么已被企业采用,要么正被逐步部署,其领域内主要代表亦有许多,本文则将只关注BigQuery和Snowflake。

Snowflake是什么?

Snowflake是一种基于软件即服务(SaaS)的仓库解决方案,可在主流的云平台(AWS、Azure、GCP)上运行。它专门为云计算而构建,其中一些关键组件使它从其他云计算数据仓库中脱颖而出。Snowflake于2014年公开发行,此后在数据仓库行业中占有重要一席。截至2021年10月,其市场估值已达903.5亿美元。

Snowflake在云中开发,旨在提供云计算服务,这意味它几乎没有管理或运营开销。作为一种原生的SaaS服务,Snowflake可以处理所有后端基础设施,从而可以让人们把重点放在从数据获取见解上。Snowflake具有高度的可扩展性,支持近乎无限的并发查询。

BigQuery是什么?

作为谷歌云平台的一部分,Google BigQuery于2010年首次推出,是市场上最早的数据仓库解决方案之一。虽然在当时它在很大程度上被认为是一个复杂的查询引擎,但自此之后,Google BigQuery的进步可圈可点,面目一新。

使用BigQuery与Snowflake类似,企业无需设置或维护自己的内部部署基础设施,从而可以专注使用标准SQL发现有意义的见解。Google BigQuery是谷歌的完全原生版本,不在任何其他云平台上运行。

架构

  • Snowflake

Snowflake基于ANSI SQL,是一个完全无服务器的解决方案,存储与计算完全分离。它的架构基于各种传统的共享磁盘和无共享架构,对用户来说可谓一举两得。通过使用持久数据的中央存储库,数据可用于平台中的所有计算节点。

Snowflake利用大规模并行处理(MPP)来处理所有查询。这意味着每个单独的计算集群(虚拟机或服务器)在本地存储。在存储方面,Snowflake将其数据组织到单独的微分区中,然后在内部优化并压缩到列存储中。

事实上,加载到Snowflake中的所有数据都经过重新组织、优化和压缩成列格式,以便可以保存在云存储中。Snowflake对数据存储的所有方面进行自动处理,涉及文件大小、结构、压缩、元数据、统计信息以及其他不能直接可见而只能通过SQL查询访问的数据对象。

Snowflake中的处理是使用“虚拟仓库”或计算资源集群完成的。每个仓库都是一个由多个节点组成的MPP。Snowflake的云服务层协调Snowflake中的所有活动,处理从用户请求、身份验证、基础设施管理、元数据管理、查询解析和优化、访问控制等所有内容。

  • Google BigQuery

Google BigQuery与Snowflake非常相似,也是无服务器、存储与计算分离并基于ANSI SQL,但它的架构完全不同。BigQuery使用一套庞大的多租户服务,驱动该服务的特定谷歌基础设施技术包括Dremel、Colossus、Jupiter和Borg等。Google BigQuery中的计算由Dremel完成,它是一个大型多租户计算集群,并用于执行SQL查询。

Dremel将SQL查询转换为执行树来完成繁重的工作。BigQuery中的叶称为“插槽” (slots)它们从存储中读取数据并进行必要的计算。执行树的分支称为“混合器”(Mixers),,用于处理所有聚合。团队中的单个用户可以根据需要利用数千个插槽来执行查询。

与Snowflake类似,BigQuery将数据压缩成列格式,将数据存储在谷歌的全球存储系统Colossus中。Colossus管理数据复制、恢复和分布式管理,因此不会受单点故障影响。BigQuery使用谷歌公司的Jupiter网络将数据从一个位置快速移动到另一个位置,其所有硬件资源分配和编排都通过Borg完成(谷歌公司推出的Kubernetes前身)。

可扩展性

Snowflake提供自动扩展和自动挂起功能,使集群能够在繁忙或空闲期间停止或启动。用户使用Snowflake无法调整节点大小,但可以通过单击调整集群大小。此外,Snowflake让用户能够自动扩展多达10个数据仓库,单个表中每个队列的DML限制为20个。

同样,BigQuery会根据需要自动配置额外计算资源,并在幕后处理一切。但是,BigQuery默认限制为100个并发用户。这两个平台都允许企业根据需求自动扩展和缩减。此外,Snowflake让用户能够在不同数据仓库中隔离跨业务的工作负载,以便不同的团队可以独立操作而不会出现并发问题。

安全与合规性

Snowflake自动为静态数据提供加密。不过,它不为列提供细粒度的权限,而为模式、表、视图、过程和其他对象提供权限。与其相反,BigQuery提供列级安全性以及对数据集、表格、视图和图表访问控制的权限。

由于BigQuery是谷歌公司的原生产品,所以人们还可以利用其他具有BigQuery内置安全性和身份验证功能的谷歌云服务,从而使集成变得更加容易。Snowflake不提供任何内置的虚拟专用网络。但是,如果Snowflake托管在AWS云平台中,采用AWS PrivateLink可以解决这一问题。

另一方面,采用BigQuery能够利用谷歌公司的虚拟私有云。BigQuery和Snowflake都符合HIPAA、ISO 27001、PCI DSS、SOC1TYPE II和SOC2TYPE II等认证标准。

数据支持

这两个平台都支持结构化和半结构化数据(Avro、Parquet、Orc、CSV、JSON),自2021年9月20日起,Snowflake宣布支持非结构化数据,并已在公共预览版中提供。

管理

使用BigQuery和Snowflake能够管理用户角色、权限和数据安全。所有性能调整都为自动进行,且随着数据量的增长和查询变得更加复杂,两个平台都会在后台自动扩展以满足需求。

此外,由于两个解决方案都是作为SaaS服务提供的,因此所有底层维护和基础设施都会进行处理。BigQuery自动处理所有事情,而Snowflake让管理员可以独立扩展计算和存储层。这意味着可以隔离工作负载,而无需处理与Snowflake中的虚拟仓库相关的大小调整和许可工作。

数据保护

BigQuery和Snowflake在保护数据方面都做得非常出色。Snowflake可以采用时间旅行(Time Travel)和故障保护(Fail-safe)这两个功能帮助解决这个问题。借助时间旅行,Snowflake会在数据更新之前保留数据状态。时间旅行的标准保留期为一天(企业客户可以指定最多90天的期限),可以应用于数据库、模板和表。

使用故障保护,Snowflake可以恢复历史数据。其时间段不可配置,并在时间旅行保留期结束后立即开始。尽管启动恢复必须请求Snowflake,但任何可能由于极端操作故障而损坏或丢失的数据,Snowflake都能通过这一功能恢复。

BigQuery中的管理员可以轻松还原更改,而无需处理恢复的麻烦。BigQuery对其表中的所有更改保留完整的七天历史记录。但是,为了将表数据保留七天以上,BigQuery提供了一种称为表快照的功能(快照用于在特定时间点保留表的内容)。

定价

Snowflake的定价模式是按每个数据仓库的使用情况收费,因此成本主要取决于其整体使用情况。Snowflake有几种大小不同(X-Small、Small、Medium、Large、X-Large等)的数据仓库,其收费和服务器/集群数量都有很大差异。不过,Snowflake的X-Small仓库的基本定价则为每秒0.00056美元。

数据仓库规模每增加一倍,价格就会翻一番。Snowflake有几个收费方案允许用户预先购买积分以支付使用费用。预购容量方案的前期成本费率更低,因而优于按需付费方案。

BigQuery则按扫描或读取的字节数收费。BigQuery提供按需定价和固定费率定价。按需定价为按给定查询中处理的字节数按5美元/TB收费。固定费率定价模式则是为运行查询购买插槽(虚拟CPU)或专用资源。100个插槽的每月费用约为2,000美元(如果年付可降至1700美元)。

Snowflake和BigQuery的存储费用都相对较低。Snowflake对按需客户每月每TB收费40美元,对预付客户每月收取23美元。BigQuery对活动存储每月每TB收费20美元,对非活动存储每TB收费10美元。

云计算基础设施

作为原生SaaS产品,Snowflake可在任何主要的云平台(AWS、GCP、Azure)上运行。BigQuery是原生谷歌云产品,所以仅在谷歌云平台上可用。

性能

Snowflake无需微调,可实现开箱即用,因而性能表现和执行更迅速,在查询时间上往往优于包括BigQuery在内的其他数据仓库。相比不同之处,Snowflake和BigQuery的相似之处可能更多。

如果空闲时间较长,运行大量查询只是偶尔需要,BigQuery可能会更高效且计算成本更低。另一方面,如果使用更可预测更可持续,那么使用Snowflake可能成本效益更好。

Snowflake和BigQuery的主要区别

Snowflake和BigQuery之间有几个主要区别需要注意。首先,Snowflake中的扩展和缩放并不是完全自动的,它需要提供一些输入,而BigQuery则会自动处理一切。

其次,Snowflake可以在任何一个主流云平台上运行,而BigQuery只能在谷歌云平台上运行。Snowflake是一个完整的SaaS解决方案,BigQuery是一个PaaS解决方案。此外,Snowflake具有一项称为安全数据共享的独特功能,它能够与其他Snowflake帐户共享数据库中的选定对象。使用安全数据共享实际上不会在帐户之间复制或传输任何数据,因为一切都发生在Snowflake独特的服务层和元数据存储中。

BigQuery没有数据共享功能。但是,BigQuery能够创建授权视图以与特定用户或组共享查询执行结果,而无需授予他们对基础表的访问权限。BigQuery还具有一项名为BigQuery ML的功能,可以创建和执行机器学习模型,从而显著改善查询性能。

在机器学习和实时流工作负载方面,BigQuery绝对比Snowflake更有优势。总之,在选择新的云数据平台时,试图解决的用例应是做决定的首要考虑因素。

Snowflake和BigQuery的后续展望

之所以采用现代云数据仓库,目的是将数据仓库整合到一个集中的数据存储库中,以便分析师可以利用商业智能工具进行分析和报告,从而创建可信单一数据源。在实际环境中,数据仓库只是为企业的团队创建了一个更大的数据仓库。

数据仓库使企业的团队能够在同一位置访问其所有数据,并为主要利益相关者创建高级仪表板和报告,而这些信息对于其他业务团队来说则不适用。毕竟,数据只有在报表中才价值突显。

这正是反向ETL解决的问题。反向ETL这一过程是将数据从中央数据仓库复制到记录操作系统,该类系统包括但不限于用于增长、营销、销售和支持等内容的SaaS工具。

原文标题:BigQuery vs Snowflake: The Definitive Guide,作者:Luke Kline