토스증권, Iceberg CDC 적용 중 발생한 데이터 정합성 문제 해결 노하우 공개!

by DD
8개월 전
조회수 4

IcebergCDC 환경 적용 시, 데이터 정합성 문제 발생

COW/MOR 방식, Position Delete/Equality Delete 차이점 분석

Iceberg Sink Connector 문제점 및 데이터 중복 방지 해결

Iceberg Update 전략: COW vs MOR

COW(Copy-on-Write)는 읽기 성능을, MOR(Merge-on-Read)은 쓰기 효율성을 극대화한다. 구체적으로, COW데이터 파일 전체를 다시 쓰므로 쓰기 비용이 크다. 따라서 CDC와 같이 잦은 갱신에는 비효율적이다. 반면, MOR삭제 파일을 사용하여 쓰기 부담을 줄인다.

Position Delete vs Equality Delete

Position Delete는 정확한 위치를 지정하여 삭제하므로, 데이터 무결성을 보장한다. 따라서 동일 Commit 내에서 Update/Delete 시 반드시 사용해야 한다. 구체적으로, Equality Delete는 값 조건만으로 삭제하므로, 데이터 중복을 발생시킬 수 있다. 따라서 Iceberg Writer는 이 점을 고려해야 한다.

Iceberg Sink Connector 문제점 및 해결

Iceberg Sink ConnectorKafka의 key 설정을 통해 데이터 중복을 방지한다. 구체적으로, Commit Timeout 발생 시 insertedRowMap 초기화로 인해 Equality Delete가 발생할 수 있다. 따라서 preCommit 단계를 추가하여 데이터 정합성을 확보한다. 결과적으로 Schema Evolution 시에도 Position Delete를 유지하도록 개선했다.

토스증권 Iceberg 적용기 #1: CDC 환경은 왜 제대로 동작하지 않을까?