Snowflake 数据集成示例

2025年8月2日 | 阅读 10 分钟

Snowflake 推出新的 PostgreSQL 和 MySQL 集成连接器

利用 OLTP 数据库(如 PostgreSQL 和 MySQL)的事务数据,对于生成式 AI 和机器学习而言,变得越来越重要。这些数据库提供实时、丰富的数据,可用于识别模式和算法,并训练复杂的 AI 模型。

例如,PostgreSQL 因其开源特性和吸引人的高级功能而越来越受欢迎。Snowflake 提供了一个解决方案,这无疑是个好消息。让您的事务数据以低延迟流式格式轻松地用于企业 AI 方面,从未如此简单。

Snowflake Examples of Data Integration

OLTP 数据库的连接器

在 Snowflake Native Connectors(包括 Snowflake Connector for Kafka 和 ServiceNow 和 Google Analytics 等 SaaS 应用的连接器)流行的基础上,我们最近发布了两个顶级开源关系数据库 PostgreSQL 和 MySQL 的连接器的公开预览版。

Snowflake 数据库连接器包含两个主要部分

通用代理 (Universal Agent) 是一个独立的程序,可在 Docker Hub 上获得,并作为 Docker 镜像安装在客户端的基础设施中。它负责从源数据库检索信息。通用代理的两个主要职责是:

  • 提供初始快照加载
  • 读取源数据库的增量数据变更 CDC 流

原生 Snowflake 应用 (Native Snowflake App): 连接器的核心是一个存在于客户 Snowflake 账户中的对象。它主要负责创建所有数据库对象,包括目标数据库,处理复制过程,并管理代理状态。最初,Snowflake 用户会安装两个原生 Snowflake 连接器应用程序,一个用于 PostgreSQL,一个用于 MySQL,它们可在 Snowflake Marketplace 上获得。之后,用户使用自己的 Snowflake 账户配置这两个原生应用程序,将它们指向相应的目标数据库。

Snowflake Examples of Data Integration

然后,用户会在其工作场所网络中安装通用代理的两个副本(或者在云端,因为代理可以在用户希望的任何地方安装,因为它运行在一个 Docker 容器内)。最后,每个代理都需要附加一组额外的凭据(每个 Snowflake 原生应用程序独有的)。因此,用户的 Snowflake 账户中,每个源数据库都会有一个对应的目标数据库(在本例中为四个:两个 MySQL 和两个 PostgreSQL)。连接器现在可以开始为选定的源表进行数据复制。

  • 多个源数据库可以连接到同一个代理,但它们必须是同一种类型,例如 PostgreSQL 或 MySQL。
  • 一个代理可以链接到一个原生应用程序。PostgreSQL 有其专门的应用程序,MySQL 有其连接程序。
  • 一个原生应用程序可以写入多个 Snowflake 目标数据库,每个目标数据库代表一个已连接的源数据库。
  • 根据用户的偏好,表和列可以持续复制,或按照预定的计划进行复制。
Snowflake Examples of Data Integration

将解决方案分为两个部分:代理和原生应用程序,有几个优势。代理可以安装在客户端的网络内部,并作为网关,确保客户端的 Snowflake 账户与隐藏在防火墙后面的源数据库之间的安全连接。

设置代理非常简单:只需从 Docker Hub 拉取,挂载配置文件和数据库驱动程序,输入源数据库和目标数据库的凭据,然后运行即可。由于代理是无状态的,因此在发生故障(如虚拟机中断或网络问题)时,它可以重新启动,甚至在不同的环境中重新安装。原生应用程序将始终了解复制的当前状态,并会告诉代理它需要做什么。

  • 原生应用程序通过将复制状态存储在用户的 Snowflake 账户中,来保证数据管道的安全性和可靠性。
  • 该连接器像原生应用程序一样使用 Snowflake 的计算资源可伸缩性。为了平衡成本与吞吐量,您可以按需选择不同的虚拟仓库大小。
  • 此外,数据在传输过程中是安全的,并且直接从您的 OLTP 数据库实例发送到您的 Snowflake 账户。
  • 由于您可以控制代理的运行位置,因此中间没有使用第三方处理器或基础设施。一旦数据到达目标,Snowflake 的集成访问控制将管理对已摄取数据的访问。
Snowflake Examples of Data Integration

Snowpipe Streaming 和变更数据捕获 (CDC)

Snowflake 原生应用程序控制数据摄取。用户登录其 Snowflake 账户后,会选择要复制的表、列以及复制频率(连续或按计划)。然后,他们会打开工作表或原生应用程序的用户界面。

  • 当首次插入表时,原生应用程序会向已连接的代理发送多条指令。之后,它会启动整个表的快照的初始加载,这可能需要一些时间才能完成。它也会并行启动增量同步。
  • 一旦初始加载完成,您在目标表中的数据就是最新的,因为快照加载和新修改的增量同步是同时进行的。
  • 在连续增量更新中,使用变更数据捕获 (CDC) 方法来记录对源数据库所做的修改。
  • 代理读取 PostgreSQL 的逻辑复制(预写日志或 WAL)和 MySQL 的二进制日志(binlog)。
  • 然后,数据从特定于数据库的格式(可能是低级二进制格式)解码为通用数据模型。
Snowflake Examples of Data Integration

这就是功能强大、低延迟的连续数据摄取功能 Snowpipe Streaming 发挥作用的地方。使用 Snowpipe Streaming,代理将已转换为通用数据模型事件的源数据发送到 Snowflake。数据被写入您 Snowflake 账户中的管道另一端的所谓“日志表”。日志表是追加式、事件驱动的。

它们跟踪源表中发生的插入、更新和删除的行级事件。对于每个源表,连接器原生应用程序都会生成两个日志表:一个用于增量加载,一个用于快照加载。最后一步是将源表的最新的状态复制到相应的目标表中。原生应用程序利用两个任务

  • 插入任务 (Insert Task) 是一个存储过程,当代理报告快照加载完成时,原生应用程序会执行一次。
  • 该过程将数据从快照日志表复制到目标表。合并任务 (Merge Task) 是一个由原生应用程序定期执行的存储过程。
  • 模式更改:连接器支持源表模式的更改。如果删除了列或重命名了列,或者添加了新列,连接器将在目标表中反映这些更改。
  • 添加新列:新列将在目标表中可见,就像复制开始时存在的任何其他列一样。
  • 删除现有列:如果源表中的列被删除,它不会在目标表中被删除。

监控和告警

分层有限状态机是连接器逻辑的基础。这带来了许多好处,包括可维护性(测试和调试)的提高、可扩展性、伸缩性(以及——也许最重要的是——出色的可观测性)。由于连接器和数据流的所有状态转换都清晰地表示出来,并且具有丰富的事件和指标,因此可以轻松监控数据摄取过程。

  • 连接器原生应用程序附带一组视图,为用户提供有关表或数据源级别数据复制的精细和聚合信息。
  • 很容易确定摄取失败发生的时间点(例如,源数据库连接丢失)。
  • 简单带来的成本节约。将 OLTP 数据库的事务数据引入 Snowflake,为客户开辟了广泛的用例。
Snowflake Examples of Data Integration

尽管该工具的基本数据复制功能已经很出色,但附加的监控和可见性功能使其更上一层楼,并节省了大量工程时间。除了是一个有用、用户友好的工具之外,维护它的团队也始终响应迅速,并在最近几个月迅速推出了一些改进。

用户已经从连接器中受益,但这仅仅是开始。请继续关注关于该主题的未来博客,因为我打算揭示我们即将推出的功能、性能和可伸缩性改进的广泛路线图。Snowflake 促进跨多种上下文的顺畅数据集成,确保了有效的数据摄取、转换和共享。

下面将详细介绍 Snowflake 的数据集成功能。

1. 提取、加载、转换 (ELT)

  • 首先,加载原始数据,然后使用 Snowflake 内的 SQL 进行转换。
  • 支持 Data Build Tool (dbt)、Fivetran、Airflow 和其他现代 ELT 工具。
  • 利用 Snowflake 的基于 SQL 的转换引擎优化速度。

2. 云和区域间数据集成

Snowflake 通过与多个云提供商合作,确保无缝的数据治理和复制。

跨云复制

  • 在 Google Cloud、AWS 和 Azure 之间复制表、数据库和模式。
  • 支持灾难恢复和自动故障转移。

多云治理层 (Multi-Cloud Governance Layer),或称 Snowgrid

  • 提供跨多个地理位置和云的数据的统一视图。
  • 确保全球范围内统一的数据安全法规。

访问外部数据

使用外部表 (External Tables) 和 Iceberg 表查询存储在外部云存储中的数据,而无需移动它。

3. 安全的数据交换与协作

Snowflake 使团队、合作伙伴或外部方能够即时、安全地实时共享数据。

安全数据交换

  • 分发数据而无需创建硬拷贝。
  • 客户可以即时查询共享数据。

数据市场 (Data Marketplace)

  • 从不使用 ETL 的供应商那里获取第三方数据集。
  • 支持公共数据集、金融数据和另类数据等使用场景。

Snowflake 数据交换协作

安全地在公司内部和外部分发半结构化和结构化数据。

Snowflake Examples of Data Integration

4. 第三方集成和 API

Snowflake 拥有原生连接器和 API,可与多种工具集成。

a) API 连接性

  • 借助 REST API,可以以编程方式访问 Snowflake。
  • ODBC/JDBC 驱动程序将 Snowflake 连接到 BI 和分析解决方案。
  • Python 连接器:实现与数据科学工作流的集成。

b) 分析和商业智能工具

Snowflake 与以下工具原生集成:

  • 用于可视化:Tableau、Power BI、Looker、Qlik 和 Sigma Computing。
  • 用于大数据分析:Databricks 和 Apache Spark。
Snowflake Examples of Data Integration

5. 数据科学工具

a) 安全和治理集成

  • 支持 SSO & OAuth:与 Azure AD、Okta 和其他 IAM 提供商兼容。
  • 行级别安全和动态数据掩码:确保精细访问控制。
  • 与数据治理工具集成:用于元数据管理的 BigID、Collibra 和 Alation。

Snowflake 数据集成功能的特别优势

  • 无服务器、自动伸缩:根据工作负载动态调整计算资源。
  • 无复制克隆:瞬间克隆重复的表或整个数据库,而无需占用额外的存储空间。
  • 故障安全和时间旅行:恢复意外删除,并在最长 90 天内检索历史数据。
  • 多集群存储设施:确保同时运行的各种查询的最佳性能。
Snowflake Examples of Data Integration

为什么 Snowflake 集成具有革命性?

与其他传统解决方案相比,Snowflake 集成在以下方面表现出色:

  • 消除数据孤岛:Snowflake 通过打破系统间的隔阂,为您提供统一的数据视图。
  • 实时洞察:无需等待报告。Snowflake 的架构支持实时数据处理,以便快速做出决策。
  • 无限的可伸缩性:Snowflake 随您的数据一同扩展,无需昂贵的硬件或性能瓶颈。
  • 最佳自动化:Snowflake 自动化繁琐的任务,从数据摄取到转换,让您的团队能够专注于更具战略性的项目。

重要的 Snowflake 集成功能

让我们来看看 Snowflake 最吸引人的几个方面,以充分了解它的功能。

  • 弹性伸缩:根据需求向上或向下扩展,无需担心基础设施(可以理解为支付电费;您只需在需要时支付所需的费用)。
  • 实时数据加载:Snowflake 通过 Snowpipe 等解决方案确保您的数据管道始终保持最新。
  • 高级安全性:行业标准加密、访问控制和合规性措施保护您的数据。
  • 易于使用:Snowflake 使数据管理变得更简单,即使对非技术人员也是如此。您可以将数据比作一把瑞士军刀,越用越锋利。
Snowflake Examples of Data Integration

Snowflake 集成模式

集成并非千篇一律。根据您的需求,以下是企业与 Snowflake 连接的最流行方式:

批量 ETL:非常适合偶尔处理大型数据集。使用 COPY 命令或合作伙伴连接,将数据批量提取、转换并加载到 Snowflake。(可以理解为备餐;一次准备好所有东西。)

连续复制:当新的数据流进来时,Snowpipe 和变更数据捕获 (CDC) 会保持您的管道与实时更改同步。(即时更新,无需等到第二天。)

实时同步:当收到新数据时,Snowflake Streams 和 Tasks 会启动工作流,这在速度至关重要时非常有用。非常适合实时仪表板或欺诈检测。

反向 ETL:将数据从 Snowflake 提取并推送到下游技术(如营销平台或 CRM)称为反向 ETL。这会将洞察转化为行动。

Snowflake 集成对企业的优势

有趣的是 Snowflake 集成如何从各个层面影响您的业务。

在组织层面

  • 更快的决策制定:当您使用实时分析时,您将始终领先于曲线。
  • 成本优化:采用按需付费模式,您只需为使用的付费。
  • 精简的运营:自动化通过减少手动劳动来提高整体效率。

在业务层面

  • 改进的客户体验:通过更快、更深入地了解客户行为,定制沟通。
  • 可操作的洞察:将原始事实转化为促进增长的决策。
  • 面向未来的可伸缩性:无论您是初创公司还是成熟企业,Snowflake 都能与您一同成长。

结论

总之,我们可以得出结论,Snowflake 的可伸缩、顺畅的数据集成平台简化了跨多种环境的摄取、转换和共享。Snowflake 通过 Snowpipe、Kafka 和 Streaming API 支持批量和实时数据摄取,从而能够有效地处理结构化和半结构化数据。


下一主题