Snowflake - 数据架构



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

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

Snowflake 的数据架构主要包含三个层

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

以下是 Snowflake 的数据架构图:

Snowflake Data Architecture

数据库存储

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 查询执行基于成本的优化。

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

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

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

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

以及更多...

广告