페이로드 및 스키마 참조
데이터 스트림은 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)"
}
}
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"}
}
}