CaptureChangePostgreSQL

CaptureChangePostgreSQL

PostgreSQL 데이터베이스에서 CDC(Change Data Capture) 이벤트를 읽는 프로세서예요. 스트림에 들어오는 이벤트를 계속 읽으며, TableStateService가 제공하는 테이블과 관련된 것만 골라내고 나머지는 버려요.

출처: Snowflake 문서 — CaptureChangePostgreSQL

본문

번들 (Bundle)

com.snowflake.openflow.runtime | runtime-database-cdc-processors-nar

설명

PostgreSQL 데이터베이스에서 CDC 이벤트를 읽어요. 프로세서는 스트림에 도착하는 이벤트를 계속 읽으면서, TableStateService가 제공하는 테이블과 관련된 이벤트만 걸러내고 나머지는 폐기해요. 현재 배치의 이벤트를 처리하고 나면 프로세서가 복제 슬롯(replication slot) 위치를 PostgreSQL에 다시 확인시켜서 WAL을 정리(trim)할 수 있게 해 줘요. 프로세서는 두 가지 유형의 FlowFile을 출력해요:

  • DDL — 테이블의 초기 스키마, 그리고 스키마가 변경될 때마다의 새 스키마를 담아요.
  • DML — 테이블 데이터의 변경 사항을 나타내는 레코드예요.

하나의 FlowFile은 항상 단일 테이블과 관련된 데이터를 나타내요. 스키마가 담긴 DDL은 FlowFile 내용에 다음과 같은 형태의 JSON 객체로 기록돼요:

{
  "columns": [
    { "name": "<columnName>", "type": "<snowflakeType>", "nullable": <true|false>, "scale": <scale>, "precision": <precision> },
    ...
  ],
  "primaryKeys": ["<primaryKey1>", "<primaryKey2>", ...]
}

DML 레코드는 다음과 같이 구조화돼요:

{
  "primaryKeys": { "<column>": <value>, ... },
  "payload": { "<column>": <value>, ... },
  "metadata": { "<column>": <value>, ... }
}

태그

cdc, event, jdbc, postgresql, sql

입력 요구 사항 (Input Requirement)

FORBIDDEN — 입력 FlowFile이 허용되지 않아요.

민감한 동적 속성 지원 (Supports Sensitive Dynamic Properties)

false — 지원하지 않아요.

속성 (Properties)

속성 설명
Column Filter Store 테이블별 컬럼 필터링 설정을 저장하는 서비스예요.
JDBC Driver Location 드라이버 JAR와 그 의존성(있다면)을 담은 파일/폴더 및/또는 URL의 쉼표로 구분된 목록이에요. 예: /var/tmp/postgresql-java-client-42.7.5.jar
JDBC URL 데이터베이스 연결의 JDBC URL이에요. 예: jdbc:postgresql://localhost:5432/postgres
Max Batch Size 단일 반복에서 처리할 최대 레코드 수예요.
Max Batch Wait Time CDC 스트림에 데이터가 나타날 때까지 기다리는 최대 시간이에요.
Password PostgreSQL 데이터베이스에 접근하는 비밀번호예요.
Publication Name 읽어올 CDC publication의 이름이에요.
Record Writer DML 이벤트 직렬화에 사용되는 Record Writer예요.
Replication Slot Name 사용할 복제 슬롯 이름이에요. 최대 63자예요. 슬롯이 없으면 프로세서가 만들게 돼요.
SSL Context Service 암호화된 소켓 통신을 지원하는 SSL Context Service예요.
SSL Mode PostgreSQL에 연결할 때 SSL을 사용하고 강제할지 여부예요.
TOASTed Value Placeholder TOAST 처리된 컬럼에 넣을 값이에요.
TOASTed Value Strategy TOASTed 값을 처리하는 방법을 결정해요.
Table State Store 복제된 테이블의 상태를 보관하는 공유 저장소예요.
Username PostgreSQL 데이터베이스에 접근하는 사용자 이름이에요.

상태 관리 (State management)

범위 (Scope) 설명
CLUSTER 이 프로세서는 데이터베이스의 현재 CDC 이벤트에 대한 '포인터' 같은 정보와 PostgreSQL에 만든 복제 슬롯 이름을 저장해서, 재시작해도 같은 위치에서 이어갈 수 있어요.

관계 (Relationships)

이름 설명
success CDC 스트림 이벤트에서 FlowFile을 성공적으로 만들었어요.

기록하는 속성 (Writes attributes)

이름 설명
source.schema.name 이벤트가 발생한 테이블의 스키마 이름이에요.
source.table.name 이벤트가 발생한 테이블의 이름이에요.
cdc.event.type FlowFile이 나르는 이벤트 유형, ddl 또는 dml이에요.
cdc.most.significant.position CDC 스트림에서 DDL의 가장 큰 위치 값이에요.
cdc.least.significant.position CDC 스트림에서 DDL의 가장 작은 위치 값이에요.
cdc.event.seen.at 프로세서가 ddl 이벤트를 읽은 시점의 타임스탬프예요.

더 알아보기 (Learn more)