Snowflake 简明教程

Snowflake - Data Architecture

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

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

Snowflake 的数据架构 has three main layers

  1. Database Storage

  2. Query Processing

  3. Cloud Services

以下为 Snowflake 的架构图 data architecture

data architecture

Database Storage

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

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

Query Processing

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

  1. SQL SELECT executions

  2. 使用更新、插入、更新更新数据

  3. 使用 COPY INTO <表> 将数据加载到表中

  4. 使用 COPY INTO <位置> 从表中卸载数据

但是,服务器的数量取决于虚拟仓库的大小。例如,小型仓库每个集群有 1 台服务器,而小型仓库每个集群有 2 台服务器,并且随着大型、超大型等规模的增加而加倍。

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

Cloud Services

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

以下服务在此层进行管理:−

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

  2. 它管理计算环境以与存储一起工作。

  3. 它负责 Snowflake 在云中的升级、更新、修补和配置。

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

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

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

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

  8. 数据加载到系统时,它存储元数据。

等等……​