李睿评论|梁策孙淑娟云计算数据仓库是所有现代数据堆栈的中心。没有基于云的数据仓库,很难从数据中获得洞察力。数据仓库的核心是一个分析平台,可以存储和分析来自各种数据源的信息,当公司做出高级决策和回答紧迫的业务查询时,这些数据会派上用场。如今,数据仓库要么已经被企业采用,要么正在逐步部署,该领域的主要代表不胜枚举。本文将只关注BigQuery和Snowflake。什么是雪花?Snowflake是一种基于软件即服务(SaaS)的仓库解决方案,可在主要云平台(AWS、Azure、GCP)上运行。它专为云计算而构建,一些关键组件使其从其他云计算数据仓库中脱颖而出。Snowflake于2014年上市,此后??在数据仓库行业占据重要地位。截至2021年10月,其市值已达903.5亿美元。Snowflake是在云端开发的,旨在提供云计算服务,这意味着它几乎没有管理或运营开销。作为原生SaaS服务,Snowflake处理所有后端基础设施,让人们可以专注于从数据中获取洞察力。Snowflake具有高度可扩展性,支持几乎无限的并发查询。什么是BigQuery?GoogleBigQuery于2010年作为GoogleCloudPlatform的一部分首次推出,是市场上最早的数据仓库解决方案之一。虽然当时人们普遍认为它是一个复杂的查询引擎,但从那时起,GoogleBigQuery已经取得了长足的进步。与Snowflake类似,借助BigQuery,企业无需设置或维护自己的本地基础架构,因此他们可以专注于使用标准SQL发现有意义的见解。GoogleBigQuery是Google的完全原生版本,不在任何其他云平台上运行。架构SnowflakeSnowflake基于ANSISQL,是一个完全无服务器的解决方案,存储和计算完全分离。其架构基于各种传统的共享磁盘和无共享架构,对于用户来说可以说是一石二鸟。通过使用持久数据的中央存储库,数据可用于平台中的所有计算节点。Snowflake利用大规模并行处理(MPP)来处理所有查询。这意味着每个单独的计算集群(虚拟机或服务器)都存储在本地。在存储方面,Snowflake将其数据组织到单独的微分区中,然后在内部进行优化并压缩到列存储中。事实上,加载到Snowflake中的所有数据都经过重新组织、优化和压缩成柱状格式,以便保存在云存储中。Snowflake自动化数据存储的所有方面,包括文件大小、结构、压缩、元数据、统计信息和其他不直接可见但只能通过SQL查询访问的数据对象。Snowflake中的处理是使用“虚拟仓库”或计算资源集群完成的。每个仓库都是一个由多个节点组成的MPP。Snowflake的云服务层协调Snowflake中的所有活动,处理从用户请求、身份验证、基础设施管理、元数据管理、查询解析和优化、访问控制等所有内容。GoogleBigQueryGoogleBigQuery与Snowflake非常相似。同样是serverless,存储和计算分离,基于ANSISQL,但架构完全不同。BigQuery使用由特定Google基础架构技术(例如Dremel、Colossus、Jupiter和Borg)驱动的大量多租户服务。GoogleBigQuery中的计算由Dremel完成,Dremel是一个大型多租户计算集群,用于执行SQL查询。Dremel通过将SQL查询转换为执行树来完成繁重的工作。BigQuery中的叶子被称为“槽”(slots),它们从存储中读取数据并执行必要的计算。执行树的分支称为“混合器”,用于处理所有聚合。团队中的单个用户可以根据需要利用数千个槽来执行查询。与Snowflake类似,BigQuery将数据压缩为柱状格式,并将数据存储在Google的全球存储系统Colossus中。Colossus管理数据复制、恢复和分布式管理,因此不受单点故障的影响。BigQuery利用谷歌的Jupiter网络将数据从一个位置快速移动到另一个位置,其所有的硬件资源分配和编排都是通过Borg(谷歌推出的Kubernetes的前身)完成的。可扩展性Snowflake提供自动扩展和自动挂起功能,使集群能够在繁忙或空闲期间停止或启动。用户无法使用Snowflake调整节点大小,但可以通过单击调整集群大小。此外,Snowflake使用户能够自动扩展到10个数据仓库,单个表中每个队列的DML限制为20个。同样,BigQuery会根据需要自动配置额外的计算资源,并在幕后处理所有事情。但是,默认情况下,BigQuery限制为100个并发用户。这两个平台都允许企业根据需求自动扩大和缩小规模。此外,Snowflake使用户能够隔离不同数据仓库中的跨业务工作负载,以便不同的团队可以独立操作而不会出现并发问题。安全性和合规性Snowflake自动为静态数据提供加密。但是,它不为列提供细粒度的权限,而是为架构、表、视图、过程和其他对象提供细粒度的权限。相比之下,BigQuery为数据集、表、视图和图形提供列级安全和访问控制权限。由于BigQuery是Google原生的,人们还可以利用具有BigQuery内置安全和身份验证功能的其他GoogleCloud服务,从而使集成更加容易。Snowflake不提供任何内置的虚拟专用网络。但是如果Snowflake托管在AWS云平台,使用AWSPrivateLink可以解决这个问题。另一方面,采用BigQuery可以利用谷歌的虚拟私有云。BigQuery和Snowflake均符合HIPAA、ISO27001、PCIDSS、SOC1TYPEII和SOC2TYPEII标准。数据支持两个平台都支持结构化和半结构化数据(Avro、Parquet、Orc、CSV、JSON),截至2021年9月20日,Snowflake宣布支持非结构化数据,可在.管理使用BigQuery和Snowflake管理用户角色、权限和数据安全。所有性能调整都是自动完成的,随着数据量的增长和查询变得更加复杂,两个平台都会在后台自动扩展以满足需求。此外,由于这两种解决方案都是作为SaaS服务提供的,因此所有底层维护和基础设施都得到处理。BigQuery自动处理一切,而Snowflake让管理员独立扩展计算和存储层。这意味着可以隔离工作负载,而无需处理与Snowflake中的虚拟仓库相关的规模调整和许可工作。数据保护BigQuery和Snowflake都在保护数据方面做得非常出色。Snowflake可以通过两个功能帮助解决这个问题,TimeTravel和Fail-safe。通过时间旅行,Snowflake会保留数据的状态,直到它被更新。时间旅行的标准保留期为一天(企业客户可指定最长90天),可应用于数据库、模板和表格。使用故障保护,Snowflake可以恢复历史数据。它的时间段不可配置,并在时间旅行预订期结束后立即开始。虽然必须请求Snowflake才能启动恢复,但任何可能因极端操作故障而损坏或丢失的数据,Snowflake都可以通过此功能进行恢复。BigQuery中的管理员可以轻松还原更改,而无需处理恢复的麻烦。BigQuery对其表的所有更改保留完整的7天历史记录。但是,为了将表数据保存超过7天,BigQuery提供了一种称为表快照的功能(快照用于保存特定时间点的表内容)。定价Snowflake的定价模型是基于每个数据仓库的使用情况,因此成本主要取决于其整体使用情况。Snowflake有几个不同大小的数据仓库(X-Small、Small、Medium、Large、X-Large等),收费和服务器/集群数量差异很大。但是,Snowflake的X-Small仓库的基本定价为每秒0.00056美元。每当数据仓库的大小增加一倍时,价格也会增加一倍。Snowflake有多个定价计划,允许用户预购积分以支付使用费用。预购容量计划的前期成本率低于现收现付计划。BigQuery按扫描或读取的字节数收费。BigQuery提供按需定价和固定费率定价。按需定价为在给定查询中处理的每字节5美元/TB。固定费率定价是购买套接字(虚拟CPU)或用于运行查询的专用资源。100个时段的费用约为每月2,000美元(如果按年支付,可降至1,700美元)。Snowflake和BigQuery的存储费用都相对较低。Snowflake对按需客户每月每TB收费40美元,对预付费客户每月收费23美元。BigQuery对活动存储每月每TB收取20美元,对非活动存储收取每TB10美元。云计算基础设施作为原生SaaS产品,Snowflake可以运行在任何主流云平台(AWS、GCP、Azure)上。BigQuery是原生的GoogleCloud产品,因此只能在GoogleCloudPlatform上使用。性能Snowflake无需微调,开箱即用,因此性能和执行速度更快,其查询时间通常优于包括BigQuery在内的其他数据仓库。Snowflake和BigQuery的相似之处可能多于不同之处。如果空闲时间很长并且只是偶尔需要运行大量查询,则BigQuery可能更高效且计算成本更低。另一方面,如果使用更具可预测性和可持续性,使用Snowflake可能更具成本效益。Snowflake和BigQuery之间的主要区别需要注意Snowflake和BigQuery之间的一些主要区别。首先,Snowflake中的缩放和缩放不是完全自动的,它需要一些输入,而BigQuery会自动处理所有事情。其次,Snowflake可以运行在任何主流云平台上,而BigQuery只能运行在谷歌云平台上。Snowflake是一个完整的SaaS解决方案,而BigQuery是一个PaaS解决方案。此外,Snowflake具有称为安全数据共享的独特功能,它提供了与其他Snowflake帐户共享数据库中选定对象的能力。使用安全数据共享实际上不会在帐户之间复制或传输任何数据,因为一切都发生在Snowflake独特的服务层和元数据存储中。BigQuery没有数据共享功能。但是,BigQuery能够创建授权视图以与特定用户或组共享查询执行结果,而无需授予他们对基础表的访问权限。BigQuery还有一个称为BigQueryML的功能,可以创建和执行机器学习模型,从而显着提高查询性能。在机器学习和实时流工作负载方面,BigQuery绝对比Snowflake有优势。总之,在选择新的云数据平台时,您要解决的用例应该是您做出决定的首要因素。Snowflake和BigQuery的后续展望采用现代云数据仓库的原因是将数据仓库整合到一个集中的数据存储库中,以便分析师可以使用商业智能工具进行分析和报告,从而创建单一的事实来源。在现实世界中,数据仓库只是为企业的团队创建了一个更大的数据仓库。数据仓库使业务团队能够在一个地方访问他们的所有数据,并为其他业务团队无法使用的关键利益相关者创建高级仪表板和报告。毕竟,数据只有在报告中才有价值。这正是反向ETL要解决的问题。反向ETL是将数据从中央数据仓库复制到记录操作系统的过程,包括但不限于用于增长、营销、销售和支持等方面的SaaS工具。原标题:BigQueryvsSnowflake:LukeKline的权威指南
