CaptureChangeSqlServer
CaptureChangeSqlServer
SQL Server 데이터베이스에서 CDC(Change Data Capture) 이벤트를 읽는 프로세서예요. 데이터베이스의 Change Tracking 테이블을 주기적으로 조회하되, TableStateService가 제공하는 테이블에 대해서만 조회해요.
본문
번들 (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)
- OpenFlow 프로세서 목록 — OpenFlow 구성 요소 살펴보기