配置 BigQuery 目标位置

如需近乎实时地分析来源中的变更数据捕获 (CDC) 更新,您可以使用 Datastream 将其流式传输到 BigQuery。 配置 BigQuery 目标时,您可以选择 Datastream 组织数据集的方式,选择合并或仅追加写入模式,并设置数据过时期限。

所需权限

Datastream 使用 BigQuery 内置的对变更数据捕获 (CDC) 更新的支持。Datastream 通过使用 BigQuery Storage Write API (gRPC) 处理和应用流式传输的更改来更新 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 表。

    您可以从任何 Google Cloud 项目中选择数据集。默认情况下,系统会显示当前项目中的数据集。您还可以在所选项目中创建新数据集。

配置写入模式

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

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

  • 仅追加:使用仅追加写入模式,您可以将数据作为一系列更改(INSERT、UPDATE-INSERT、UPDATE-DELETE 和 DELETE 事件)添加到 BigQuery。当您需要保留数据的历史状态时,请使用此模式。

    如需更好地了解仅追加写入模式,请考虑以下场景:

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

指定数据过时期限

BigQuery 会根据配置的数据过时期限,持续或在查询运行时在后台应用来源修改。当 Datastream 在 BigQuery 中创建新表时,该表的 max_staleness 选项会根据数据流的当前数据过时期限值进行设置。这样可确保该表永远不会超过应用的数据过时期限。数据过时期限不会影响 BigQuery 合并作业的频率。

如需详细了解如何使用具有 max_staleness 选项的 BigQuery 表,请参阅 表过时期限。