使用 Snowflake 构建可扩展的数据解决方案

31 2025 年 7 月 | 阅读 8 分钟

Snowflake:可扩展性的典范

这种架构提供了近乎无限的计算资源,实现了出色的并发性和吞吐量。

零拷贝克隆: Snowflake 通过复制数据而不进行物理复制来实现高效的数据克隆。此功能在生成隔离的测试和开发环境而不产生额外存储成本方面非常有用。

Snowflake 能够实现组织和业务部门之间安全、受控的数据交换,使其成为协作数据计划和货币化前景的理想平台。

Building Scalable Data Solutions with Snowflake

BigQuery

机器学习集成: BigQuery ML 使客户能够通过 SQL 创建、评估和部署 机器学习模型,从而提高预测分析能力。Snowflake 和 BigQuery 具有不同的架构。

理解 Snowflake 和 BigQuery 之间的架构差异对于理解它们如何实现可扩展性至关重要。

数据建模: 创建注重性能的数据模型。尽可能避免复杂的连接和嵌套子查询,以提高查询性能。

使用分区和聚类功能来提高数据存储和查询性能。这对于大型数据集尤其重要。

查询优化: 定期监控和优化查询,以减少资源使用。使用查询优化工具和技术来查找瓶颈和低效之处。

并发用户: 了解数据仓库的并发限制并进行相应规划。

数据仓库设计模式有哪些?

数据仓库设计模式是设计和部署数据仓库架构的可重用解决方案或最佳实践。设计可接受的架构并根据组织的具体要求选择合适的技术,对于解决性能、可扩展性、适应性和数据完整性等挑战至关重要。

数据仓库:数据生命周期

在架构上,让我们将数据仓库中的数据生命周期划分为以下几个层,这些层在选择最佳设计和要应用的工具方面至关重要。数据采集包括从源系统提取数据并使其可用。

  • 加载和暂存: 将源数据移动到数据仓库。数据是不可变的,应完全按照从源接收的方式进行保留。
    从数据仓库的角度来看,此层还负责添加技术元数据(记录源、加载日期时间戳等)和计算业务键。
  • 原始数据仓库: 原始数据仓库由登陆区或暂存区构成。原始数据仓库将数据建模为 Hub、Link 和 Satellite 表。
  • 业务数据仓库: 业务数据仓库是强制执行软业务规则的数据仓库对象。这还可以包括为业务仓库之上的表示层设计的 PIT 和 Bridge 表。
  • 信息集市: 信息集市是指面向消费者的模型层。这可以实现为一组视图。
Building Scalable Data Solutions with Snowflake

使用 DBT 和 Snowflake 实现数据仓库

数据仓库的 SQL 管理是一个重大挑战。一旦识别出元数据,dbt 和您的宏就可以处理所有逻辑。此外,利用 Snowflake 流作为源可以实现近乎实时的数据处理。

  1. AutomateDV: AutomateDV 是一个数据库包,允许您定义暂存模型,创建用于从源表中提取数据并加载到 Hub 表的模型,定义用于捕获 Hub 关系的 Link 表的模型,以及创建用于加载存储描述性属性和历史更改的 Satellite 表的模型。
  2. 使用增量加载: 数据仓库鼓励只将更新或新增记录加载到 Satellite 表的思想。使用 dbt 的增量物化来处理来自 Snowflake 流的新源,或使用 dbt 中的任何中间 Ephemeral 模型来实现这一点。
  3. 实施业务规则和验证: 数据仓库模型通常需要强制执行业务规则并执行数据质量检查。
    采用 AutomateDV 等开源工具具有多种优势。由于数据仓库的结构完全由该包通过元数据驱动,因此在手动创建 SQL 语句时可能出现的问题可以最小化。如果数据结构有更改,可以集中进行更改,而不是评估大量 SQL 语句的依赖关系。
Building Scalable Data Solutions with Snowflake

使用 Snowflake 原生组件实现数据仓库

Snowflake 提供了多种创建数据管道的方法。让我们看一下使用 Snowflake 连续数据管道建立近乎实时 (NRT) 数据仓库的一种技术。Snowflake 的流对象会跟踪表中的所有数据更改(插入、更新和删除)。此过程是完全自动化的,与传统数据库不同,它不会影响数据加载速度。当成功的 DML 操作使用流对象作为源时,流的更改日志会自动“消耗”。

Snowflake 任务按预定间隔运行,以查看连接的流中是否有任何数据。如果存在数据,任务将运行 SQL 语句将其添加到原始数据仓库对象中。多集群虚拟仓库提供足够的计算能力来处理任何大小的工作负载,并且负载均衡确保随着您向数据仓库添加更多 Hub、Link 和 Satellite 时,所有进程都得到平衡。

Snowflake 还支持无服务器任务,这是一项很棒的功能,它允许您依赖 Snowflake 管理的计算资源。使用此方法,您可以创建一个生产数据管道,该管道可以无缝地为您的数据仓库架构提供支持,同时需要最少的手动参与。

Building Scalable Data Solutions with Snowflake

需要强大的数据质量框架。

尽管数据仓库设计具有许多优点,但也存在一些缺点,例如需要更多具有复杂转换和上下游链接的表。如果不能有效解决,这可能会导致数据质量问题。

模型级数据验证以及数据可观测性框架的实施有助于解决数据仓库的数据质量问题。数据可观测性机制缩短了检测时间,使数据团队能够关闭损坏管道的水龙头,并阻止错误数据流入原始数据仓库,从而减轻数据回填的负担。

Building Scalable Data Solutions with Snowflake

监控跨层传输数据的转换查询,以确保它们按时以所需的负载级别运行,这些级别可以设置为行或字节。最后,数据可观测性框架应该易于在整个堆栈中构建,并继续监控到原始实现之外,以便将来添加的 Satellite 和 Hub 可以被认证为受保护。

数据仓库自动化

大规模工作可能很困难,尤其是在维护数据模型时。这时自动化技术就派上用场了。自动化通过提供用于自动化数据集成、数据仓库建模和 ETL/DDL 代码开发的模板来帮助小型团队。这带来了显著的生产力效益。自动化还有助于解决关键难题,例如

代码维护

  • 层之间存在多个复杂的转换。
  • 维护 Hub、Link 和 Satellite 表的完整性
  • 理解依赖关系
  • 扩展测试场景
Building Scalable Data Solutions with Snowflake

简化数据架构以增加价值。

Snowflake 使您能够构建用于混合事务和分析用例以及需要较少移动部件的流式和非结构化数据解决方案。这意味着您可以花费更少的时间和金钱进行手动配置和孤岛管理,而是将这些资源用于创新新的数据使用方式。

Snowflake 简化了事务性和分析工作负载。

许多公司必须维护两个不同的数据库:一个用于事务操作,另一个用于分析任务。Snowflake Unistore 将两者合并到一个数据库中,为用户提供了大大简化的架构,数据传输最少,并且具有一致的安全性和治理规则。

更有效地导入数据并管理支出。

我们正在发布一些功能,这些功能将使您能够更轻松、更经济高效地访问 Snowflake 管理的数据。用于 Apache Kafka 的 Snowpipe(即将登陆 AWS 和 Microsoft Azure)使用“拉取”技术而不是现有的“推送”连接器,将 Apache Kafka 事件直接提取并摄取到您的 Snowflake 帐户中,从而无需运行您自己的 Kafka Connect 集群。

Building Scalable Data Solutions with Snowflake

新的存储生命周期策略(私有预览版)提供了另一种节省成本的方式,即在数据满足您的策略标准时自动删除数据或将其移动到低成本层。这使您可以优化存储,同时以简单、可扩展的方式满足法规遵从性。

Building Scalable Data Solutions with Snowflake

Snowflake Horizon Catalogue 帮助您保护和理解您的帐户和数据资产。Horizon Catalogue 包含了行业领先的合规性、安全性、隐私、发现和协作功能,是 Snowflake 最有价值的功能之一。这些有助于保护和维护您的帐户、用户和数据资产的机密性。我们不断改进我们的平台,以帮助我们的客户保持领先地位。

Building Scalable Data Solutions with Snowflake

增强的安全功能和信任中心技术可以帮助在威胁发生之前预防它们。

Snowflake 在淘汰仅密码登录方面又迈出了重要一步,默认情况下要求所有新建立的 Snowflake 帐户中的人类用户进行多因素身份验证 (MFA)。我们还提供泄露密码保护(即将广泛可用),该功能将验证并自动禁用在暗网上检测到的用户密码。这提供了内置的泄露密码保护,并降低了数据泄露的可能性。

通过方便地跟踪和处理敏感数据来改进数据治理

客户可以清楚地了解上游所做的更改将如何影响下游对象。治理人员还可以实施策略来保护下游列并批量传输标签。客户可以跟踪从数据到洞察的 ML 资产的历史记录,从而获得更好的可重现性、更严格的合规性以及简化的可观测性。

Building Scalable Data Solutions with Snowflake

敏感数据可能具有巨大的价值,但由于隐私问题,它们常常被封锁。如果您能够让更多人访问数据,从而扩大敏感数据的分析范围和深度,会怎么样?Snowflake 通过差分隐私设置来实现这一点,该设置降低了识别或重新设计敏感数据的风险,并通过合成数据生成实现这一点,后者使用实际的生产数据来构建一个接近的副本以供测试和分析。

Building Scalable Data Solutions with Snowflake

一个新的组织范围访问历史视图(即将公测)为跨同一组织内的帐户共享敏感数据的治理员和数据管理员提供了一个集中的记录,说明谁访问了哪些敏感数据,从而更容易生成审计报告,并提供证明合规性所需的精细可见性。

Building Scalable Data Solutions with Snowflake

使用 Snowflake 构建可扩展数据解决方案需要利用其云原生架构、灵活性和为现代数据工作负载设计的强大功能。以下是帮助您创建可扩展解决方案的概述

1. Snowflake 的独特功能。

云原生优势

  • 完全托管,无需基础设施配置或维护。
  • 可与主流云平台(AWS、Azure 和 GCP)协同工作,并提供跨云和跨区域功能。

弹性扩展。

  • 计算资源可以纵向扩展(更大的仓库用于更高的工作负载)和横向扩展(多集群仓库用于高并发)。

数据共享与协作。

  • 安全数据共享: 实时传输数据,无需移动或复制。
  • 数据市场: 轻松访问第三方数据集,并与合作伙伴安全地共享信息。

2. 高级数据建模和处理。

数据规范化

  • 星型模式非常适合 OLAP(联机分析处理)。
  • 雪花模式:减少数据冗余,同时提高数据完整性。

Variant 数据类型。

  • 允许存储半结构化数据而无需预处理。
  • 使用 SQL 查询结构化和半结构化数据。

按聚类键分区

  • 提高了大型表的查询性能。
  • 聚类消除了传统手动分区的需求。
Building Scalable Data Solutions with Snowflake

3. 查询性能优化。

  • 结果缓存通过为相同的查询返回预计算结果来节省计算资源。
  • 元数据缓存:缓存表元数据以加速连接等操作。

物化视图。

  • 预先计算并存储常用查询的结果,以减少执行时间。

仓库调优

  • 使用多个仓库大小(小、中、大)以适应不同的工作负载。
  • 启用自动暂停,以避免在空闲时产生计算费用。

结论

总之,我们可以得出结论:Snowflake 的云原生设计和弹性计算能力使其成为现代数据应用程序的强大且可扩展的平台,提供无与伦比的性能、灵活性和易用性。Snowflake 通过与数据输入、分析和 机器学习 技术无缝连接,简化了复杂的工作流,确保了成本效益和高可用性。


下一主题