有效负载和方案参考
启用 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)"
}
}
启用 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"}
}
}