string(36) "/blog/?pageid=1&uid=133&mod=document"

HOME

ABOUT US

Blog

Blog

Blog

[Ark for CDC] 실시간 변경 데이터 추출

2020.11.18

운영시스템에서 정보계시스템(DW)으로 데이터를 동기화할 경우 동기화하는 방법은 우선 전체 데이터를 동기화하는 초기 복제를 수행하고, 다음으로 변경된 데이터만 동기화 시키는 방식으로 진행하게 된다.

지난번 "Ark for CDC의 초기복제"글에서 Ark for CDC에서의 초기 복제 방안을 살펴보았다.

 

이번 글에서는 초기복제 완료 이후 변경된 데이터만을 동기화시키는 방안에 대해 알아보고자 한다.


[데이터 복제 방식]

일반적으로 변경된 데이터를 복제하는 방식에는 크게 네 가지가 있다.

20201118101847_4gbdpk2.png

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 크기 제한도 가능하다.

프로세스는 다음과 같은 단계로 실행된다. 

 

20201118101933_iids87g.png
- DB Parameter 체크

- Pre-Condition 체크

- Object Metadata 조회

- RedoBlock 조회 및 Record 추출

- Tracing File 에 추출 Record 저장

여기서 RedoBlock 조회 및 Record 추출은 다음과 같은 좀 더 상세한 프로세스로 진행한다. 

20201118101948_uq3crvd.png
 

 

1. 추출대상 Redo/Archived Log File 검색

 : Redo Block Number 또는 SCN으로 검색하며, ASM 환경에서는 Device File의 AU 로드

2. Redo Record Header 정보 체크

 : Low SCN, Master Key ID, Next SCN, Redo Key 등이며, TSE 설정 시 Redo Key 로 Record를 복호화

3. Change Vector 정보 체크 

 : Change#, Type, Class, OP code, AFN, DBA, OBJ 등이며, OBJ(Object id)로 추출대상 Object 판별

4. OP(Operation) code에 따라 DML, DDL 분기 처리

5. Commit Record가 인식되면 TX Queue에서 해당 TX를 찾아 Tracing File에 저장

Extract 프로세스가 변경데이터만을 추출하기 위해서는 소스테이블에 Supplemental Logging이 설정되어야 하는데, Ark for CDC는 프로그램 설치시에 자동화된 Supplemental Logging 설정기능이 제공된다. DDL 추출도 지원되며 소스와 타겟 DB가 모두 Oracle DB인 환경에서만 DDL 복제가 지원된다.