Blog
[Ark for CDC] 실시간 변경 데이터 추출
2020.11.18
지난번 "Ark for CDC의 초기복제"글에서 Ark for CDC에서의 초기 복제 방안을 살펴보았다.
이번 글에서는 초기복제 완료 이후 변경된 데이터만을 동기화시키는 방안에 대해 알아보고자 한다.
[데이터 복제 방식]
일반적으로 변경된 데이터를 복제하는 방식에는 크게 네 가지가 있다.
1) 마지막 수정 일시 컬럼을 추가하여 관리하는 Timestamp 컬럼 활용 방법
2) 데이터의 입력/수정/삭제 이벤트 발생 시 DB의 Trigger를 사용하는 방법
3) DB 자체 CDC 유틸리티(Oracle의 Log Miner)를 이용하는 방법
4) 데이터베이스 로그 기반 변경 데이터를 복제하는 방법
이 중 1)~3) 방식은 실제 현장 적용에 어려움이 있다. 이 방법들은 소스 시스템에 상당한 부하를 발생시키며, 일부 지연이 발생하기 때문에 온전한 실시간성을 확보하기가 어렵기 때문이다. 그렇기 때문에 CDC 솔루션을 개발하는 기업들은 4) 방식인 redo log에 직접 접근해 트랜잭션 데이터를 추출할 수 있는 기술을 연구한다.
[Ark for CDC의 변경데이터 복제 과정]
Ark for CDC는 Oracle의 Redo Log 및 Archived Log File에 직접 접근해 소스 대상 테이블과 관련된 commit 된 로그만을 복제하여 소스 DB에 발생하는 부하를 최소화하며 실시간에 가깝게 변경 데이터 복제를 수행한다.
Ark for CDC의 Extract는 Oracle DB의 Online Redo Log File 또는 Archived Redo Log File로부터 소스테이블과 관련된 commit된 데이터만을 추출하여 Tracing File에 적재하는 프로세스로써 Agent 실행 여부 및 다른 프로세스와 관계 없이 독립적으로 제어가 가능하다. QoS 설정으로 추출하는 Redo Log Block 크기 제한도 가능하다.
프로세스는 다음과 같은 단계로 실행된다.
- DB Parameter 체크
- Pre-Condition 체크
- Object Metadata 조회
- RedoBlock 조회 및 Record 추출
- Tracing File 에 추출 Record 저장
여기서 RedoBlock 조회 및 Record 추출은 다음과 같은 좀 더 상세한 프로세스로 진행한다.
1. 추출대상 Redo/Archived Log File 검색