有效负载和方案参考

启用 JSON 方案和元数据记录时,数据流可以自行描述。当重命名输出字段、启用可选元数据、记录模型更改或源元数据更改时,确切的记录配置可能会更改。生成的 AsyncAPI YAML 和带内 JSON 方案记录是授权运行时定义。

分类 标识 加工指南
模式记录 包含 id、$schema、type 和 properties 由 id 缓存;请勿作为业务数据进行路由。
流元数据 op_type 为 STREAM_METADATA 记录生成器和源上下文;重新出现时刷新诊断。
对象元数据 op_type 为 OBJECT_METADATA 通过 qual_table 高速缓存列、基元类型、空值和键标志。
DML op_type 是 INSERT、UPDATE、DELETE 或 UPSERT 根据前/后语义应用行更改。
DDL op_type 为 DDL,并且存在 ddl 处理对象和语句,然后在适用时要求刷新元数据/方案。

JSON 方案记录

默认情况下,数据流会在发送需要 JSON 模式的记录类型之前发出 JSON 模式记录。方案记录使用 JSON 方案草稿 4 并包含以下字段:

字段 含义
id 方案类型的稳定标识符,对于特定于表的方案,限定对象。
title 人可读模式标题。
$schema JSON Schema 方言,http://json-schema.org/draft-04/schema#。
type 顶级 JSON 类型,object。
definitions 需要时可重复使用的列或元数据定义。
properties 允许的字段及其约束条件。
required 方案实例所需的字段。
additionalProperties 是否接受模式未声明的字段。

使用者规则:不要期望方案记录包含 op_type。通过方案结构和 id 检测它。源元数据或流配置更改时,可以再次发送方案。

流元数据记录

字段 子字段 说明
op_type - STREAM_METADATA.
producer name, version 数据流生成器身份和软件版本。
database name, version, charset, timeZone 源数据库上下文。将值视为信息性和与来源相关。
machine node, system, release, version, hardware 主机操作系统的上下文。
source file、uri、uriHistory(如果存在)、creationTime、compatibility 来源线索或流程上下文。

对象元数据记录

对象元数据记录描述用于对 DML 进行编码的当前表定义。它具有 op_type: OBJECT_METADATA、qual_table 和 columns 对象。每一列都包含:

列特性 说明
type JSON 基元分类,例如 string、number 或 boolean。对完整的接受类型(包括 null)使用特定于表的 JSON 方案。
null 源列是否可以根据捕获的元数据为空值。
key 列是否是对象 GoldenGate 已知的键的一部分。
{
  "op_type": "OBJECT_METADATA",
  "qual_table": "SALES.ORDERS",
  "columns": {
    "ORDER_ID": {"type": "number", "null": false, "key": true},
    "STATUS": {"type": "string", "null": false, "key": false},
    "TOTAL_AMOUNT": {"type": "number", "null": true, "key": false}
  }
}

DML 记录

默认值字段 缺省情况下为必需 含义
qual_table 是 全限定表名可使用 metaFields.qualifiedTable 更改名称和存在状态。
op_type 是 运算字符串。默认值为 INSERT、UPDATE、DELETE、UPSERT;可以定制字符串。
op_ts 是 当前数据流方案中的 ISO 8601 形式的源操作时间戳。
xid 是 以字符串表示的源事务处理标识符。格式与源相关。
pos 是 不透明恢复位置。完全存储;不进行语法分析。
before 条件 捕获所需列时用于更新和删除操作的图像之前。名称可以进行定制。
after 条件 捕获所需列时用于插入和更新操作的图像。名称可以进行定制。
可选元数据 否 csn、工序、事务处理指示符、主关键字、目录/方案/表、处理时间戳、标记、环境值和静态字段。

图像矩阵之前和之后

操作 before after 注释
INSERT 通常缺席 新建行图像 仅会发出线索中可用的列。
UPDATE 原始值 新建值 线索和源日志记录确定图像是完整还是部分。
DELETE 已删除行图像 通常缺席 确保捕获关键列和所需的审计列。
上插 运行时模式相关 结果行图像 将生成的方案和工序合同用于源管道。

DML 示例

{
  "qual_table": "SALES.ORDERS",
  "op_type": "INSERT",
  "op_ts": "2026-07-13T04:01:01.123456Z",
  "xid": "example-transaction-1001",
  "pos": "G-QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo=1001",
  "after": {
    "ORDER_ID": 1001,
    "STATUS": "NEW",
    "TOTAL_AMOUNT": 125.50
  }
}
{
  "qual_table": "SALES.ORDERS",
  "op_type": "UPDATE",
  "op_ts": "2026-07-13T04:02:12.654321Z",
  "xid": "example-transaction-1002",
  "pos": "G-R0hJSktMTU5PUFFSU1RVVldYWVo=1002",
  "before": {"ORDER_ID": 1001, "STATUS": "NEW"},
  "after": {"ORDER_ID": 1001, "STATUS": "APPROVED"}
}
{
  "qual_table": "SALES.ORDERS",
  "op_type": "DELETE",
  "op_ts": "2026-07-13T04:03:15.000000Z",
  "xid": "example-transaction-1003",
  "pos": "G-SktMTU5PUFFSU1RVVldYWVo=1003",
  "before": {"ORDER_ID": 1001, "STATUS": "APPROVED"}
}

DDL 记录

字段 含义
op_type DDL.
op_ts DDL 操作时间戳。
xid 与 DDL 记录关联的事务处理标识符。
pos DDL 记录的不透明恢复位置。
ddl.object.catalog 源提供的目录名称;可以是空字符串。
ddl.object.schema 方案或所有者名称。
ddl.object.object 受影响的对象名称。
ddl.statement DDL 文本,如果超过 maxDDLTextSize,则将其截断。
{
  "op_type": "DDL",
  "op_ts": "2026-07-13T04:04:30.000000Z",
  "xid": "example-transaction-1004",
  "pos": "G-TU5PUFFSU1RVVldYWVo=1004",
  "ddl": {
    "object": {
      "catalog": "",
      "schema": "SALES",
      "object": "ORDERS"
    },
    "statement": "ALTER TABLE SALES.ORDERS ADD CUSTOMER_TIER VARCHAR2(20)"
  }
}

CloudEvents 格式

启用 cloudEventsFormat 时,GoldenGate 记录将转入 CloudEvents JSON data 成员。标准 CloudEvents 属性标识事件。将 type、source 和 id 的值视为运行时合同值,并检查生成的 YAML 和实际记录,而不是其他流中的硬编码示例。

{
  "specversion": "1.0",
  "type": "<runtime event type>",
  "source": "<runtime event source>",
  "id": "<runtime event id>",
  "datacontenttype": "application/json",
  "data": {
    "qual_table": "SALES.ORDERS",
    "op_type": "INSERT",
    "op_ts": "2026-07-13T04:01:01.123456Z",
    "xid": "example-transaction-1001",
    "pos": "G-QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo=1001",
    "after": {"ORDER_ID": 1001, "STATUS": "NEW"}
  }
}