設定 JSON 輸出

下表顯示 operation 和 row 模型

模型 形狀 指引
op 記錄層級的描述資料,以及 before 和 after 物件底下的資料欄值。 建議用於 CDC,因為它會保留明確的影像語意。
row 記錄層級的資料欄值,而非巢狀影像物件。 僅在下游合約預期為純文字列時使用。表格特定的程式實際執行綱要定義每項作業所代表的影像。
op 與 flatten=true 巢狀影像名稱會與資料欄名稱串接,例如當分隔符號為 . 時,before.STATUS 與 after.STATUS。 對於在區別之前 / 之後仍需要的扁平水槽非常有用。

核心 JSON 特性

財產 預設 / 限制 說明
$schema ogg:outputFormatJson JSON 輸出組態綱要 ID。
model op;op 或 row 記錄模型。
beforeImageName before;1-32 個字元 作業模型中前影像物件的名稱。
afterImageName after;1-32 個字元 作業模型中後影像物件的名稱。
omitNullColumnValues false 忽略值為空值的資料欄。這會讓遺漏的欄位無法區分遺漏和空值。
treatAllColumnsAsStrings false 將所有資料欄值寫入為字串,而非原生 JSON 原始類型。
flatten false 在作業模型中的影像資料欄之前和之後展開。
flattenDelimiter 0-32 字元 均一化時影像名稱與資料欄名稱之間的分隔符號。
delimiter 0-32 字元 格式器記錄分界字元。WebSocket 使用者通常應保留 AsyncAPI YAML 所描述的預設陣列合約。
staticFields 物件 / 無 新增具有常數值的欄位至輸出記錄。
operationStrings 插入,更新,刪除,截斷,更新插入,DDL 自訂作業標籤。變更前與每個消費者協調。

綱要和描述資料排放

財產 預設 效果
includeJSONSchemaRecord true 發出串流描述資料、物件描述資料、DML 以及 DDL 記錄的 JSON 綱要記錄。
includeObjectMetadataRecords true 發出表格資料欄描述資料。
includeStreamMetadataRecord true 發出產生器和來源資料庫描述資料。

建議:除非管控的外部綱要登錄取代這三個設定值,否則請將這三個設定值全部保持啟用。停用綱要或描述資料記錄可減少網路磁碟區,但會將啟動多版本功能和尋找職責傳輸至用戶平台。

大小和大值控制

財產 預設 最小值 最大值 行為
maxLobSize 64,000 1 18,446,744,073,709,552,000 LOB 資料會被截斷,超過此大小 (位元組)。
maxDDLTextSize 1,000,000 1 4,294,967,295 DDL 敘述句文字被截斷超過此大小 (位元組)。
maxRecordSize 1,048,576 131,072 10,485,760 超過大小的記錄會被截斷或分區。
truncateOrChunk truncate - truncate 或 chunk 選取超大記錄處理。

當 truncateOrChunk 為 chunk 時,會使用程式實際執行綱要所定義的區塊描述資料。請勿發明重組合約。因為 WebSocket 程式庫、代理主機和下游平台可能實行額外的框架或訊息限制,所以載入測試的 LOB 和 DDL 大小上限。

描述資料欄位

大部分的 metaFields 項目接受布林值或字串。true 包含其預設輸出名稱的欄位,false 會省略該欄位,而字串會包含在該自訂名稱下。env、sys 和 tokens 會接受 REST 綱要所定義的特殊物件或值。

財產 預設 意義
qualifiedTable true 完整的物件名稱。「預設資料串流」欄位通常是 qual_table。
opType true 作業類型。預設欄位通常是 op_type。
opTs true 作業時戳。預設欄位通常是 op_ts。
pos true 不透明的復原位置。請勿停用可復原的消費者。
xid true 來源交易識別碼。
table false 不合格的表格名稱。
schema false 綱要或擁有者名稱。
catalog false 目錄名稱 (若有的話)。
csn false 來源確認序號。
opSeqno false 記錄異動內的序號。
transInd false 交易指標 B、M、E 或 W。
primaryKeys false 根據設定的格式化程式合約,主索引鍵資料欄名稱或值。
opTsMicroSecs false 紀元之後的作業時戳為微秒。
currentTs false 目前的處理時戳。
currentTsMicroSecs false 紀元之後的目前處理時戳為微秒。
tokens null 使用者記號、GoldenGate 記號、所有記號或設定的子集。
env null 選取的 GoldenGate 環境值。
sys null 選取的系統環境值。避免暴露秘密。
"metaFields": {
  "qualifiedTable": true,
  "opType": true,
  "opTs": true,
  "pos": true,
  "xid": true,
  "csn": "csn",
  "opSeqno": "op_seqno",
  "transInd": "trans_ind",
  "primaryKeys": "primary_keys"
}

明確的字串名稱可讓公用有效負載 (Payload) 合約清除,並避免依靠格式化程式預設名稱作為選擇性描述資料。