2024년 10월 7일
CDC (Change Data Capture)
1. CDC (Change Data Capture)의 개념
개념도 | ||
---|---|---|
개념 | 소스/대상 DB 간 데이터 동기화를 위해 트랜잭션 발생 시 변경 로그를 추출/전송하여 대상 DB에 반영하는 데이터 통합 기술 | |
특징 | 실시간 데이터 동기화 | 변경 데이터 추출로 준실시간 동시 운영 환경 구축 |
운영 DBMS 부하 감소 | 트랜잭션 로그를 추출하여 DBMS 시스템 부하 감소 | |
신뢰성 있는 데이터 복제 | 동기화된 소스 DB의 변경 데이터 복제하여 신뢰성 보장 |
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 비교
비교 항목 | CDC | ETL |
---|---|---|
사용 목적 | 실시간 데이터베이스 동기화 | 배치 기반 데이터 추출/적재 |
주요 기술 | Event Driven, DB Archive Log | 테이블 변경 추출, 식별 컬럼 또는 전체 추출 |
적재 수준 | 변경 시 실시간 전송/적재 | 적재 주기 지정(일, 월, 시간) |
- CDC는 기본적으로 데이터 변환은 불가하므로 원격지 DB 동시 운영, 백업, DRS 등의 실시간 동기화 필요 시 CDC를 사용하고 BI 업무, 머신 러닝 등 데이터 변환 기반 고급 분석 필요 시 ETL 사용 권장
[참고]
- Oracle, Database Data Warehousing Guide