第 2 章 Snowflake 概述
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
本章介绍 Snowflake 概述,包括解释多层 Snowflake 架构和简要介绍 Snowflake 对象。
Snowflake 架构
Snowflake 架构是多层的,其核心有以下三层:优化存储层、弹性多集群计算层和云服务层(图 2-1)。
存储层
Snowflake 存储层也称为the Cloud 存储层 或数据库存储层,是一种混合列式数据库存储,可以快速、无缝地访问您的数据。 它利用云的力量实现了弹性伸缩和无限存储扩展。它使用微分区在后台对数据进行集群和排列,从而在访问数据时提供一流的性能。
计算层
Snowflake 的弹性多集群计算层也简称为计算层,是所有数据处理的核心层。 它负责执行查询。它与存储层分离的最大优势是资源隔离。与存储层一样,计算层也可以利用云资源无限扩展。它使用 Snowflake 仓库来处理数据。
云服务层
云服务层负责管理整个账户的元数据。 它还提供访问控制、安全性、基础设施管理和查询优化。运行查询时,云服务层负责解析查询、优化查询、生成查询计划并检查安全性和访问权限,然后将查询传递给计算层执行。
云无关层
云无关层是 Snowflake 的基础层,允许您在自己选择的云提供商上运行 Snowflake 实例。 您可以选择 Amazon Web Services (AWS) 、Google Cloud Platform (GCP) 或Microsoft Azure。 这消除了管理和保护多个环境的麻烦。因此,在 Snowflake 上构建的一切(包括本地应用程序)都与云无关。
图 2-1. Snowflake 的多层架构(来源:Snowflake)
优化存储层功能
您已经对优化存储层有了一些了解。现在让我们快速了解一下该层的不同功能。
压缩和微分区
Snowflake 将您的所有数据存储在微分区中。与依赖静态表分区的传统仓库不同,Snowflake 使用微分区,即包含 50 MB-500 MB 未压缩数据的连续存储单元。这些数据以列格式存储,微分区中的数据由 Snowflake 自动管理。这种分区的最大优势是云服务层在进行查询优化时会进行数据剪枝。云服务层还拥有每个微分区的元数据,包括分区内存储的值的范围、最小值、最大值、计数、不同值的数量等。Snowflake 在执行查询时会使用这些信息来包含/排除整个分区。这是 Snowflake 查询执行速度如此之快的主要原因之一。
半结构化和非结构化数据
Snowflake 提供查询和存储半结构化数据的本机功能;即任何不遵守预定模式且其中对象可能彼此不同的数据,如 JSON 数组。它通常是分层的,即对象之间有父子关系,多个对象可以共存。下面的代码显示了一个只有一条记录、没有层次结构的半结构化对象:
{"trip_location":"Stockholm, Sweden","trip_start_date":"2024-04-01","trip_end_date":"2024-04-20","trip_budget":2000}
下一个代码块显示的是包含两个嵌套层次对象的半结构化数据: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access