CaptureChangeSqlServer

CaptureChangeSqlServer

SQL Server 데이터베이스에서 CDC(Change Data Capture) 이벤트를 읽는 프로세서예요. 데이터베이스의 Change Tracking 테이블을 주기적으로 조회하되, TableStateService가 제공하는 테이블에 대해서만 조회해요.

출처: Snowflake 문서 — CaptureChangeSqlServer

본문

번들 (Bundle)

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

설명

SQL Server 데이터베이스에서 CDC 이벤트를 읽어요. 프로세서는 데이터베이스의 Change Tracking 테이블을 주기적으로 조회하지만, TableStateService가 제공하는 테이블에 대해서만 조회해요. 각 테이블에 대해 마지막으로 처리한 이벤트의 상태를 유지하고, 처리된 각 테이블이 지나면 위치를 이동시켜요. 이 프로세서는 멀티스레딩을 지원해요. 풀에 구성된 스레드 수와 연결 제한이 소스 데이터베이스로 열리는 연결의 상한을 함께 정의해요. 프로세서는 두 가지 유형의 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, sql, sql server

입력 요구 사항 (Input Requirement)

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

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

false — 지원하지 않아요.

속성 (Properties)

속성 설명
Column Filter Store 테이블별 컬럼 필터링 설정을 저장하는 서비스예요.
Connection Pool 연결 풀이에요.
Fetch Size 한 번에 메모리에 로드되는 최대 행 수예요.
Max Batch Size 단일 배치에서 가져올 최대 행 수예요.
Record Writer DML 이벤트 직렬화에 사용되는 Record Writer예요.
Table Changes Query Interval 테이블 변경을 위한 다음 쿼리를 예약하기 전에 경과해야 하는 최소 시간 간격이에요. 과도한 쿼리를 막기 위해 데이터베이스 폴링 빈도를 제어해요.
Table State Store 복제된 테이블의 상태를 보관하는 공유 저장소예요.

상태 관리 (State management)

범위 (Scope) 설명
CLUSTER 이 프로세서는 각 테이블에 대해 마지막으로 처리한 레코드의 버전 같은 정보를 저장해서, 재시작해도 같은 위치에서 이어갈 수 있어요.

관계 (Relationships)

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

더 알아보기 (Learn more)