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 将数据存储为数据对象,用户无法直接查看或访问它们。用户可以通过 SQL 查询在 Snowflake 的 UI 中或使用 Java、Python、PHP、Ruby 等编程语言访问这些数据。

查询处理

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

  • SQL SELECT 执行

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

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

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

但是,服务器的数量取决于虚拟仓库的大小。例如,XSmall 仓库每个集群有 1 个服务器,而 Small 仓库每个集群有 2 个服务器,并且随着规模的增加(例如 Large、XLarge 等),服务器数量会翻倍。

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

云服务

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

此层管理以下服务 −

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

  • 它管理与存储一起工作的计算环境。

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

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

  • 它自动收集统计数据,如使用的信用额度、存储容量利用率

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

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

  • 它在数据加载到时存储元数据系统。