Snowflake 中的数据迁移

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

数据迁移工具

更高的安全性、极少甚至零管理、高可扩展性和预算灵活性是推动数据和应用程序向云端迁移的因素。一旦进入云端,优势便显而易见。在迁移到云端时,规划、准备和合适的数据迁移工具是必不可少的。

无论您是有一个简单直接的云数据迁移计划还是一个数据仓库迁移计划,在开始传输之前都需要做几件事情。首先,确保您完全理解任务的范围。之后,如果发现迁移的某些部分被遗漏,可能会导致项目严重延迟,并增加陷入沉没成本谬误的风险。

Data Migration in Snowflake

其次,确认有一个健全的数据迁移方法,从评估到执行。第三,确保迁移范围包含数据安全计划。

选择合适的数据传输工具

Snowflake 内置的转换工具、与解决方案提供商的合作以及对性能优化的承诺,使得数据迁移快速、简单且经济高效。Snowflake 与多家技术供应商合作,以实现传统数据仓库最无缝、最高效的迁移。

Snowflake 专业服务可能会根据您的特定数据仓库生态系统推荐最理想的迁移技术。为了利用合作伙伴的迁移技术,Snowflake 致力于与企业建立战略技术协议,并提供像 SnowConvert Powered by Mobilise、下一个 Pathway 和 Blade Bridge 这样的内部解决方案。

为什么迁移到 Snowflake?

在进入迁移过程之前,让我们先看看使用 Snowflake 的主要理由。

  • 以云为设计理念: Snowflake 是一个云原生信息平台,其设计宗旨是充分利用云的功能。无论您处理多少数据,它都能提供无限的可扩展性,并无需本地设备,从而消除容量限制。
  • 消除数据孤岛: 通过打破记录孤岛,Snowflake 为所有统计数据提供了一个单一的真相来源。Snowflake 统一的记录结构能够直接将来自多个资产的数据整合到一个独立平台中,这是其主要优势之一。这促进了整个组织内的协作、数据驱动的决策和简单的信息整合。
  • 可扩展性: 由于 Snowflake 的精确结构,扩展变得简单,您可以轻松地调整资源以满足企业的需求。由于动态可用资源分配会适应不断变化的工作负载,因此始终保持最高性能。
Data Migration in Snowflake
  • 改进的输出: Snowflake 的尖端架构可确保出色的速度,从而促进实时分析和快速查询执行。计算和存储的分离允许自动优化和并行处理,从而实现快速查询响应。
  • 实用见解: Snowflake 的实时数据处理使组织能够即时获得有价值的数据见解。Snowflake 强大的查询引擎和最佳速度能够快速进行数据分析和可视化,从而加速决策。
  • 强大的安全性: 数据安全对 Snowflake 至关重要。它采用最先进的企业级安全技术,如端到端加密、数据覆盖和多因素身份验证。Snowflake 还遵守多项事实保护法规,确保严格的数据保护。
  • 成本效益: Snowflake 提供经济实惠的选择,其成本与使用量相符。由于您只需为使用的资源付费,因此无需预先进行财务投资。
  • 支持多种数据结构: Snowflake 可以处理各种数据系统,包括半结构化、非结构化和结构化数据。由于其灵活性,企业可以处理各种记录格式,如 JSON、Avro、Parquet 等,从而实现全面的数据分析和洞察。

Snowflake 迁移的 7 步指南

1. 审查数据

分析数据是 Snowflake 数据迁移仓库迁移过程的第一步。这包括分析您的数据模式以识别差异,根据其重要性对数据进行分类,评估其质量,并理解复杂的数据关系。这对于确保成功的数据迁移以及整个过程中准确可用数据至关重要。

2. 选择迁移方法

数据分析后,下一步是选择迁移策略。以下是一些您可以考虑的方法:

  • 手动迁移: 从旧系统手动将数据传输到 Snowflake。这对于较小的数据集很有用,但可能需要一些时间。
  • ETL 迁移: 使用 ETL 技术将数据提取、转换并加载到 Snowflake。对于更大的数据集和更自动化来说,这是一个改进。
  • 复制迁移: 使用复制工具,将数据从您的旧系统传输到 Snowflake。这对于实时复制很有益。

您的决定将受到数据量和您希望迁移的速度等因素的影响。

3. 选择和拆分数据

选择迁移到 Snowflake 的技术后,下一步是使用文件分割器(如 ETL 工具或 GSplit)来选择和拆分数据。这有助于迁移过程并降低出错的可能性。

4. 准备数据

然后应将数据移动到 Snowflake 暂存区域。为此,您需要从 Snowflake 平台下载 SnowSQL(CLI 客户端)或 SnowSQL 命令行客户端。专家可以使用 Snowflake 语法中的 PUT 命令来暂存本地文件。通过调整 1 到 100 之间的数字,可以优化并行化的效率,其中较低的数字需要较少的执行能力。

Data Migration in Snowflake

5. 自动压缩文件

请记住在 Snowflake 中自动压缩本地文件以提高暂存时的速度。为获得最佳效果,请检查文件是否已使用 zip 显式压缩;如果是,则将 auto-compress 设置为“false”布尔值。

6. 执行

在此阶段,云迁移专家会配置 Snowflake 环境并启动迁移过程。

7. 确认云迁移

确保一切按计划进行是最后一步。测试并验证迁移到 Snowflake 的数据,以确保其正确且可用。数据迁移测试对于确保您的数据处于良好状态并已准备好在 Snowflake 中使用至关重要。

这些数据的量通常以 TB 或 PB 为单位,并且通常经过了多次重构、修改和升级。现有的数据模型通常与业务上下文框架和设计模式相关联,并且监管要求可能需要精确地保留历史数据并使其易于审计。

Data Migration in Snowflake

“直接迁移”策略满足了所有这些需求,该策略同时迁移数据和业务工作负载。这可以简化变更管理,从而减少对公司其他部分的影响和停机时间。通过以适当的质量和格式迁移历史数据,可以确保数据为报告和 AI 应用程序做好准备。

选择最佳迁移策略的技巧

要更深入地了解您的历史数据环境,是确定最适合您公司的迁移策略的第一步。初始任务是获取信息。首先向 DBA、应用程序所有者、利益相关者和其他相关方提出以下问题:

  • 您的 EDW 迁移的动机是什么?您是否需要考虑任何严格的最后期限或许可证过期日期?
  • 将迁移多少原始数据以及多少表和视图?
  • 是否可以删除任何不必要、临时、冗余或其他类型的数据资产以减轻负担?
  • 何时是提取数据的最佳时机,以确保业务活动不受负面影响?
  • 是否存在可能影响工作负载和数据模型的即将到来的发布周期?

对于数据迁移,IT 专业人员必须客观地考虑本地数据中心与云提供商之间的带宽可用性。他们还必须认识并考虑任何工作负载依赖关系。为了完成迁移计划以及刷新和同步策略,他们还应将所有历史数据资产归类为热、冷或温暖。

Data Migration in Snowflake

运营团队还必须监督将数据资产从本地服务器传输所需的安全性许可,并确定暂存服务器采购的交货时间。

将数据从旧平台传输到 Snowflake 的最佳方法。迁移计划有四个主要步骤:数据提取、传输、上传和验证(在建立必要的技术和运营组件之后)。

以下是每个阶段的一些潜在障碍以及如何克服它们:

第一步:有效提取旧系统中的数据

挑战: 传统数据的压缩率低、特定表上的遗留作业或资源争用,以及源系统上可能打开的并行连接数限制,都可能阻碍有效提取。

最佳技术

仅从辅助或只读实例获取数据,以提高吞吐量。

  • 如果无法使用只读实例,可以将生产环境的备份文件加载到较低的环境中,然后从中提取。
  • 使用传统系统的原生提取器并将提取的数据暂存到暂存服务器或 NFS,以提高提取速度。
  • 通过为数据集选择正确的文本分隔符工具,避免在提取过程中数据损坏。

第二步:将数据上传到云端

挑战: 受限的网络带宽或在高峰和非高峰时段吞吐量差异很大,会阻碍数据的快速传输。大量数据也会影响每次重复中的数据传输速率。在传输文件时,尤其是在处理大文件时,可能会发生数据损坏。

最佳技术

为了在高峰、非高峰和周末时段确定最佳吞吐量窗口,在分析阶段进行概念验证。应选择最大可用带宽而不是总容量,因为多个项目有时会共享网络带宽。如果可能,使用压缩文件。

第三步:利用 Snowflake 数据云挑战上传数据

挑战: 如果客户订阅中包含对象存储,则可以使用它作为外部暂存区将数据上传到 Snowflake;如果未包含,则需要使用内部暂存区。旧平台上的高数据量增加可能导致的更短冻结时间或切换窗口,也可能影响初始迁移后增量数据同步发生的时间。此外,不适当大小的集群可能会导致您的信用额度消耗率上升。

最佳技术

为了获得最佳吞吐量,请使用 Snowflake 原生的数据加载器实用程序。您还可以使用 Snowflake 原生加载器的错误处理功能来快速查找数据加载中的问题。

第四步:检查传输的数据

挑战: 手动认证和验证耗时且容易出错。团队必须投入更多的时间和精力来评估数据的质量。

最佳技术

利用行业解决方案、加速器和定制构建的框架(如 TCS 提供的那些),以更快、更有效地完成验证。

Data Migration in Snowflake

有各种方法可以将分析和数据迁移到 Snowflake 这样的尖端云数据平台。另一方面,使用数据迁移框架可以为您提供极大的灵活性。TCS Daezmo 套件在这种情况下非常有用。它通过结合多种迁移方法、方法论和机器优先的解决方案加速器,帮助企业将数据和分析环境现代化迁移到 Snowflake。

数据迁移工具的四步迁移方法如下:

使用旧平台的原生提取器检索数据。将数据存储在暂存服务器或 NFS 中,并使用分隔文本或其他合适的数据格式(最好是压缩的,如前一最佳实践中所述)。在您喜欢的语言中创建一个通用框架,该框架使用元数据输入来启动处理多个表和业务场景的原生提取器脚本。使用 TCS 数据迁移工具和 JDBC 驱动程序,您可以提取数据,作为低数据量和长迁移窗口场景的替代方案。

使用数据迁移工具的 SFTP 连接器,将数据从暂存服务器或 NFS 提取并上传到 Snowflake 的内部或外部暂存区。利用数据迁移工具与原生加载器(用于批量加载的 COPY INTO 和用于增量数据加载的 MERGE INTO)的内置集成,您可以将数据上传到 Snowflake 表。

验证您传输的数据。数据迁移工具通过简化将数据传输到 Snowflake 目标的过程,加速了历史数据的迁移。对于具有紧张迁移截止日期的企业(例如,许可证即将到期且需要时间敏感的数据迁移的公司),节省的时间可能非常可观。

Data Migration in Snowflake

在许可证过期前的 14 个月内,一家中欧银行必须将其庞大的金融和监管数据仓库从其 RDBMS 迁移出来;数据必须精确地按原样传输。该银行使用 TCS 数据迁移工具迁移了超过 300 TB 的非生产环境历史数据。由于数据量庞大,团队使用了 TCS 数据迁移工具与原生平台工具的集成来完成工作。由于生产环境超过 1 PB 的数据迁移时间表紧张且网络带宽有限,因此基于设备的策略是最佳选择。

该团队使用了 AWS Snowball 存储设备,并创建了自定义脚本,在将数据加载到 S3 存储桶后加载到 Snowflake 表中。在几个月内,功能齐全的金融和监管平台在 Snowflake 上启动。

尽可能高效地促进数据传输

  • 仔细的数据管理对于数据驱动型组织的成功至关重要,当从企业数据仓库平台迁移到 Snowflake 等云平台时,这一点尤其重要。
  • 由于应用于历史数据的分析结果为企业级战略和战术决策提供信息,因此必须优先处理历史数据传输。
  • 我们 TCS Daezmo 数据仓库现代化解决方案的功能,以及 TCS 在各种迁移方法和选项方面丰富的经验,造就了本文所述的最佳实践。我们很高兴能与 Snowflake 合作,为客户提供尽可能顺畅的数据迁移体验。
  • 为了确保正确有效地传输数据,在数据迁移到 Snowflake 的过程中必须遵循一系列程序。这是一个程序的广泛概述:

1. 组织和评估

  • 数据清单: 在数据清单中列出所有数据源、格式和数量。
  • 条件编译: 识别安全、合规和业务需求。
  • 迁移策略: 选择渐进式方法和“大爆炸”迁移策略。

2. 准备

  • 模式映射: 将当前数据模式与 Snowflake 的模式对齐。
  • 数据清理: 为确保一致性和质量,根据需要清理和修改数据。
  • 环境设置: 通过创建数据库、仓库、模式和您的 Snowflake 帐户来配置您的环境。

3. 数据加载

  • 暂存数据: 使用 Snowflake 的内部或外部暂存区加载数据。
  • 复制数据: 使用 COPY INTO 命令将数据从暂存区加载到 Snowflake 表中。
  • 自动化加载: 设置 Snowpipe 或其他类似工具的自动化管道,以实现连续数据加载。

4. 数据测试和验证

  • 数据验证: 迁移后,确认数据的完整性和准确性。

5. 监控和上线

  • 切换: 如果采用分阶段策略,请执行最终切换计划。
  • 监控: 为系统性能和数据管道配置警报和监控。
  • 维护: 定期维护 Snowflake 环境并进行优化。

确实,让我们更详细地探讨 Snowflake 数据传输过程的每个阶段。

1. 组织和评估

应记录所有数据源,包括数据库、平面文件、API 和外部应用程序,作为数据清单的一部分。评估数据的数量、多样性和速度。

  • 条件收集: 确定公司的需求,包括安全要求、GDPR 和 HIPAA 合规性要求以及数据保留规则。
  • 迁移方法: 在分阶段方法(分阶段迁移)或“大爆炸”方法(一次性迁移)之间进行选择。考虑回滚策略、停机时间限制和依赖关系。

2. 准备

  • 模式映射: 将当前数据库的模式转换为 Snowflake 格式。观察数据类型、约束、索引、主键和外键。

数据清理是消除重复项、修复错误和标准化数据格式的过程。这正是 Informatica、OpenRefine 和 Talend 等工具派上用场的地方。

通过设置以下内容来配置您的 Snowflake 帐户环境:

  • 为虚拟仓库分配计算资源。
  • 使用数据库和模式来逻辑地组织您的数据。
  • 在角色和权限下定义用户、角色和访问限制。

3. 数据测试和验证

  • 数据验证: 为了验证数据完整性,请比较源系统和目标系统之间的样本记录、行数和校验和。
  • 性能测试: 对工作负载和关键查询执行性能测试。为满足 SLA,根据需要进行优化。
  • 端到端测试: 验证数据流的所有阶段(提取、加载和查询)是否都满足业务需求。

4. 增强和调整

  • 索引和分区: 为了最大化大型表,请使用聚簇键。在后台,Snowflake 会自动处理索引和分区。
  • 查询优化: 使用 Snowflake 的查询配置文件工具评估和改进查询性能。对于经常访问的数据,考虑结果缓存、物化视图和缓存。

5. 监控和上线

  • 切换: 安排并执行切换。让利益相关者知情,并确保尽量减少干扰。
  • 监控: 使用第三方解决方案(如 AWS CloudWatch 和 Azure Monitor)或 Snowflake 中的内置功能配置监控。密切关注系统健康状况、查询性能和数据管道。
  • 维护: 定期检查和改进您的 Snowflake 环境。要恢复意外更改或删除的数据,请使用 Snowflake 的时间旅行功能。

6. Snowflake 的功能

  • Snowpipe: 持续加载数据。
  • 时间旅行: 恢复和版本化数据。
  • 克隆: 制作表的零拷贝克隆、模式和数据库称为克隆。
  • 安全数据共享: 安全地将信息传输给其他方。

Talend 提取数据工作流示例

  • 要从源系统提取数据,请创建一个 Talend 作业。
  • 使用 Talend 组件连接到数据库、API 或平面文件。

转换数据

  • 使用 Talend 组件进行数据丰富、转换和清理。
  • 将源字段映射到 Snowflake 字段,进行必要的调整。

下载数据

  • 要将数据加载到 Snowflake,请配置 Talend Snowflake 组件。
  • 使用 Snowflake 的独特连接器或 COPY INTO 命令。

Snowflake 迁移的步骤

1. 评估: 检查当前记录架构,包括数据量、类型和格式,以及实施的 ETL(提取、转换、加载)策略。

2. 规划: 确定要迁移哪些记录,如何最好地处理历史信息,以及要对当前 ETL 流程进行哪些修改。

3. 环境设置: 为 Snowflake 环境分配角色、数据库和虚拟仓库。

4. 模式迁移: 将当前系统的数据库模式迁移到 Snowflake。使数据类型和结构与 Snowflake 兼容可能包括转换它们。

Data Migration in Snowflake

5. 数据迁移: 将数据从当前数据库传输到 Snowflake。可以使用第三方工具或 Snowpipe 等原生 Snowflake 工具进行。

6. 代码迁移: 为了使 SQL 查询、存储过程和其他代码能够与 Snowflake 一起工作,请更新或重建它们。

7. 测试: 为确保数据完整性、性能和可靠性,请彻底测试新环境。

8. 优化: 根据测试结果调整性能参数,例如仓库大小和聚簇键。

9. 部署: 从之前的系统迁移到新的 Snowflake 环境。这可能涉及在一段时间内同时运行两个系统。

Snowflake 迁移的优势

  • 可扩展性: Snowflake 的架构使得扩展存储和处理能力变得简单。
  • 性能: 提高并发性和查询性能。
  • 成本效益: 按您使用的计算资源数量进行即时付费定价。
  • 简单性: 通过基于 SQL 的完整界面,易于设置和维护。
  • 安全性: 强大的安全功能,例如基于功能的完全访问控制和记录加密。

挑战

  • 兼容性: 可能需要修改现有的 SQL 代码和 ETL 过程。
  • 数据传输: 大量数据的传输可能需要一些时间。
  • 成本: 虽然 Snowflake 可以经济实惠,但迁移过程可能涉及费用。

迁移工具

  • SnowSQL: Snowflake 的原生命令行客户端,允许您执行 SQL 查询。
  • Snowpipe: 用于持续自动数据摄取。
  • 第三方工具: 对于 ETL 流程,例如 Matillion、Talend 和 Azure Data Factory。

最佳实践

  • 增量迁移: 为降低风险,请考虑逐步迁移。
  • 数据验证: 迁移后,确保数据完整性。
  • 性能调优: 利用 Snowflake 提供的物化视图、聚簇键和其他性能调优功能。

仔细的规划对于确保无缝传输至关重要,这可以大大增强 Snowflake 迁移的可扩展性、性能和灵活性。

结论

总而言之,我们可以得出结论,将数据迁移到 Snowflake 需要极其注重细节的规划、准备和执行。通过遵循结构化方法,包括评估您当前的现环境、配置 Snowflake、提取和加载数据、转换和验证数据、优化性能以及进行广泛的测试,可以确保无缝传输。


下一个主题Snowflake 数据转换