2023年5月据新闻报道,Snowflake的企业价值为537亿美元,这个估值仍然是其2024财年预期产品收入的21倍。那么这样一家云存储技术开发公司,它通过在搭建一个基于云服务的新型数据库和数据处理架构,Snowflake提供基于云的数据仓库服务以用于存储和查询,分析师随后可以使用商业智能(BI)工具进行数据分析。
那么这样一家提供云数据仓库的公司为什么能做到价值537亿了?和传统的hadoop开源提供的数据仓库有什么区别?

Snowflake产品的优势
Snowflake是作为软件即服务(SaaS)提供的分析数据仓库。与传统的数据仓库产品相比,Snowflake提供了一个更快,更易于使用且更加灵活的数据仓库。
产品架构
Snowflake的产品架构主要分为三层:

数据湖存储层
Snowflake 使用 Snowpipe 将流和批量数据加载到数据湖中。Snowpipe 是一种实时数据加载服务,可以自动地将数据从 Amazon S3 或 Azure Blob Storage 中加载到 Snowflake 中。Snowpipe 可以根据数据到达的频率进行自动触发,并支持并行处理和高吞吐量。这可以极大地简化了数据加载的过程,使数据湖中的数据能够及时可用于分析和查询。
在将数据加载到Snowflake后,Snowflake会将数据进行重组并采用内部优化的压缩列式存储格式。这些优化数据会存储在云存储中。Snowflake负责管理存储数据的各个方面,包括组织、文件大小、结构、压缩、元数据和统计信息等,并处理数据存储的其他相关事务。Snowflake存储的数据对象并不直接可见,客户无法直接访问。只能通过使用Snowflake运行SQL查询操作来访问数据。
Snowflake通常使用Amazon S3作为其云存储。Amazon S3是一种高度可扩展、安全可靠的对象存储服务,能够存储和检索大量结构化和非结构化数据。Snowflake利用S3的优势,结合其自身的架构和优化,实现了高性能、弹性和可靠的数据存储。
查询功能在Snowflake的计算层中执行,使用了一种称为“虚拟仓库”(virtual warehouses)的概念来处理查询请求。每个虚拟仓库都是一个并行处理(MPP)计算集群,由Snowflake动态分配多个云提供商的计算节点来组成。每个虚拟仓库都是独立的计算集群,不与其他虚拟仓库共享计算资源。这意味着每个虚拟仓库的查询性能互不影响,可以根据需求独立扩展或缩减虚拟仓库的大小。这种独立性保证了高性能查询,并且可以根据数据处理的要求进行灵活的资源配置和管理。虚拟仓库Snowflake的虚拟仓库计算层,由Amazon EC2实例组成。一个虚拟仓库是一个包含多个EC2实例的集群,每个EC2实例被称为工作节点(worker node)。用户可以根据需求选择不同尺寸的虚拟仓库,从XS到XXL。虚拟仓库的规模决定了计算能力的大小,并且用户只需按照选择的尺寸进行收费,无需关心虚拟仓库内部的详细配置。虚拟仓库的弹性和隔离性完全依赖于EC2实例的弹性能力。用户可以根据需要灵活调整虚拟仓库的尺寸,以满足不同的计算需求。同时,虚拟仓库之间是资源隔离的,每个工作节点只属于一个虚拟仓库,每个查询也只会在一个虚拟仓库中运行。Snowflake还利用本地缓存和文件窃取来优化查询性能。本地缓存将文件头和部分列存储在工作节点上,通过一致性哈希算法将数据分布在不同的工作节点上。这样,在相同查询针对同一张表时,可以从本地缓存中快速命中,避免分布式查询带来的冗余开销。对于数据倾斜的情况,Snowflake采用文件窃取的策略进行处理。当某个工作节点发现还有很多文件需要扫描时,它会将一部分文件的处理权转交给另一个工作节点。这个工作节点不会从之前的工作节点下载剩余的文件,而是直接从云存储中下载,这种方式称为“文件窃取”。这样可以避免给当前工作节点带来额外的负担,提高整体查询性能。另外就是虚拟仓库的执行引擎计算性能比较快,Snowflake的执行引擎可以根据查询的需求动态扩展或缩减计算资源。它可以自动调整计算资源,以处理大型查询或高查询负载,同时确保查询保持高效。虚拟仓库中的执行引擎使用并行处理来加速查询。它可以将查询分解为多个任务,并同时执行这些任务。这种并行处理方式可以显著提高查询性能和响应时间,另外Snowflake的执行引擎具有强大的优化器和扫描器,能够有效处理各种类型的查询。优化器可以优化查询的执行计划,选择最佳的查询策略。扫描器可以快速访问和扫描数据,以支持高性能的查询操作。有人可能会疑问,存储在数据湖的数据,在s3上如何快速的进入到虚拟仓库中了?Snowflake使用一个功能强大的工具称为Snowpipe来实现快速加载数据湖中的数据到虚拟仓库中。Snowpipe是一种为数据湖中的数据提供实时加载的自动化数据传输服务。它使用与Snowflake集成的消息队列系统,通过流式传输方式将数据加载到虚拟仓库中。以下是Snowpipe的工作原理:1、设置数据管道:首先,您需要使用Snowflake管理控制台或SnowSQL命令行工具设置Snowpipe数据管道。您需要指定数据湖中的位置和格式,以及要将数据加载到的虚拟仓库。2、配置消息队列:Snowflake使用首选的消息队列(如Amazon SQS或Google Pub/Sub)来处理数据加载请求。您需要对消息队列进行配置,并确保Snowflake可以访问消息队列。3、启动数据加载:一旦数据管道设置完毕,Snowpipe会监视消息队列中的新消息。当新的数据文件出现在数据湖中时,Snowflake会自动检测到并启动数据加载过程。4、并行加载:Snowpipe会自动在虚拟仓库中启动多个加载任务,并并行加载数据。这样可以加快数据加载速度,并提供实时或接近实时的数据加载。另外在数据从数据湖加载到虚拟仓库的时候,需要使用到外部表和内部表的概念。外部表是指在Snowflake虚拟仓库中定义的表,但实际数据存储在外部数据源中,例如Amazon S3、Azure Data Lake Storage或其他云存储。使用外部表,你可以直接查询和读取外部数据源中的数据,而无需将数据复制到Snowflake仓库中。外部表的优势是可以提供了数据的即席查询能力,无需预先加载和复制数据;同时,外部表还可以与内部表关联,从而实现跨数据源的联接查询。内部表是指在Snowflake虚拟仓库中定义的表,并直接在Snowflake分布式存储中存储数据。与外部表不同,内部表的数据是完全存储Snowflake内部,因此可以获得更高的性能和查询效率。内部表在Snowflake仓库中自动受益Snowflake的优化器和并行处理能力。通常,如果数据需要经常查询和更新,并且需要最佳的性能和查询效率,则适合使用内部表。而如果数据不需要频繁查询或是来自外部数据源,并且可以容忍稍微较慢的查询速度,则可以使用外部表。Snowflake的云服务提供了一系列功能来支持认证、基础设施管理、元数据管理、查询解析与优化以及访问控制。1、认证方式:Snowflake支持多种认证方式,包括用户名/密码、SSO(单点登录)、MFA(多因素认证)以及集成式认证。这些认证方式可根据用户需求和安全策略进行配置和使用。2、基础设施管理:Snowflake负责底层基础设施的管理与维护,包括自动化的扩展与缩放、数据冗余与高可用性、故障恢复以及持续监控与调优等。用户无需关心基础设施的管理,可以专注于数据和查询的处理。3、元数据管理:Snowflake提供了完善的元数据管理功能,包括对表、视图、列、用户、角色、数据库、架构等对象的定义、维护和查询。用户可以轻松管理和操作元数据,以支持数据定义和数据控制需求。4、查询解析与优化:Snowflake内置的查询解析器和优化器可以自动处理和优化查询请求。它会分析查询语句并选择合适的执行计划,以提供最佳的查询性能。Snowflake还支持动态查询优化,根据数据和查询模式的变化自动调整执行计划。5、访问控制:Snowflake提供了灵活且精细的访问控制机制,通过用户、角色和权限的组合来定义和管理数据的访问权限。可以实现基于行级、列级和对象级的权限控制,保护数据的安全性和完整性。除了以上列举的功能,Snowflake还包括了多租户架构、动态缩放、并行处理、数据压缩和列式存储、查询事务和快照隔离级别、数据加密、灵活的数据加载等功能,以提供高效、可靠的云数据仓库服务。以上大致了解了snowflake的产品,那么它和hadoop相比有哪些优势了?1、多租户架构:Snowflake 使用多租户架构,可以同时支持多个用户和工作负载,每个用户之间相互隔离,确保相互之间的查询不会相互干扰。2、架构简单:Snowflake 的架构相对简单,用户不需要管理和配置底层的基础设施,只需关注数据和查询。Hadoop 最大的唯一缺点可能是传奇的部署,配置和维护成本。这与Snowflake相比较差,无需部署硬件或安装和配置软件。自动捕获统计信息,并由复杂的基于成本的查询工具使用, DBA管理几乎为零。3、动态缩放:Snowflake 可以根据需要动态缩放计算和存储资源,提高处理能力和性能。hadoop的hdfs不具备弹性可扩展性,尽管可以(通过停机时间)向Hadoop集群添加其他节点,但只能增加集群大小。这与Snowflake相比较差,Snowflake可以 在几毫秒内立即从单个节点集群扩展到128个节点的庞然大物,然后快速缩减甚至完全暂停计算资源。4、支持ACID合规性:与Snowflake不同,Snowflake支持多个并发读取一致性读取和更新以及ACID合规性,HDFS只是编写不可更改或允许更改的不可变文件。要更改文件(大多数情况下),您必须将其读入,并在应用更改时将其写出。这使得HDFS更适合于非常大量的数据转换,但是对于即席查询来说是一个糟糕的解决方案。5、查询速度比较快:Snowflake 使用并行处理来执行查询,可以同时处理多个查询任务,提高查询性能。Snowflake 借助优化器和扫描器,通过智能查询访问策略和索引的选择来优化查询性能。而HDFS查询性能比较慢。Snowflake相比hadoop相比有哪些劣势了?1、存储成本:Hadoop是基于分布式文件系统(HDFS)存储数据,而Snowflake是基于云提供商的对象存储服务,如Amazon S3。相比之下,Hadoop的存储成本可能更低,因为它使用本地磁盘来存储数据。snowflake的存储成本较高主要是Snowflake 使用云提供的存储服务,如Amazon S3,Microsoft Azure Blob Storage,Google Cloud Storage等。这些云存储服务通常需要支付一定的费用,相对于自建的 Hadoop 存储系统会有一些额外的成本。另外Snowflake 为了确保数据的可靠性和高可用性,会进行数据的复制和备份。Snowflake 通常使用三副本存储数据,即数据会在三个不同的数据中心进行复制。这种数据复制和备份策略会增加存储成本。2、大数据处理能力:Hadoop是为大数据处理而设计的,它可以处理海量数据的批量作业。而Snowflake虽然支持大规模的数据处理,但它更适合于交互式查询和实时分析。3、数据处理复杂性:Hadoop生态系统中的数据处理工具和技术相对较为复杂,需要较高的技术专长来配置、管理和操作。有相关的spark引擎、flink引擎等进行处理多种应用场景下的数据,而Snowflake是一个托管的云数据仓库,简化了数据处理的流程和管理的复杂性,主要是为了实时查询。总的来说,Snowflake相对于Hadoop更适合用于实时分析和交互式查询,而Hadoop则更适合用于大规模的批量数据处理和分析。选择使用哪种系统取决于具体的业务需求和数据处理场景。Snowflake的商业模式是按需付费的商业模式,按照需要的服务进行收费,它的收费主要分为4类。它与目前常见的saas收费模式是有区别的。一般来说,SaaS 公司都是订阅模式,按月收费或按年收费。但对于数仓行业,这种订阅模式有利有弊:利就是企业能够有经常性收入,但弊端是,由于企业客户需要按需购买,这就意味着客户会购买很多自己并不需要的服务,或者他们可能需要更新自己的产品。而 Snowflake 采用的就是按需付费,基于云的弹性,客户可以根据自己的实际消耗进行购买,即用多少买多少。还记得我们刚刚提到的计算与存储分离的付费方式吗?计算与存储是 Snowflake 的两大定价系统。计算是按照分析单元计费的,在 Snowflake 中也叫“积分”(credits),客户只需付费自己所使用的部分。而存储与分析的费用是分开计算的。对于客户来说,这种付费模式既灵活又直接。不同大小的虚拟数据仓库会有不同的积分方式。如果客户目前想要停止运行,可以选择“暂停模式”,暂时停止记录积分。等到客户继续使用的时候,数据库会自动计费。操作简便,节约成本。Snowflake 的灵活计费模式预示了它的成功。snowflake的灵活计费模式依赖背后灵活的资源架构和功能设计方式。Snowflake的企业版是根据使用的资源和服务来进行收费的。以下是一些常见的收费因素:1、计算资源:Snowflake的计算资源是以计算仓库(Compute Warehouse)为单位进行收费的。计算仓库的价格取决于其规模(计算资源配额)和持续运行时间。2、存储空间:Snowflake存储空间的价格是根据数据在云存储上的占用空间进行计费的。价格根据存储空间的使用量和保留时间来确定。3、数据传输:Snowflake对跨区域和跨云提供商之间的数据传输收费。传输费用取决于传输的数据量和数据的传输方式(例如,入库、取出库、复制等)。4、额外服务:Snowflake还提供一些额外的服务,如数据加密、数据复制、数据分享等,这些服务可能会额外收取费用。如下图是snowflake官网的收费模式,可以清楚看到计算资源收费和存储资源收费。它的数据传输收费和阿里云有异曲同工之意。Snowflake的计算资源以计算仓库(Compute Warehouse)为单位进行收费,计算仓库有不同的规模和定价选项。以下是一些关于计算仓库的收费因素:1、计算仓库的规模:计算仓库的规模表示在该仓库中可用的计算资源的大小。Snowflake提供了多个规模选项,包括小型、中型和大型计算仓库,每个选项都有不同的计算资源配额。较大的计算仓库规模会带来更高的价格。2、计算仓库的持续运行时间:计算仓库的持续运行时间是指计算仓库在一段时间内保持启动状态的时间。Snowflake根据计算仓库的持续运行时间来计算收费,通常以小时为单位。3、弹性伸缩:Snowflake的计算仓库具有弹性伸缩的功能,可以根据负载的需求自动调整计算资源的规模。当负载较高时,Snowflake可以自动扩展计算资源以提供更好的性能,而当负载较低时,可以自动缩减计算资源以节省成本。4、计算仓库的复制:Snowflake支持在不同的地理位置或云提供商之间复制计算仓库以提供冗余和故障转移。复制计算仓库的价格取决于复制的数量和复制的目的地。需要注意的是,Snowflake的收费模型可能会根据地区、云提供商和特定合同进行变化。具体的定价信息和计费细节可以向Snowflake的销售团队咨询获取。Snowflake之所以取得成功,是因为它采用了按需付费的模式,没有按需付费,Snowflake就不会有今天。。欢迎加入【数据行业交流群】社群,长按以下二维码加入专业微信群,商务合作加微信备注商务合作。
往期历史热门文章:
基于DataOps的数据开发治理:实现数据流程的自动化和规范化
数据平台:湖仓一体、流批一体、存算分离的核心问题及原因解析
数据治理体系该怎么建设?
实时数仓&流批一体技术发展趋势
数据仓库、数据中台、大数据平台的关系?
数字化转型如何促进业务的发展
数据中台中的核心概念解析
数据治理中的数据标准的作用?
全面数字化转型:打造全新营销模式