Snowflake 数据架构

2025年1月29日 | 阅读 6 分钟

引言

在不断发展的数据管理领域,Snowflake作为一支开创性力量,重新定义了数据架构的范式。Snowflake诞生于敏捷、可扩展和高效处理海量数据的需求,提供了一个超越传统限制的基于云的数据平台。

Snowflake的基础

Snowflake的核心是建立在一个独特的架构之上,旨在解耦存储和计算,从而实现前所未有的灵活性和性能。这种分离允许用户独立扩展每个组件,优化资源分配和成本效益。

  • Snowflake的数据架构代表了专为云环境量身定制的SQL查询引擎的开创性飞跃。
  • 与传统数据库或大数据平台不同,Snowflake从零开始构建,提供了一套全面的分析数据库功能以及一系列独特功能。
  • Snowflake架构的核心是其中央数据存储库,旨在存储结构化和半结构化数据。
  • 该存储库可从Snowflake平台内的所有计算节点访问。驱动查询处理的是虚拟仓库。
  • Snowflake的云服务协调端到端流程,从用户认证到查询结果的交付。

Snowflake的架构分为三个主要层

数据库存储:Snowflake与Amazon S3、Azure和Google Cloud等云存储提供商无缝集成,用于数据摄取。用户将文件(例如.csv、.txt、.xlsx)上传到云端,在Snowflake中建立连接以访问这些数据。

  • 虽然Snowflake不限制数据大小,但云服务提供商将单个文件上传限制为5GB。
  • 数据加载后,Snowflake采用内部优化和压缩技术,将数据以列式格式存储在其托管在云端的中央存储库中。

查询处理:查询执行发生在Snowflake的处理层或计算层。该层依赖于虚拟仓库,即配备CPU、内存和用于SQL执行和数据操作语言(DML)操作的临时存储的计算集群。

  • 虚拟仓库的大小决定了服务器的数量,配置范围从XSmall(1台服务器)到更大的选项。
  • Snowflake通过分析查询需求,利用微分区和缓存机制来动态优化查询执行,从而提高性能并最大限度地减少资源消耗。

云服务:作为Snowflake的支柱,云服务监督和协调平台活动。从集中式存储管理到计算环境编排,这些服务在云端无缝处理升级、更新和修补。

  • 云服务促进SQL查询的基于成本的优化,自动收集使用统计信息,并管理身份验证和访问控制等安全功能。此外,它们还监督加密和密钥管理服务,确保数据安全和完整性。
  • 元数据管理也是一项核心功能,在数据加载到系统时捕获基本信息。
Snowflake-Data Architecture

认证与访问服务

Snowflake的认证与访问服务确保为与Snowflake平台交互的用户和应用程序提供安全的访问控制和认证机制。

  • 多因素认证 (MFA):Snowflake支持MFA以增强安全性,要求用户提供除密码之外的额外验证因素,例如短信验证码或生物识别认证。
  • 基于角色的访问控制 (RBAC):Snowflake实施RBAC以定义细粒度的访问策略,为用户或组分配具有特定权限的角色,以访问Snowflake环境中的数据和执行操作。
  • 外部认证提供商:Snowflake与Okta、Azure Active Directory和AWS IAM等外部认证提供商集成,实现集中式用户管理和跨企业环境的无缝认证。
  • 云服务:Snowflake的云服务层作为所有Snowflake组件和服务的集中管理和编排中心。它包含广泛的功能,包括
  • 基础设施配置:云服务管理云环境中计算和存储资源的配置和扩展,动态调整资源分配以满足工作负载需求。
  • 配置管理:云服务处理整个Snowflake生态系统的配置设置、更新和补丁,确保跨部署的一致性能、可靠性和安全性。
  • 成本优化:云服务采用基于成本的优化技术来分析资源使用模式,优化查询执行计划,并推荐资源分配和利用的经济高效策略。

计算(虚拟仓库)

Snowflake的计算层,由虚拟仓库代表,提供在Snowflake环境中执行SQL查询和处理数据所需的计算资源。主要功能包括

弹性可扩展性:虚拟仓库可以根据工作负载波动动态扩展或缩减,自动调整计算容量以满足性能要求。

并发管理:虚拟仓库管理查询并发和资源争用,确保公平的资源分配和并发查询执行的最佳性能。

工作负载隔离:虚拟仓库提供工作负载隔离,允许用户将计算资源专门用于特定的工作负载或部门,防止由于资源争用而导致的性能下降。

基础设施管理器

Snowflake的基础设施管理器监督Snowflake环境中底层基础设施组件的部署、配置和维护。它包括

自动化配置:基础设施管理器自动化计算集群、存储资源和网络组件的部署,简化设置和配置过程。

资源监控:基础设施管理器监控资源使用情况、性能指标和系统健康指标,主动识别和解决问题,以确保最佳的系统可靠性和正常运行时间。

容错:基础设施管理器实施容错机制,例如自动故障转移和数据冗余,以确保在硬件故障或网络中断时的高可用性和数据持久性。

缓存与微分区

缓存与微分区组件在Snowflake的数据存储和查询处理架构中发挥着关键作用。它包括

查询结果缓存:Snowflake缓存已执行查询的结果,通过检索缓存结果而不是重新执行查询来减少查询延迟并提高性能。

数据块缓存:Snowflake将频繁访问的数据块缓存在内存中,最大限度地减少磁盘I/O延迟,并加速后续查询的数据检索。

微分区:Snowflake将数据组织成小的、不可变单元,称为微分区,从而实现高效的数据存储、分区和检索。微分区通过减少数据扫描开销和最大化计算效率来优化查询性能。

可用性与事务

Snowflake通过分布式架构和事务管理功能(例如)确保平台的高可用性和事务一致性

高可用性:Snowflake将数据复制到多个地理区域和可用区,确保冗余和容错,以减轻硬件故障或网络中断的影响。

事务管理:Snowflake支持事务的ACID(原子性、一致性、隔离性、持久性)属性,为分布式环境中的数据操作提供强大的一致性保证和事务完整性。

自动故障转移:Snowflake实施自动故障转移机制,在基础设施故障时无缝切换到备用资源,最大限度地减少停机时间并确保服务的持续可用性。

安全性

Snowflake采用强大的安全措施来保护数据并确保符合法规要求。主要安全功能包括

加密:Snowflake使用行业标准加密算法对静态和传输中的数据进行加密,保护敏感信息免遭未经授权的访问或拦截。

访问控制:Snowflake实施细粒度访问控制和基于角色的权限,允许管理员根据角色、组或个人用户定义访问策略和限制用户权限。

审计日志记录:Snowflake记录所有数据访问和管理活动,提供全面的审计跟踪和用户操作可见性,用于合规性审计和安全监控目的。

元数据管理器

Snowflake的元数据管理器提供集中式元数据管理功能,存储有关数据对象、模式和系统配置的基本信息。主要功能包括

元数据存储:Snowflake将元数据存储在集中式存储库中,捕获有关Snowflake环境中的表、视图、模式和用户定义对象的信息。

数据沿袭:Snowflake跟踪数据对象之间的数据沿袭和依赖关系,使用户能够跟踪复杂数据管道和分析工作流中数据元素的来源和转换历史记录。

模式演变:Snowflake管理模式演变和版本控制,允许用户修改表模式、添加或删除列,并无缝维护与现有数据格式的向后兼容性。

Snowflake的数据架构包含一整套组件和服务,旨在为云中的现代数据分析和处理工作流提供高性能、可扩展性、安全性和可靠性。每个组件在确保Snowflake生态系统中高效的数据管理、查询处理和资源优化方面都发挥着关键作用。