本页面简要介绍了 BigQuery 目标平台。本文介绍了将数据复制到 BigQuery 时,Datastream 的写入行为和已知限制。
写入行为
将数据流式传输到 BigQuery 时,事件的最大大小为 20 MB。
配置数据流时,您可以选择 Datastream 将更改数据写入 BigQuery 的方式。如需了解详情,请参阅配置写入模式。
表元数据
Datastream 会向写入 BigQuery 目标平台的每个表中附加一个名为 datastream_metadata 的 STRUCT 列。
合并写入模式
如果表在来源处具有主键,则该列包含以下字段:
UUID:此字段的数据类型为STRING。SOURCE_TIMESTAMP:此字段的数据类型为INTEGER。
如果表没有主键,则该列包含一个额外的字段:IS_DELETED。此字段的数据类型为 BOOLEAN,用于指示 Datastream 流式传输到目标位置的数据是否与源中的 DELETE 操作相关联。没有主键的表是仅附加的。
仅附加写入模式
datastream_metadata 列包含具有主键和不具有主键的表的相同字段:
UUID:此字段的数据类型为STRING。SOURCE_TIMESTAMP:此字段的数据类型为INTEGER。CHANGE_SEQUENCE_NUMBER:此字段的数据类型为STRING。这是 Datastream 为每个变更事件使用的内部序列号。CHANGE_TYPE:此字段的数据类型为STRING。它表示更改事件的类型:INSERT、UPDATE-INSERT、UPDATE-DELETE或DELETE。SORT_KEYS:此字段包含一个STRING值数组。您可以使用这些值对更改事件进行排序。
控制 BigQuery 费用
BigQuery 费用与 Datastream 费用分开收取。如需了解如何控制 BigQuery 费用,请参阅 BigQuery CDC 价格。
已知限制
将 BigQuery 用作目标位置的已知限制包括:
- 您只能将数据复制到与 Datastream 流位于同一 Google Cloud 项目中的 BigQuery 数据集。
- 默认情况下,Datastream 不支持向已复制到 BigQuery 且没有主键的表添加主键,也不支持从已复制到 BigQuery 且有主键的表中移除主键。如果您需要进行此类更改,请与 Google 支持团队联系。如需了解如何更改已具有主键的源表的主键定义,请参阅诊断问题。
BigQuery 中的主键必须采用以下数据类型:
DATEBOOLGEOGRAPHYINT64NUMERICBIGNUMERICSTRINGTIMESTAMPDATETIME
包含不受支持的数据类型的主键的表不会被 Datastream 复制。
BigQuery 不支持包含
.、$、/、@或+字符的表名。Datastream 在创建目标表时会将此类字符替换为下划线。例如,源数据库中的
table.name在 BigQuery 中会变为table_name。如需详细了解 BigQuery 中的表名称,请参阅表命名。
BigQuery 不支持超过 4 个聚簇列。复制主键列超过 4 列的表时,Datastream 会使用 4 个主键列作为聚簇列。
Datastream 会将超出范围的日期和时间字面量(例如 PostgreSQL 无限日期类型)映射到以下值:
- 正值:
DATE到9999-12-31 - 将负
DATE更改为0001-01-01的值 - 正值:
TIMESTAMP到9999-12-31 23:59:59.999000 UTC - 将负
TIMESTAMP更改为0001-01-01 00:00:00 UTC的值
- 正值:
BigQuery 不支持主键数据类型为
FLOAT或REAL的流式表。此类表不会被复制。 如需详细了解 BigQuery 日期类型和范围,请参阅数据类型。如果您的数据源是 Salesforce,则不支持每个架构的数据集配置选项。