AI 용어집 · 심화 · 데이터 엔지니어링
CDC Change Data Capture, 변경 데이터 캡처
CDC(Change Data Capture, 변경 데이터 캡처)는 데이터베이스에서 새로 들어오거나 고쳐지거나 지워진 데이터만 골라내 다른 시스템으로 바로 전달하는 기술이다. 전체 데이터를 매번 통째로 복사하지 않고 '바뀐 부분'만 따라가게 해 준다.
어떻게 작동하나
대부분의 데이터베이스는 장애에 대비해 모든 변경을 순서대로 적어 두는 로그(트랜잭션 로그)를 남긴다. 로그 기반 CDC는 이 로그를 읽어 '이 행이 추가됨, 이 값이 바뀜, 이 행이 삭제됨' 같은 변경 이벤트로 바꿔 내보낸다. 이벤트는 보통 메시지 큐나 이벤트 스트림을 거쳐 데이터 웨어하우스, 검색 색인, 캐시 같은 여러 곳으로 전달된다. 로그를 쓸 수 없을 때는 '마지막 수정 시각' 열을 주기적으로 조회하거나 트리거를 거는 방식도 쓰지만, 삭제를 놓치거나 원본 DB에 부담을 주기 쉽다.
왜 중요한가
운영 데이터베이스의 내용을 분석·검색·AI 시스템에 빠르게 반영하려면 전체를 매번 복사하는 방식으로는 느리고 비용이 크다. CDC를 쓰면 바뀐 부분만 옮기므로 원본 DB 부담이 적고, 분석 데이터가 몇 시간 늦지 않고 거의 실시간으로 따라온다. RAG 시스템에서 문서가 수정될 때 해당 부분만 다시 임베딩해 벡터 DB를 갱신하는 데도 같은 원리가 쓰인다. 결국 '여러 시스템이 같은 최신 데이터를 보게 하는' 연결 고리 역할을 한다.
알아 둘 점
원본 테이블의 구조(스키마)가 바뀌면 이를 받는 쪽도 함께 맞춰야 해서 데이터 컨트랙트 같은 약속이 필요하다. 이벤트가 중복되거나 순서가 바뀌어 도착할 수 있으므로 받는 쪽이 같은 이벤트를 두 번 처리해도 결과가 같도록 설계해야 한다. 처음 연결할 때는 기존 데이터를 한 번 통째로 복사(스냅숏)한 뒤 그 이후 변경을 이어 붙이는 과정이 필요하다. 개인정보가 담긴 변경도 그대로 흘러가므로 전달 단계에서 비식별화나 권한 관리를 함께 고려해야 한다.
CDC 방식 비교
로그 기반트랜잭션 로그 읽기
- 원본 DB 부담이 적음
- 삭제까지 빠짐없이 잡음
- DB별 설정이 필요
조회 기반수정 시각 열을 주기 조회
- 설정이 간단함
- 삭제를 놓치기 쉬움
- 조회가 잦으면 DB 부담
트리거 기반변경 때 트리거 실행
- DB 안에서 바로 잡음
- 쓰기 성능에 부담
공통 모두 '바뀐 부분만' 옮기려는 방법
예시
쇼핑몰의 주문 데이터베이스에 CDC를 붙이면, 고객이 주문하거나 배송 상태가 바뀔 때마다 그 변경이 이벤트 스트림으로 흘러간다. 이 이벤트를 받아 데이터 웨어하우스의 매출 대시보드를 거의 실시간으로 갱신하고, 동시에 상품 검색 색인과 고객 상담 챗봇이 참고하는 데이터도 최신 상태로 맞춘다. 오픈소스 커넥터나 클라우드의 데이터 복제 서비스가 이런 용도로 널리 쓰인다.