**Change Data Capture(CDC)**는 소스 데이터베이스에서 모든 insert/update/delete를 — 보통 그것의 트랜잭션 로그를 읽어 — 스트리밍하고 다른 시스템이 소비하는 이벤트로 발행하여, downstream 저장소가 이중 write나 polling 없이 동기화 상태를 유지하게 합니다.
Postgres/MySQL Debezium Kafka topic sinks
┌────────────┐ reads ┌─────────┐ emit ┌──────────┐ consume ┌───────────┐
│ WAL/binlog │ ───────▶ │ connector│ ──────▶ │ per-table│ ───────▶ │ search │
│ (tx log) │ │ │ events │ ordered │ │ warehouse │
└────────────┘ └─────────┘ └──────────┘ │ cache │
└───────────┘
왜 log 기반 CDC인가
polling("T 이후 변경된 row")이나 두 시스템에 동시에 write하는 방식()으로 동기화할 수도 있지만, polling은 빠른 업데이트를 놓치고 이중 write는 원자성이 깨집니다 — 두 번째 write가 실패하면 갈라짐이 생깁니다. 는 대신 데이터베이스 자체의 write-ahead log(Postgres , MySQL ), 즉 DB가 crash 복구에 쓰는 내구성 있는 기록을 tail합니다. 이 표준 connector입니다: 로그를 읽어 각 변경을 에 테이블당 하나의 topic으로 발행합니다 — 쿼리에 부하 없이, 놓친 row 없이 변경을 포착합니다.
