跳至主要内容

Snowflake 初学者教程:从架构到运行数据库

学习使用 Snowflake 管理云数据仓库的基础知识。Snowflake 是一个云端平台,为希望尽可能快速高效地从数据中提炼洞见的公司带来显著优势。
· 12分钟 阅读

使用 AI 探索

什么是 Snowflake?

如果要我用尽可能少的词来形容 Snowflake,我会选择这些:

  • 数据仓库
  • 大规模数据
  • 多云
  • 解耦
  • 可扩展
  • 灵活
  • 简单

如果需要我稍作展开,我会这样把这些词串起来:

Snowflake 是一款极受欢迎的 AI 数据云平台。它之所以在竞争中脱颖而出,源于其能够更快、更高效地处理大规模数据与工作负载。其卓越性能来自独特的架构设计——将存储与计算分离,从而实现极高的灵活性与可扩展性。此外,它还能与多家云服务商原生集成。尽管具备这些先进特性,它仍然易于学习和落地。

如果他们还想要更多细节,那么我就会写下这篇教程。若您完全是新手,我们的 Introduction to Snowflake 课程是极佳的起点。

为什么使用 Snowflake?

Snowflake 服务于全球超过 8,900 家客户,每天处理 39 亿条查询。这样的使用数据绝非偶然。

以下是 Snowflake 最具吸引力的一些优势:

1. 云端架构

Snowflake 运行于云端,让企业能够按需伸缩资源,无需操心物理基础设施(硬件)。平台还会处理例行的维护任务,如软件更新、硬件管理和性能调优。这减轻了维护负担,使组织得以专注于真正重要的事情:从数据中创造价值。

2. 弹性与可扩展性

Snowflake 将存储与计算层解耦,用户可以独立于存储需求来伸缩计算资源。这种弹性使其能够高效处理多样化工作负载,在获得最佳性能的同时避免不必要的成本。

3. 并发与性能

Snowflake 轻松应对高并发:多位用户可同时访问并查询数据而不会出现性能下降。

4. 数据共享

Snowflake 的安全机制支持跨组织、内部部门、外部合作伙伴、客户或其他相关方的数据共享。无需进行复杂的数据传输。

5. 时光回溯

Snowflake 用一个别致的术语 “Time Travel”(时光回溯)来指代数据版本控制。每当对数据库进行更改,Snowflake 都会拍下一个快照。这样,用户就能在不同时间点访问历史数据。

6. 成本效益

得益于其动态伸缩资源的能力,Snowflake 提供按使用量计费的模式。您只需为实际使用付费。

上述优势叠加,使 Snowflake 成为极具吸引力的 AI 数据云平台。

现在,让我们看看支撑这些特性的 Snowflake 底层架构。

什么是数据仓库?

在深入了解 Snowflake 的架构之前,我们先回顾一下数据仓库,确保大家对基础概念达成一致。

数据仓库是一个集中式存储库,用于为公司存放来自各类来源的大量结构化、组织化数据。组织中的不同角色(员工)使用其中的数据来获取不同洞见。

例如,数据分析师可以与市场团队协作,使用销售表为一项新的营销活动进行 A/B 测试。人力资源专家可以查询员工信息以跟踪绩效。

这些都是全球各家公司借助数据仓库推动增长的典型方式。但如果没有像 Snowflake 这样的工具进行妥善实施与管理,数据仓库就只是纸上谈兵的概念。

您可以通过我们的 Data Warehousing 课程进一步学习该主题。

Snowflake 架构

Snowflake 为更快的分析型查询而设计,其独特架构源自对存储层与计算层的分离。这一区别也造就了我们前文提到的诸多优势。

存储层

在 Snowflake 中,存储层是关键组件,负责以高效且可扩展的方式存放数据。该层的要点如下:

  1. 云原生:Snowflake 可与 AWS、GCP 与 Microsoft Azure 等主流云服务商无缝集成。
  2. 列式存储:Snowflake 以列式格式存储数据,针对分析型查询进行了优化。与 Postgres 等工具采用的传统行式格式不同,列式格式更适合数据聚合。在列式存储中,查询只会访问所需的特定列,因此更高效;而行式格式即便是计算均值这样的简单操作,也需要在内存中访问所有行。
  3. 微分区:Snowflake 采用名为微分区(micro-partitioning)的技术,将表以小块形式存放在内存中。每个小块通常是不可变的,且仅有数兆字节大小,这使得查询优化与执行更为迅速。
  4. 零拷贝克隆:Snowflake 具备独特功能,可创建数据的虚拟克隆。克隆操作瞬时完成,且在对新副本进行更改之前不会占用额外内存。
  5. 规模与弹性:存储层支持横向扩展,这意味着可通过增加服务器分摊负载来应对数据量增长。此外,该扩展独立于计算资源,当您希望存放海量数据但仅分析很小一部分时,这尤其理想。

接下来,我们看看计算层。

计算层

顾名思义,计算层是执行查询的引擎。它与存储层协同工作,对数据进行处理并完成各类计算任务。以下是该层的更多细节:

  1. 虚拟仓库:您可以将虚拟仓库看作处理查询的计算机团队(计算节点)。团队中的每个成员负责查询的不同部分,从而实现令人惊叹的快速并行执行。Snowflake 提供不同大小、相应价格的虚拟仓库(包括 XS、S、M、L、XL)。
  2. 多集群、多节点架构:计算层采用多集群与多节点以实现高并发,允许多位用户同时访问与查询数据。
  3. 自动查询优化:Snowflake 系统会分析所有查询并利用历史数据识别优化模式。常见优化包括裁剪无关数据、利用元数据以及选择最高效的执行路径。
  4. 结果缓存:计算层包含缓存,用于存放高频执行查询的结果。当再次运行相同查询时,几乎可以即时返回结果。

这些计算层的设计原则共同造就了 Snowflake 在云端处理各类繁重工作负载的能力。

云服务层

最后一层是云服务。由于该层融入了 Snowflake 架构的每个组件,其运行机制涉及诸多细节。除与其他层相关的特性外,它还承担以下额外职责:

  1. 安全与访问控制:该层实施安全措施,包括身份验证、授权与加密。管理员使用基于角色的访问控制(RBAC)来定义与管理用户角色和权限。
  2. 数据共享:该层在不同账户甚至第三方组织之间实现安全的数据共享协议。数据消费者无需搬移数据即可访问,从而促进协作与数据变现。
  3. 半结构化数据支持:Snowflake 的另一独特优势在于,尽管它是一个数据仓库管理平台,却能处理诸如 JSON、Parquet 等半结构化数据。它可以轻松查询半结构化数据,并将结果与现有表集成。这种灵活性在其他关系型数据库管理系统中并不常见。

现在我们已经对 Snowflake 的架构有了宏观认识,接下来就在平台上写点 SQL 吧。

设置 Snowflake SQL

Snowflake 拥有自己的 SQL 方言,称为 Snowflake SQL。它与其他 SQL 方言的差异,就像英语不同口音之间的差别。

在 PostgreSQL 等方言中,许多分析型查询写法并不会改变,但在 DDL(数据定义语言)命令上会存在一些差异。

现在,让我们来看看如何运行一些查询!

Snowsight:Web 界面

image3.png

要开始使用 Snowsight,请前往 Snowflake 120 天免费试用 页面并创建账户。填写个人信息并选择任一列出的云服务商。这样您将获得 120 天免费试用,而不是其他地方更常见的 30 天试用。试用还包含价值 400 美元的额度。 

注册试用时,建议用户选择 AWS 和美国俄勒冈西部区域。除其他原因外,俄勒冈是 AWS 基础设施成本较低的区域之一,因此试用额度能用得更久。

验证邮箱后,您将被重定向至 Worksheets 页面。Worksheet 是交互式的实时编程环境,您可以在此编写、执行并查看 SQL 查询结果。

image8.png

要运行一些查询,我们需要一个数据库和一张表(我们不会使用 Snowsight 中的示例数据)。开始时,建议您尝试创建一个新数据库(可命名为 test_db 之类)以及一张使用本地 CSV 文件创建的表。您可以在终端中运行 这个 GitHub gist 中的代码来下载该 CSV 文件。

随后,您会进入一个新的 worksheet,在那里可以运行任意 SQL 查询。我觉得这个界面相当直观且功能强大。请花几分钟熟悉各个面板、按钮及其位置。

结语与进阶学习

呼!我们从一些简单概念起步,但在最后深入到了更“硬核”的细节。嗯,这就是我心目中像样的教程。

您或许已经猜到,Snowflake 的内容远不止本文所及。事实上,Snowflake 文档中的快速入门指南,实际时长就有 128 分钟!但在您挑战那些内容之前,我建议先通过其他资源动手实践一下。比如这些:

感谢您的阅读!

Bexruz (Bex) Tuychiev

作者

Bexruz (Bex) Tuychiev

我是一名数据科学内容创作者,拥有超过 2 年的经验,并在 Medium 上拥有较大的读者群。我喜欢用略带讽刺的笔调撰写有关 AI 和机器学习的深度文章——毕竟总得想点办法让这些内容不那么枯燥。我已发表 130 多篇文章,并制作了一门 DataCamp 课程,另有一门正在筹备中。我的内容已被超过 500 万人次阅读,其中有 2 万人在 Medium 和 LinkedIn 上成为关注者。 

主题