有效負載和綱要參照
啟用 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 綱要草稿 4,並包含下列欄位:
| 欄位 |
意義 |
id |
綱要類型的穩定 ID,對於表格特定綱要,限定物件。 |
title |
人類可讀的綱要標題。 |
$schema |
JSON 綱要方言,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"}
}
}