Snowflake - 数据架构


Snowflake 数据架构重新发明了新的 SQL 查询引擎。它专为云而设计。Snowflake 不利用或构建在任何现有数据库技术之上。它甚至不使用Hadoop等大数据软件平台。Snowflake 为用户提供分析数据库的所有功能以及许多其他独特的特性和功能。

Snowflake 拥有用于存储结构化和半结构化数据的中央数据存储库。可以从 Snowflake 平台中的所有可用计算节点访问这些数据。它使用虚拟仓库作为处理查询的计算环境。在处理查询时,它利用多集群、微分区和高级缓存概念。Snowflake 的云服务负责向用户提供端到端解决方案,例如记录用户对选择查询结果的验证。

Snowflake 的数据架构具有三个主要层-

  • 数据库存储
  • 查询处理
  • 云服务

以下是Snowflake 的数据架构图 -

Snowflake数据架构

数据库存储

Snowflake 支持 Amazon S3、Azure 和 Google Cloud 使用文件系统将数据加载到 Snowflake 中。用户应将文件(.csv、.txt、.xlsx 等)上传到云中,然后在 Snowflake 中创建连接以获取数据。数据大小不受限制,但根据云服务,文件大小最大为 5GB。一旦数据加载到 Snowflake 中,它就会利用其内部优化和压缩技术将数据以柱状格式存储到中央存储库中。中央存储库基于云,存储数据。

Snowflake 负责数据管理的各个方面,例如如何使用数据自动集群来存储数据、数据的组织和结构、通过将数据保存到许多微分区中的压缩技术、元数据、统计数据等等。Snowflake将数据存储为数据对象,用户无法直接查看或访问它们。用户可以在 Snowflake 的 UI 中通过 SQL 查询或使用 Java、Python、PHP、Ruby 等编程语言来访问这些数据。

查询处理

查询执行是处理层或计算层的一部分。为了处理查询,Snowflake 需要计算环境,在 Snowflake 的世界中称为“虚拟仓库”。虚拟仓库是一个计算集群。虚拟仓库由CPU、内存和临时存储系统组成,可以执行SQL执行和DML(数据操作语言)操作。

  • SQL SELECT 执行

  • 使用 Update、Insert、Update 更新数据

  • 使用 COPY INTO <tables> 将数据加载到表中

  • 使用 COPY INTO <locations> 从表中卸载数据

但是,服务器的数量取决于虚拟仓库的大小。例如,XSmall 仓库每个集群有 1 台服务器,而小型仓库每个集群有 2 台服务器,并且在增加大型、XLarge 等大小时会增加一倍。

在执行查询时,Snowflake 分析请求的查询并使用最新的微分区并评估不同阶段的缓存,以提高性能并减少获取数据的时间。减少时间意味着用户使用的信用减少。

云服务

云服务是Snowflake的“大脑”。它协调和管理整个 Snowflake 的活动。它将 Snowflake 的所有组件结合在一起,处理来自日志验证的用户请求,以提供查询的响应。

以下服务在这一层管理 -

  • 它是对所有存储的集中管理。

  • 它管理计算环境以与存储一起使用。

  • 它负责Snowflake在云端的升级、更新、修补和配置。

  • 它对 SQL 查询执行基于成本的优化器。

  • 它自动收集统计信息,例如使用的信用、存储容量利用率

  • 安全性,例如身份验证、基于角色和用户的访问控制

  • 它执行加密以及密钥管理服务。

  • 当数据加载到系统中时,它会存储元数据。

还有很多...