配置 BigQuery 目标位置

本页介绍如何配置 Datastream,以便您可以将数据写入 BigQuery 数据集。

所需权限

Datastream 使用 BigQuery 内置的对变更数据捕获 (CDC) 更新的支持。Datastream 通过使用 BigQuery Storage Write API 处理流式插入的更改并将其应用于 BigQuery 表来更新这些表。

使用该 API 并将数据提取到 BigQuery 所需的权限已授予 Datastream 服务代理角色。

将 BigQuery 配置为目标

如需配置 Datastream 以实现向 BigQuery 的流式传输,请执行以下步骤:

  1. 确保已在 Google Cloud项目中启用 BigQuery API。
  2. 如果您想使用所有架构共用一个数据集选项,请在 BigQuery 中创建一个数据集
  3. 为数据流配置目标数据集
  4. 配置写入模式
  5. 为您的数据流指定最大数据过时期限

配置目标数据集

数据集是用于组织和控制对 BigQuery 表的访问权限的顶级容器。

使用 Datastream 为 BigQuery 目标位置配置数据集时,您可以选择以下任一选项:

  • 为每个架构创建一个数据集:数据集由 Datastream 根据源的架构名称在指定的 BigQuery 位置中选择或自动创建。因此,来源中的每个架构在 BigQuery 中都有一个对应的数据集。例如,如果您有一个 MySQL 来源,并且该来源包含一个 mydb 数据库以及该数据库中的一个 employees 表,那么 Datastream 会在 BigQuery 中创建 mydb 数据集和 employees 表。

    如果您选择此选项,Datastream 会在包含该流的项目中创建数据集。虽然您无需在与数据流相同的区域中创建数据集,但为了优化费用和性能,我们建议您将数据流的所有资源以及数据集都放在同一区域中。

  • 为所有架构创建一个数据集:您可以为数据流选择一个 BigQuery 数据集。Datastream 会将所有数据流式传输到此数据集。对于您选择的数据集,Datastream 会以 <schema>_<table> 的形式创建所有表。

    例如,如果您有一个 MySQL 来源,并且该来源包含一个 mydb 数据库和该数据库中的一个 employees 表,那么 Datastream 会在您选择的数据集中创建 mydb_employees 表。

配置写入模式

您可以使用以下两种模式来定义希望如何将数据写入 BigQuery:

  • 合并:这是默认的写入模式。选择此选项后,BigQuery 会反映数据在源数据库中的存储方式。这意味着,Datastream 会将数据的所有更改写入 BigQuery,然后 BigQuery 会将这些更改与现有数据合并,从而创建源表的副本作为最终表。在合并模式下,系统不会保留更改事件的任何历史记录。例如,如果您先插入一行,然后更新该行,BigQuery 只会保留更新后的数据。如果您随后从源表中删除相应行,BigQuery 将不再保留该行的任何记录。

  • 仅附加:借助仅附加写入模式,您可以以变更数据流(INSERTUPDATE-INSERTUPDATE-DELETEDELETE 事件)的形式向 BigQuery 添加数据。如果您需要保留数据的历史状态,请使用此模式。 为了更好地了解仅附加写入模式,请考虑以下场景:

    • 初始回填:初始回填完成后,所有事件都会以 INSERT 类型事件写入 BigQuery,并具有相同的时间戳、通用唯一标识符 (UUID) 和更改序列号。
    • 主键更新:当主键发生更改时,系统会将两行数据写入 BigQuery:
      • 包含原始主键的 UPDATE-DELETE
      • 包含新主密钥的 UPDATE-INSERT
    • 行更新:当您更新某一行时,系统会将单个 UPDATE-INSERT 行写入 BigQuery
    • 删除行:当您删除某一行时,系统会将一个 DELETE 行写入 BigQuery

指定数据过时期限

BigQuery 会根据配置的数据过时限制,持续或在查询运行时在后台应用源修改。当 Datastream 在 BigQuery 中创建新表时,该表的 max_staleness 选项会根据数据流的当前数据过时限制值进行设置。

如需详细了解如何将 BigQuery 表与 max_staleness 选项搭配使用,请参阅表过时程度