Search
Duplicate

Change Data Capture

Created
2022/06/19 12:51
tags
💻Database
Change Data Capture (CDC)는 데이터베이스에서 변경된 데이터를 감지하는 방법론이다. 예를 들면, CDC를 이용하여 A 데이터베이스의 데이터가 변경됐을 때 B 데이터베이스에 동기화 시킬 수 있다.
CDC를 구현하기 위해 대표적으로 timestamp, event, log scanner을 이용한 방법이 있다.
Timestamp는 테이블에 있는 updated_at, last_update 등의 업데이트 컬럼을 이용하여 최근 시간의 timestamp가 저장되있으면 변경된 것으로 본다. 다만 데이터가 몇 번 변경됐는지는 알 수 없다.
Event는 EventEmitter 등을 이용하여 Application에서 데이터가 변경되면 이벤트를 발생시키는 방법이다. Application에서 돌아가기 때문에 직접 쿼리를 이용하여 데이터를 수정하면 감지가 되지 않는다.
Log Scanner은 DBMS 로그를 이용한 방법이다. CDC 구현 방법 중 가장 많이 사용된다. 데이터베이스의 이벤트(INSERT, UPDATE, DELETE)를 저장하는 트랜잭션 로그가 있는데 이를 이용하여 데이터 변경을 감지한다. 로그를 사용하지 않거나 일정 시간이 지나면 로그를 삭제하는 경우도 있기 때문에 이를 고려해야 한다.
CDC 프로그램으로 Debezium(Kakfa 기반) 그리고 Apache Nifi가 있다.