从 Snowflake 迁移到 BigQuery - 简介
本文档介绍了如何将数据从 Snowflake 迁移到 BigQuery。
为了支持迁移到 BigQuery, Google Cloud 提供 BigQuery 迁移服务,作为将数据仓库迁移到 BigQuery 的综合性解决方案。该迁移服务提供各种功能来支持迁移的各个阶段,包括评估和规划、SQL 转换、数据转移和数据验证。 如需了解详情,请参阅 BigQuery Migration Service 简介。
特性比较
以下部分重点介绍了 BigQuery 和 Snowflake 之间的主要异同,并介绍了 BigQuery 特有的几项功能。
术语
下表将 Snowflake 术语与等价的 BigQuery 术语一一对应:
Snowflake | BigQuery |
---|---|
数据库 | 数据集 |
架构 | 架构 |
查看 | 视图 |
安全视图 | 已获授权的视图 |
虚拟仓库 | 预订 |
物化视图 | 物化视图 |
微分区 | 分区 |
聚簇 | 聚簇 |
安全增强型用户定义函数 (UDF) | 已获授权的 UDF |
BigQuery 架构
BigQuery 是一种分析型数据仓库,具有高度可伸缩的架构。BigQuery 将存储和计算分离,使这些组件可以独立地按需扩缩。如需详细了解 BigQuery 中的架构,请参阅 BigQuery 概览。以下是 BigQuery 中与数据迁移流程相关的几项主要功能:
BigQuery 使用托管表,并提供灵活的第三方数据转移选项。这包括以 Parquet、Avro、ORC 和 CSV 等可移植格式直接从 Cloud Storage 中提取数据。
- BigQuery 还支持 Apache Iceberg 表。Iceberg 是一种开放式表格式,可为 BigQuery 带来数据湖仓一体功能,提供架构演变、时间旅行和 ACID 事务。这样一来,您就可以与其他使用 Iceberg 的系统无缝集成,并能更灵活地控制数据。
在创建表时,BigQuery 允许您定义显式分区和聚簇。这样一来,您就可以精细地控制数据组织,从而优化查询性能、通过战略性分区和聚类降低费用,并根据您的具体分析需求定制数据布局。
- 您还可以使用分区和聚簇 Recommender,让 BigQuery 根据项目的工作负载建议分区和聚簇配置。
BigQuery 会自动处理计算资源。您无需预配或管理虚拟机。
- 对于可预测的工作负载,BigQuery 提供预留功能,让您能够以较低的费用提前预留计算容量。这对于具有可预测资源需求的稳定工作负载非常有用。
- 在迁移期间,分析 Snowflake 使用模式,了解计算需求,并帮助您确定 BigQuery 中最具成本效益的方法,无论是按需付费还是使用预留。
BigQuery 界面
BigQuery 界面内置在 Google Cloud 控制台中。
BigQuery 还具有一个基于 Python 的命令行工具,称为 bq 命令行工具。
BigQuery 安全功能
从 Snowflake 迁移到 BigQuery 时,请考虑Google Cloud 处理安全性与 Snowflake 的不同之处。
BigQuery 中的安全性与 Google Cloud中的 Identity and Access Management (IAM) 密切相关。IAM 权限定义了允许对资源执行的操作,并在 Google Cloud 级层强制执行,从而提供集中且一致的安全管理方法。以下是 Google Cloud的一些关键安全功能:
- 集成安全性:BigQuery 利用了 Google Cloud的安全功能。这包括 IAM,可实现精细的访问权限控制,从而实现强大而无缝的安全集成。
- 资源级安全性:IAM 侧重于资源级访问权限控制,可为用户和群组授予对各种 BigQuery 资源和服务的权限。这种方法可以有效管理访问权限,确保用户仅拥有执行任务所需的权限。
- 网络安全:BigQuery 受益于 Google Cloud强大的网络安全功能,例如 Virtual Private Cloud 和专用连接。
从 Snowflake 迁移到 BigQuery 时,请考虑以下与安全性相关的迁移要求:
- IAM 配置:您必须在 BigQuery 中配置 IAM 角色和权限,以匹配现有的 Snowflake 访问权限控制政策。这涉及将 Snowflake 角色映射到相应的 BigQuery IAM 角色和权限。
- 精细的访问权限控制:如果您在 Snowflake 中使用行级或列级安全性,则需要在 BigQuery 中使用授权视图或政策标记来实现等效的控制。
- 视图和 UDF 迁移:迁移视图和 UDF 时,请验证关联的安全控制措施是否已正确转换为 BigQuery 中的授权视图和授权 UDF。
加密
默认情况下,BigQuery 会对静态数据和传输中的数据进行加密。如果您需要更好地控制加密密钥,BigQuery 支持 Cloud Key Management Service 中的客户管理的加密密钥。您还可以使用列级加密。
为确保在迁移到 BigQuery 期间和之后的数据安全,请考虑以下事项:
- 密钥管理:如果您需要客户管理的密钥,请在 Cloud Key Management Service 中制定密钥管理策略,并配置 BigQuery 以使用这些密钥。
- 数据遮盖/令牌化:如果涉及敏感数据,请评估是否需要进行数据遮盖或令牌化来保护这些数据。
- 行级安全性:使用授权视图、行级安全过滤器或其他适当的方法来实现行级安全性。
- 漏洞扫描和渗透测试:定期进行漏洞扫描和渗透测试,以检查 BigQuery 环境的安全状况。
角色
角色是可以向其授予和撤消可保护对象权限的实体。
在 IAM 中,权限分组为角色。IAM 提供三种类型的角色:
- 基本角色:包括 Owner、Editor 和 Viewer 角色。您可以使用Google Cloud 控制台、Identity and Access Management API 或
gcloud CLI
在项目或服务资源级层应用这些角色。通常,为了获得最强的安全性,我们建议您使用预定义角色,以遵循最小权限原则。 - 预定义角色:这些角色提供对产品(例如 BigQuery)中功能的更精细的访问权限,旨在支持常见使用场景和访问权限控制模式。
- 自定义角色:这些角色由用户指定的权限组成。
访问权限控制
Snowflake 允许您向角色授予其他角色,从而创建角色层次结构。IAM 不支持角色层次结构,但实现了资源层次结构。IAM 层次结构包括组织级层、文件夹级层、项目级层和资源级层。您可以在层次结构的任何级层设置 IAM 角色,资源会继承其父级资源的所有政策。
BigQuery 支持表级访问权限控制。表级权限决定了可以访问表或视图的用户、群组和服务账号。您可以在无需向用户提供完整的数据集访问权限的情况下授权用户访问特定的表或视图。
如需提供更精细的访问权限,您还可以使用列级访问权限控制或行级安全性。这种控制类型通过使用政策标记或基于类型的数据分类,提供针对敏感列的细化访问权限。
您还可以创建授权视图来限制数据访问以实现更精细的访问权限控制,这样,只有指定用户可以查询视图,并且他们没有底层表的读取权限。
迁移其他 Snowflake 功能
在规划向 BigQuery 的迁移时,请考虑以下 Snowflake 功能。在某些情况下,您可以使用 Google Cloud 中的其他服务来完成迁移。
时间旅行:在 BigQuery 中,您可以使用时间旅行功能访问过去 7 天内任何时间点的数据。如果您需要访问超过 7 天的数据,请考虑导出定期计划的快照。
数据流:BigQuery 支持使用 Datastream 进行变更数据捕获 (CDC)。您还可以使用 Debezium 等 CDC 软件,通过 Dataflow 将记录写入 BigQuery。如需详细了解如何使用 BigQuery 手动设计 CDC 流水线,请参阅将数据仓库迁移到 BigQuery:变更数据捕获 (CDC)。
任务:BigQuery 允许您使用 Datastream 安排查询和数据流或将集成流式传输到查询中。
外部函数:BigQuery 支持通过 Cloud Run functions 调用外部函数。您还可以使用用户定义的函数 (UDF),例如 SQL UDF。但这些函数会在 BigQuery 内部执行。
开始使用
以下各部分总结了从 Snowflake 迁移到 BigQuery 的过程:
运行迁移评估
在从 Snowflake 迁移到 BigQuery 的过程中,我们建议您先运行 BigQuery 迁移评估工具,以评估将数据仓库从 Snowflake 迁移到 BigQuery 的可行性和潜在优势。此工具提供了一种结构化的方法来了解您当前的 Snowflake 环境,并估算成功迁移所需的工作量。
运行 BigQuery 迁移评估工具会生成评估报告,其中包含以下部分:
- 现有系统报告:现有 Snowflake 系统和使用情况的快照,包括数据库数量、架构、表和总大小(以 TB 为单位)。它还按大小列出架构并指向可能的次优资源利用率,例如没有写入或读取次数很少的表。
- BigQuery 稳定状态转换建议:显示迁移后系统在 BigQuery 中的外观。其中包括有关在 BigQuery 中优化工作负载并避免浪费的建议。
- 迁移计划:提供有关迁移工作本身的信息。例如,从现有系统迁移到 BigQuery 稳定状态。此部分包含自动转换的查询数量,以及将每个表迁移到 BigQuery 的预期时间。
如需详细了解迁移评估结果,请参阅查看 Looker Studio 报告。
设置从 Snowflake 到 BigQuery 的迁移流水线
查看迁移评估结果后,您可以通过设置迁移流水线来开始 Snowflake 迁移。 如需了解详情,请参阅从 Snowflake 迁移到 BigQuery - 概览。
验证迁移
将 Snowflake 数据迁移到 BigQuery 后,请运行数据验证工具 (DVT) 对新迁移的 BigQuery 数据执行数据验证。DVT 会验证从表级到行级的各种函数,以验证迁移的数据是否按预期运行。