CDC (Change Data Capture)

1. CDC (Change Data Capture)의 개념

개념도
개념소스/대상 DB 간 데이터 동기화를 위해 트랜잭션 발생 시 변경 로그를 추출/전송하여 대상 DB에 반영하는 데이터 통합 기술
특징실시간 데이터 동기화변경 데이터 추출로 준실시간 동시 운영 환경 구축
운영 DBMS 부하 감소트랜잭션 로그를 추출하여 DBMS 시스템 부하 감소
신뢰성 있는 데이터 복제동기화된 소스 DB의 변경 데이터 복제하여 신뢰성 보장
  • 소스 DB의 변경 사항을 추출하여 실시간으로 전달 및 동기화 가능하므로 원격지 시스템 동시 운영 및 백업, 재해복구(DRS), 분석(BI), 데이터 레이크 등 다양한 용도로 활용

 

2. CDC 동작 절차 및 주요 기법

(1) CDC 동작 절차

① 소스 DB 트랜잭션에 따른 변경 발생시 Capture 프로세스 통한 변경 로그 추출
② 소스 DB의 CDC 엔진을 통해 대상 DB로 변경 로그 전송
③ 전송된 변경 로그는 대상 DB의 CDC 엔진을 통해 대상 DB에 반영

(2) CDC 동작을 위한 주요 기법

주요 기법특징동작 방식
Refresh– 용이한 구축
– 높은 안정성
– 모든 데이터를 다시 Load
– 비용과 속도 문제로 실제 거의 사용하지 않으며, 초기 데이터 이관 시 활용
Timestamp– 추출 속도 개선
– 이력관리 어려움
– 최종 데이터를 가져온 시점의 시간을 체크하여 이후 데이터 이관
– 삭제되는 데이터에 대한 정보 관리 어려움
변경 로직– 유연한 구성
– 운영/유지보수 어려움
– 운영 프로그램 직접 변경 데이터 캡쳐 로직 구현
트랜잭션
로그 캡쳐
– 성능 영향 최소화
– 캡쳐 프로그램 필요
– Redo 로그를 분석하여 변경된 데이터 이관
– 변경 데이터 캡쳐할때까지 로그 유지 필요
  • CDC는 실시간 원격지 동시 운영환경 구축, 운영시스템 부하감소, 신뢰성 있는 데이터 복제 가능하나 대량 데이터 처리, 스키마 변경, 복호화 여부 등 고려하여 적용 필요

 

3. CDC 적용 시 고려사항 및 ETL과 비교

(1) CDC 적용 시 고려사항

고려사항상세 설명
No Logging 트랜잭션성능 향상 위한 No-Logging 처리 시 전체 데이터 재동기화가 효율적
대량 데이터 처리 성능조회 테이블과 갱신 테이블을 분리 운영하여 대량 데이터 처리 수용
테이블 구조 변경 대응변경된 테이블/컬럼명 저장하지 않으므로 스키마 변경 오류 대응 필요
암호화 데이터 처리동기화 후 대상 DB에서 복호화 여부, 필요성 고려
Supplemental Log 설정Redo Log 길이 증가로 인한 영향도 고려
양방향 동기화동일 테이블 양방향 동기화에 따른 Dirty Read 현상 발생 가능

(2) CDC와 ETL 비교

비교 항목CDCETL
사용 목적실시간 데이터베이스 동기화배치 기반 데이터 추출/적재
주요 기술Event Driven, DB Archive Log테이블 변경 추출, 식별 컬럼 또는 전체 추출
적재 수준변경 시 실시간 전송/적재적재 주기 지정(일, 월, 시간)
  • CDC는 기본적으로 데이터 변환은 불가하므로 원격지 DB 동시 운영, 백업, DRS 등의 실시간 동기화 필요 시 CDC를 사용하고 BI 업무, 머신 러닝 등 데이터 변환 기반 고급 분석 필요 시 ETL 사용 권장

 
[참고]

  • Oracle, Database Data Warehousing Guide

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^