本页介绍如何配置 Datastream,以便您可以将数据写入 BigQuery 数据集。
所需权限
Datastream 使用 BigQuery 内置的对变更数据捕获 (CDC) 更新的支持。Datastream 通过使用 BigQuery Storage Write API 处理流式插入的更改并将其应用于 BigQuery 表来更新这些表。
使用该 API 并将数据提取到 BigQuery 所需的权限已授予 Datastream 服务代理角色。
将 BigQuery 配置为目标
如需配置 Datastream 以实现向 BigQuery 的流式传输,请执行以下步骤:
- 确保已在 Google Cloud项目中启用 BigQuery API。
- 如果您想使用所有架构共用一个数据集选项,请在 BigQuery 中创建一个数据集。
- 为数据流配置目标数据集。
- 配置写入模式。
- 为您的数据流指定最大数据过时期限。
配置目标数据集
数据集是用于组织和控制对 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 将不再保留该行的任何记录。
仅附加:借助仅附加写入模式,您可以以变更数据流(
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
选项搭配使用,请参阅表过时程度。