페이로드 및 스키마 참조

데이터 스트림은 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 스키마 유형에 대한 안정적인 식별자와 테이블별 스키마에 대한 정규화된 객체입니다.
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 데이터 스트림 생산자 ID 및 소프트웨어 버전입니다.
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 string, number 또는 boolean와 같은 JSON 기본 데이터 유형 분류입니다. 테이블별 JSON 스키마를 null을 포함하여 수락된 전체 유형에 사용합니다.
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 원래 값 새 값입니다. 추적 및 소스 로깅은 이미지가 가득 찬지 또는 부분적인지를 결정합니다.
삭제 삭제된 행 이미지 일반적으로 없음 키 열 및 필수 감사 열이 캡처되었는지 확인합니다.
갱신/삽입 런타임 스키마 종속 결과 행 이미지 소스 파이프라인에 대해 생성된 스키마 및 작업 계약을 사용합니다.

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