有效負載和綱要參照

啟用 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)"
  }
}

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"}
  }
}