社区编辑申请
注册/登录
BigQuery vs Snowflake终极指南 译文 精选
云计算 云原生
本文将介绍BigQuery和Snowflake在架构、定价、安全性、合规性、数据保护、性能等方面的主要区别。

译者 | 李睿

审校 | 梁策 孙淑娟

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

责任编辑:华轩 来源: 51CTO

同话题下的热门内容

风险日益严峻,容器云平台如何做好安全隔离?什么是 NetDevOps,它如何帮助 IT 实现业务目标?服务网格到底能做哪些事?一文弄懂Kubernetes集群管理详解云中断的原因和损失以及如何降低云中断的损失为什么应用程序依赖关系映射对于云迁移至关重要十个关于 ArgoCD 的优秀实践

编辑推荐

Service Mesh真的是云原生应用的绝配吗云原生桌面:虚拟桌面的解构与重新定义解密云原生---看企业云的未来云原生技术及其未来发展趋势展望如何评估云原生NFV中的容器化VNF部署
我收藏的内容
点赞
收藏

51CTO技术栈公众号