Snowflake 实时数据处理

2025年1月29日 | 阅读 14 分钟

在实时分析中,企业可以即时处理和查询新创建的数据。循环处理可以处理传输中的数据,使其可立即用于分析。实时分析有两种形式:连续型和按需型。连续型实时分析会通知用户事件发生或触发自动响应。

Snowflake Real-time Data Processing

实时分析的要素

利用云资源,实时分析技术满足了在数据生成后立即处理数据查询的迫切需求。与为批处理设计的结构不同,实时结构旨在提高数据查询的速度。在实施实时分析时,组织必须考虑数据延迟和查询延迟。

数据延迟

数据延迟是指数据从创建到可用于分析之间的时间。虽然延迟在系统中不可避免,但实时分析系统努力将其降至尽可能低的水平。

查询延迟

另一个重要因素是查询延迟,即执行查询并获得响应所需的时间。云计算创新已显著降低了实时分析应用程序的查询延迟。

分析的实际好处

决策者可以通过几乎即时访问可操作的见解来提高运营效率,快速响应新兴趋势,并适应快速变化的市场条件。让我们来看看其中一些好处。

  • 加速决策制定
    数据放置的时间越长,价值就越低。决策可以基于实时数据做出,而不是基于几个小时或几天前的情况。企业高管可以通过几乎即时访问数据来抓住具有时间敏感性的机会。
Snowflake Real-time Data Processing
  • 提供更好的用户体验
    借助实时数据,品牌现在可以分析其客户服务工作,更好地了解客户,并确定其产品在满足客户需求方面的表现。
  • 促进自动化
    自动化手动业务流程有助于公司更高效地运营并减少支出。

将实时分析应用于案例

此外,企业正以创新的方式利用这一代技术,为他们提供竞争优势。这些只是众多实时分析应用中的一小部分。

  • 制造业中的实时分析
    预测性维护程序依赖于分散在工业环境中的集成传感器网络的实时数据,这些程序可以延长关键制造设备的寿命并防止昂贵的系统故障。
  • 物流中的实时分析
    已完成产品和原材料的高效流动对供应网络至关重要。
Snowflake Real-time Data Processing
  • 金融业中的实时分析
    金融服务行业的决策必须迅速做出。是否可以为最近申请信用卡的人提供信贷?一项待处理交易是否显示欺诈迹象,或者是否符合持卡人的典型购买模式?金融行业现在严重依赖实时数据来快速做出明智的决策。
  • 零售实时分析
    客户在浏览电子商务网站时,会留下自己的行为和购买行为的数据足迹。

Snowflake 为实时分析提供动力

Snowflake 提供实时事实消费、信息集成和大规模查询。通过 Snowflake 平台的 Streams 和 Tasks 功能,可以构建数据管道并将 Snowflake 转化为快速数据转换引擎,从而在多云环境中实现快速、高效、大规模的搜索。利用数据云释放数据的全部价值。

Snowflake 实现高性能实时处理

通过数据集成、数据摄取和数据查询,Snowflake 现在可以近乎实时地处理海量数据。本文介绍了 Snowflake 如何使用 Kafka 收集实时数据,并在几分钟内将结果显示在 Tableau 仪表板上。

Snowflake Real-time Data Processing

实时数据要求

捕获、处理和分析数据的需求,速度可能非常快,几乎是实时的。这涉及到收集数百万个电子传感器的数据,转换它们,并存储它们,以便仪表板可以实时分析。

解决方案需要将延迟(事件从实际世界出现在仪表板上的时间)减少几分钟。

以下是典型应用的示例:-

  • 监控机器传感器:使用嵌入在汽车或工业机械中的传感器。例如,Progressive Insurance 通过使用实时速度数据来分析消费者行为并应用相关的折扣。
  • 根据信用卡欺诈的可能性批准或拒绝交易。此信息可以基于简单的报失卡或被盗卡报告,或者更可能的是,使用机器学习技术进行总体支出模式的检查。
  • 客户情绪分析:客户情绪分析是许多零售企业使用的一种技术。它包括收集和检查社交媒体源,例如来自 Facebook 和 Twitter 的源。

问题是什么?

对于系统架构师来说,最大的障碍是可能需要巨大的吞吐量——每秒可能超过一百万笔交易。NoSQL 数据库具有最终一致性、无事务支持和无 SQL 访问的缺点,但它们可以处理数据的速度。最后,它们缺乏对灵活连接操作的支持,并且很少或没有提供分析查询的选项。这意味着,虽然检索键值对以表示事件可以快速完成,但数据分析却非常棘手。

Snowflake Real-time Data Processing

实时组件

此图显示了解决此问题所需的主要架构元素。这包括:

捕获数据

  • 高速数据捕获:能够从各种数据源捕获每秒数百兆字节的高速消息流。
  • 消息队列:在最坏的情况下,我们可以预期数据量会短暂飙升,这表明需要一个消息处理解决方案来避免扩展整个系统。保证消息传递意味着需要一个可横向扩展、容错、高可用性的系统,该系统可以优雅地处理单个节点故障并确保消息传递。
  • 架构隔离:将消息传递、转换和数据存储组件与源系统分离。

转换

  • 数据集成:来自数据库和其他数据源的实时事务流很可能需要与现有的参考数据结合。
  • 保证一次性处理:确保每条消息只处理一次需要转换过程能够容错并能够重新启动操作。
  • 大规模可扩展:系统需要能够透明地处理常规和零星的工作负载,即使数据捕获组件有助于缓解大规模速度峰值。
Snowflake Real-time Data Processing

分析与存储

  • 无限数据存储:数据存储系统应能接受、处理和存储数百万笔交易,最好在一个存储库中。
  • 仪表板连接:为了提供商业智能和仪表板,解决方案需要支持 JDBC 和 ODBC 等开放连接标准。如果数据无法分析,那么收集它就没有意义。

传统解决方案

上图描绘了一种称为 Lambda 架构的典型架构。它由用于生成准确历史记录的批处理层和用于实时处理数据的速度层组成。

基本上,这会将问题分为两个独立的部分,服务层在查询时组合响应以生成结果。Lambda 架构有几个好处,例如责任分离和解耦,但它也有以下缺点:

  • 逻辑重复:批处理层和速度层包含许多相同的数据转换逻辑。这增加了系统的复杂性并使维护更加困难,因为代码必须在两个位置维护,并且经常使用两种不同的技术。
  • 批处理工作:此处理层假定每次输入数据时都必须重新处理它。
Snowflake Real-time Data Processing
  • 服务层复杂性:服务层必须针对两个数据源运行查询,并将历史和实时结果集成到单个查询中,因为批处理层和速度层独立处理数据。这使解决方案复杂化,可能会阻止某些仪表板工具的直接访问,或者可能需要更多开发工作。
  • NoSQL 数据存储:速度层需要对数据进行快速随机访问,通常使用 NoSQL 数据库(如 HBase),而批处理通常使用 Hadoop/HDFS 进行数据存储。

当 MapReduce 和 NoSQL 数据存储是唯一的转换工具时,Lambda 架构是有意义的。它已在 LinkedIn 和 Twitter 上大规模有效地使用。尽管如此,仍有更简单、更复杂的选择。

Snowflakes 的解决方案

上图显示了一个简单的替代解决方案,具有从源到仪表板的单一实时数据流。Snowflake 数据仓库,现在具有原生的 Kafka 连接器以及 Streams 和 Tasks,可以轻松地近乎实时地捕获、转换和分析数据,这是实现这一目标的关键部分。

上述解决方案的要素是:

  • Apache Kafka:用于广播系统和容错消息队列。使用 Apache Kafka。
  • Snowflake Streams & Tasks:获取数据、执行数据捕获和转换,以及归档数据以供检查和演示。
  • Snowflake 多集群架构:Snowflake 多集群架构的目标是轻松地分析数据并管理数千个并发互联网用户。
  • Tableau:用于仪表板和分析演示。
Snowflake Real-time Data Processing

该架构的优势包括:

  • 完整简便:数据捕获和存储可以通过少量 SQL 查询完成,充当捕获和应用更改的管道。
  • SQL 转换:没有代码重复或使用多种技术导致维护问题,因为所有数据转换逻辑都包含在 Snowflake 转换组件中(使用行业标准的 SQL)。
  • 实时准确性:NoSQL 解决方案不存在最终一致性问题,因为数据库解决方案提供完整的关系支持和 ACID 合规性。

由于可以通过 Snowpipe 将查询连续流式传输到仓库,在一个虚拟仓库中转换,并在另一个虚拟仓库中分析结果,因此不再需要提供单独的速度和批处理层。

Snowflake Real-time Data Processing

凭借其独特的定位,Snowflake 可以为您的所有数据仓库处理、分析和存储需求提供一个统一的平台。这包括:

  • 近乎实时流式传输:使用带有内置 Kafka 适配器的 Snowpipe 来捕获和摄取流式数据,而不会发生争用。
  • 半结构化处理:通过简单的 SQL 接口,提供 JSON、AVRO、Parquet 和 XML 的实时模式读取视图。
  • 数据湖:数据湖可以包含结构化 CSV 文件和半结构化 JSON 文件。
  • 数据仓库:数据仓库是一个无限数据存储,具有完整的 ACID 合规性和行业标准的 SQL 接口。
  • 与转换和分析工具集成:与 Spark、Talend、Informatica、Looker、PowerBI 和 Tableau 的原生连接器是支持与转换和分析工具集成的解决方案。

如何使用 Snowflake 及实时数据到方向的示例

探索 Snowflake 数据云以提高效率和业务洞察力

随着数据分析在业务中的重要性日益增加,组织正转向云数据平台来处理海量数据和高速数据。Snowflake 数据云就是这些平台之一。它是一个受欢迎的云数据仓库平台,支持多云基础设施设置。

Snowflake Real-time Data Processing

什么是 Snowflake?

完全托管的数据仓库技术 Snowflake 数据平台可用于处理和存储海量数据。Snowflake 提供大规模查询、数据集成和近乎实时的数据摄取。

Snowflake 平台的 3 个主要组成部分

构成 Snowflake 平台云数据平台的三种基本元素如下:

  • 云服务:访问控制、基础设施、元数据、身份验证和其他职责由 Snowflake 的云服务层管理,该层还充当平台协调器。该平台维护加密和数据保护,并获得 PCI DSS 和 HIPAA 认证。
  • 查询处理:Snowflake 使用独立的“虚拟仓库”执行查询。每个 Snowflake 数据仓库都组织成自己的独立集群。这可以防止仓库之间争夺处理能力,并确保其性能不受影响。
  • 数据库存储:结构化和半结构化数据可以存储在 Snowflake 数据库中以供进一步处理和分析。数据存储的每个方面,包括文件大小、压缩、元数据、组织、结构和分析,都由平台管理。只有通过 Snowflake 的 SQL 查询操作才能访问这些存储的数据,从而保证了安全性和控制性。
Snowflake Real-time Data Processing

Snowflake 的主要优点和特性

Snowflake 因其独特的品质和丰富的优点而备受欢迎。其中一些重要优点是:

独特架构:Snowflake 的数据运维新方法通过分离计算和存储组件,使用户能够独立扩展资源并仅为使用的资源付费。其高度并行的架构和多云策略确保了有效的数据处理并提高了系统可靠性。

支持数据类型和来源:Snowflake 能够处理各种数据类型,例如:

  • 非结构化数据,如文本文件和照片
  • 结构化信息(如 SQL 数据库)

可扩展性:Snowflake 的架构有助于根据记录量的突然增加以及大型数据集轻松地向上和向下扩展。

性能:该平台的架构能够快速有效地执行查询。

Snowflake Real-time Data Processing

Snowflake 的常见用途

Snowflake 是一个多功能平台,提供一系列服务。这使得公司能够以各种独特的方式利用其力量。这四种是最大可能的使用方式:

  • 数据仓库:在事实数据仓库中,Snowflake 是处理大量依赖和半依赖条目的最佳工具。
  • 分析:该平台的数据指导和结构使其适用于移动学习和统计可视化应用程序。
  • 数据共享:它提供了部门或组织之间实用且安全的原生数据共享。

了解实时数据摄取以获得有用的知识

数据摄取是指从多个源收集海量数据并将其移动到可进行测试和存储的位置。

数据库、数据仓库、文档存储和数据市场是这些目标位置的一些示例。

数据摄取通常同时合并来自多个来源的信息,包括电子表格、网络抓取、SaaS 平台和内部应用程序。

实时数据摄取

实时或近实时地收集和处理数据的行为称为“实时数据摄取”。在及时信息对决策至关重要的用例中,此策略是必需的。

Snowflake Real-time Data Processing

这种方法对于各行各业的公司来说是不可或缺的资源,因为它侧重于在数据生成时进行收集,并产生不间断的输出流。

让我们来看看一些用例示例:

实时交易数据摄取使电子商务和零售行业的公司能够更快地修改价格,保持准时库存并准确估算需求。

制造业中的实时分析数据摄取可以通过提供维护数据和物联网传感器警告来减少工厂车间的停机时间并优化生产产量。

  • 实时摄取与批处理数据摄取方法的比较
  • 实时和基于批处理的数据摄取技术是两大主要类别。
  • 批处理会随着时间的推移收集数据并一次性处理。在数据类型和数量可长期预测的情况下,此方法效果很好。
  • 然而,需要监视和管理数据生成情况的组织——尤其是当时间紧迫时——需要使用实际的实时摄取。
  • 现在您的公司掌握了实际的实时数据摄取,是时候研究如何将实时数据摄取到 Snowflake 中了。

使用 Estuary Flow 将实时数据集成到 Snowflake

由于其能够快速管理大量数据,Estuary Flow 的实时数据操作平台是需要实时洞察的公司的一个顶级选择。Estuary Flow 的可扩展性是其最重要功能。Flow 可以有效地管理任何数量的数据输入,无论是每秒 100MB 的小量还是每秒 5GB 的大量。还可以轻松快速地在几分钟内从源系统批量回填大量历史数据。

架构解决方案

我们无法从必须集成到我们系统的每个源系统实时提取数据。创建了一个集成批处理和流数据管道的系统。此外,Tableau 和 Snowflake 是我们的领先技术。

以下几层构成了该架构的总体概览:

  • 批处理层使用源系统 API 检索和转换数据。
  • 此层有助于错误更正、与其他系统的数据同步以及数据质量控制。
  • 处理后的数据取代了前一天的在线数据,并存储在 Snowflake 的核心 DWH 和数据仓库层中。
  • 近乎实时地,速度层处理来自源系统的流数据。通过提供最新数据的实时视图,此层可减少延迟。
  • 因此,与批处理层相比,此层中的视图可能更不准确。但是,一旦批处理层中相同数据的视图可用,这些错误每天都会得到更正。
  • 服务层通过 Snowflake DB 视图合并批处理层和速度层的数据,以响应 Tableau 最终用户的即席查询。

实施细节

现在让我们看一下端到端数据管道的实现过程。详细的数据管道如下:

数据摄取:使用源系统 API,数据首先从源系统摄取到数据湖(AWS S3)。Apache Airflow,它充当整个批处理管道的编排工具,用于触发 Python 脚本。为了管理 Airflow 工作负载,使用了 Amazon Elastic Kubernetes Service (EKS)。

持久化 Snowflake 表:Apache Airflow 触发 Snowflake 虚拟仓库上运行的 SQL 脚本,脚本计算业务规则并将数据写入数据仓库表。

Snowflake Real-time Data Processing

作为速度层的一部分,数据执行以下过程:

  • 源系统的异步事件服务将来自源系统的流量作为 JSON 消息进行过滤。然后,它将消息路由到 Amazon MSK(托管 Kafka)上的主题。
  • StreamSets Data Collector (SDC) 工具用于处理和摄取来自 Kafka 主题的事件。
  • JSON 消息是过滤器的必需品。
  • 通过使用源系统 API 动态增强数据(例如,通过传递其 ID 来获取实体名称)。
  • 执行其他必要的数据转换,例如数据屏蔽和过滤。
  • 将数据转换为 CSV 文件并存储在数据湖 S3 文件夹中。图中的“在线数据(当前)”显示了这一点。
  • 与此同时,数据湖 S3 文件夹(称为“在线原始数据存档”)包含过滤后的原始 JSON 通信。
  • 我们可以使用 Snowflake 的外部表直接查询数据湖 S3 存储桶(图中的“实时视图”)。因此,当 Tableau 服务器查询数据时,它只是通过 Snowflake 虚拟仓库,而不是存储在数据库中。

Snowflake 的多集群架构

  • 计算与存储的分离:Snowflake 的设计允许计算和存储独立扩展。由于您可以在不影响存储的情况下按需扩展计算资源,因此这对于管理实时数据处理至关重要。
  • 自动扩展:为了响应工作负载,Snowflake 会自动扩展其计算集群或虚拟仓库。这意味着 Snowflake 可以动态分配资源来适应数据输入或查询的峰值,而无需人工干预即可进行实时数据处理。
  • 并发处理:由于多集群设计,即使在高需求条件下,也可以通过有效处理并发实时请求来保持性能。

即时数据交换

  • 数据共享概述:借助 Snowflake 的安全数据共享功能,您还可以将实时、最新的记录更新到其他 Snowflake 账户,而无需复制或移动它们。
  • 实时协作:此功能对于部门或组织协作非常有用,因为它允许所有用户同时访问和利用最新信息。
  • 实时分析:通过利用 Snowflake 对实时流记录进行分析,企业可以展示客户互动或财务活动。

    借助 Snowflake 的功能,包括 Snowpipe、Streams、Tasks 以及与其他实时记录资产的链接,代理机构可以创建满足其特定业务需求的实时可靠记录处理管道。

结论

总而言之,我们可以得出结论,Snowflake 是一个卓越的实时数据处理平台,这归功于其强大的设计和广泛的功能。通过利用 Snowpipe 进行持续数据摄取、Streams 和 Tasks 进行自动化工作流以及与外部服务和流媒体平台的交互,组织可以处理和分析流入的数据。

通过其规模化能力和用户友好性,机构可以保持运营效率、改善客户体验并做出关键决策。这使其成为现代数据驱动型企业用于利用实时信息的流行选择,因为它能够管理复杂、并发的任务。