본문 바로가기
● Data Insights/System

(Data) ETL/ELT 증분 처리의 핵심: DELETE+INSERT부터 CDC까지

by DATA Canvas 2025. 10. 7.
반응형

ETL과 ELT 파이프라인에서 데이터 증분 처리(Incremental Loading)는 성능과 효율성을 결정하는 핵심 요소입니다. 전체 데이터를 매번 처리하는 Full Load 방식과 달리, 증분 처리는 변경된 데이터만을 선별적으로 처리하여 시스템 자원을 최적화하고 실시간성을 확보합니다.


주요 증분 처리 방식 Overview

현대 데이터 웨어하우스 환경에서 사용되는 증분 처리 방식은 크게 7가지로 분류할 수 있습니다. 각 방식은 고유한 특성과 적용 시나리오를 가지고 있어, 데이터 특성과 비즈니스 요구사항에 따라 선택해야 합니다.

Method Description Speed Data Consistency Historical Preservation Rollback Possible Use Case
DELETE+INSERT 기존 데이터 삭제 후 새 데이터 삽입 보통 높음 없음 불가 중간 규모 배치 처리
UPSERT 존재 시 UPDATE, 없으면 INSERT 빠름 높음 없음 불가 실시간 동기화
TRUNCATE+INSERT 테이블 전체 삭제 후 새 데이터 삽입 빠름 높음 없음 불가 전체 갱신 배치
CDC 변경된 데이터만 실시간 캡처 매우 빠름 보통 가능 가능 실시간 복제
Soft Delete 삭제 플래그로 논리적 삭제 빠름 낮음 가능 가능 사용자 삭제 처리
SCD Type 1 기존 데이터 덮어쓰기 빠름 높음 없음 불가 마스터 데이터 갱신
SCD Type 2 새 행 추가하여 이력 관리 보통 매우 높음 완전 가능 차원 데이터 관리
반응형

DELETE+INSERT 방식: 안전하지만 비효율적

DELETE+INSERT 방식은 가장 직관적인 증분 처리 방법으로, 기존 데이터를 삭제한 후 새로운 데이터를 삽입하는 방식입니다.

작동 원리

-- 1단계: 조건에 맞는 기존 데이터 삭제
DELETE FROM target_table WHERE date >= '2025-09-01';

-- 2단계: 새로운 데이터 삽입
INSERT INTO target_table 
SELECT * FROM source_table WHERE date >= '2025-09-01';

장점과 제약사항

장점:

  • 구현이 단순하고 이해하기 쉬움
  • 데이터 정합성이 높음
  • 중복 데이터 발생 위험이 낮음

단점:

  • 두 번의 I/O 작업으로 인한 성능 저하
  • ROLLBACK 불가능 (DELETE 후 INSERT 중 실패 시 데이터 손실 위험)
  • 대량 데이터 처리 시 시간 소요

UPSERT (MERGE): 현대적 솔루션

UPSERT는 Update + Insert의 합성어로, 데이터가 존재하면 UPDATE하고 없으면 INSERT하는 방식입니다. 대부분의 현대 데이터베이스에서 MERGE 문으로 구현됩니다.

SQL Server MERGE 예제

MERGE INTO target_table AS T
USING source_table AS S
ON T.id = S.id
WHEN MATCHED THEN
    UPDATE SET T.name = S.name, T.amount = S.amount
WHEN NOT MATCHED THEN
    INSERT (id, name, amount) VALUES (S.id, S.name, S.amount);

핵심 특징

장점:

  • 단일 트랜잭션으로 처리되어 원자성 보장
  • 높은 성능과 효율성
  • 실시간 동기화에 최적화

제약사항:

  • 복잡한 MERGE 로직으로 인한 디버깅 어려움
  • 대량 데이터 처리 시 락 문제 발생 가능
  • 소스 데이터의 유일성 보장 필요

TRUNCATE+INSERT: 전면 갱신 전략

TRUNCATE+INSERT는 테이블 전체를 비운 후 새로운 데이터를 적재하는 방식으로, 증분 처리보다는 전체 갱신에 가깝습니다.

작동 메커니즘

-- 1단계: 테이블 전체 삭제 (구조는 유지)
TRUNCATE TABLE target_table;

-- 2단계: 새로운 데이터 전체 삽입
INSERT INTO target_table 
SELECT * FROM source_table;

성능과 적용 범위

장점:

  • DELETE보다 빠른 삭제 성능
  • 디스크 공간 완전 회수
  • 간단하고 확실한 데이터 정합성

제약사항:

  • ROLLBACK 불가능 (DDL 특성)
  • 전체 데이터 재적재로 인한 시간 소요
  • 외래키 제약이 있는 테이블에서 사용 제한

CDC (Change Data Capture): 실시간 혁신

CDC는 데이터베이스의 트랜잭션 로그를 분석하여 변경된 데이터만을 실시간으로 캡처하는 기술입니다.

CDC의 구현 방식

  1. 로그 기반 CDC: 트랜잭션 로그 파일 분석
  2. 트리거 기반 CDC: 데이터 변경 시 트리거 실행
  3. 타임스탬프 기반 CDC: 수정 시간 컬럼 활용
  4. 쿼리 기반 CDC: 주기적 변경사항 조회

비즈니스 가치

핵심 장점:

  • 실시간 데이터 동기화 가능
  • 최소한의 시스템 부하
  • 완전한 변경 이력 추적

고려사항:

  • 복잡한 구현과 운영 요구
  • 데이터베이스별 상이한 지원 수준
  • 네트워크 장애 시 데이터 일관성 관리 필요

Soft Delete: 논리적 삭제 전략

Soft Delete는 데이터를 물리적으로 삭제하지 않고 삭제 플래그를 통해 논리적으로 처리하는 방식입니다.

구현 방법

-- 삭제 플래그 컬럼 추가
ALTER TABLE users ADD COLUMN is_deleted BOOLEAN DEFAULT FALSE;

-- Soft Delete 실행
UPDATE users SET is_deleted = TRUE WHERE user_id = 123;

-- 조회 시 삭제된 데이터 제외
SELECT * FROM users WHERE is_deleted = FALSE;

데이터 관리 관점

주요 이점:

  • 데이터 복구 가능성 확보
  • 외래키 무결성 유지
  • 데이터 분석 시 삭제 이력 활용 가능

운영상 고려사항:

  • 지속적인 저장 공간 사용
  • 모든 쿼리에 삭제 조건 추가 필요
  • 성능 저하 가능성 (인덱스 효율성 감소)

SCD (Slowly Changing Dimension): 차원 데이터 전문 처리

SCD는 데이터 웨어하우스의 차원 테이블에서 변경되는 데이터를 처리하는 전문 기법입니다.

SCD Type 1: 덮어쓰기 방식

UPDATE customer_dim 
SET address = '새주소', city = '새도시' 
WHERE customer_id = 100;
  • 특징: 이력 관리 없이 현재 값만 유지
  • 적용: 과거 데이터가 불필요한 마스터 정보

SCD Type 2: 이력 관리 방식

-- 기존 레코드 종료
UPDATE customer_dim 
SET end_date = CURRENT_DATE, is_current = FALSE 
WHERE customer_id = 100 AND is_current = TRUE;

-- 새 레코드 삽입
INSERT INTO customer_dim 
(customer_id, address, city, start_date, end_date, is_current)
VALUES (100, '새주소', '새도시', CURRENT_DATE, '9999-12-31', TRUE);
  • 특징: 완전한 변경 이력 보존
  • 적용: 시계열 분석이 중요한 차원 데이터

방식별 성능과 적용 시나리오 비교

실시간성 요구사항별 선택

  • 실시간 (초 단위): CDC, UPSERT
  • 준실시간 (분 단위): UPSERT, DELETE+INSERT
  • 배치 처리 (시간/일 단위): TRUNCATE+INSERT, SCD

데이터 볼륨별 최적화

  • 소량 데이터 (GB 이하): 모든 방식 적용 가능
  • 중간 볼륨 (TB 단위): UPSERT, CDC 권장
  • 대용량 (PB 단위): CDC, 파티셔닝 병행 필수

비즈니스 요구사항 매핑

  • 금융/의료 (완전성 중요): SCD Type 2, CDC
  • 전자상거래 (실시간성 중요): UPSERT, CDC
  • 배치 리포팅 (효율성 중요): TRUNCATE+INSERT, DELETE+INSERT

구현 시 핵심 고려사항

데이터 품질 관리

  1. 중복 데이터 방지: Primary Key와 Business Key 구분 설정
  2. 데이터 정합성 검증: ETL 파이프라인에 검증 로직 포함
  3. 오류 처리 메커니즘: 실패 시 복구 전략 수립

성능 최적화 전략

  1. 인덱스 전략: 증분 처리 키 컬럼에 적절한 인덱스 생성
  2. 파티셔닝 활용: 대용량 테이블의 증분 처리 성능 향상
  3. 병렬 처리: 동시성 제어와 성능의 균형점 찾기

모니터링과 운영

  1. 처리량 모니터링: 증분 처리 성능 지표 추적
  2. 데이터 지연 모니터링: SLA 준수 여부 확인
  3. 오류 알림 체계: 실시간 장애 감지 및 대응

각 증분 처리 방식은 고유한 장단점과 적용 영역을 가지고 있습니다. 데이터 특성, 비즈니스 요구사항, 시스템 제약사항을 종합적으로 고려하여 최적의 전략을 선택하는 것이 성공적인 데이터 파이프라인 구축의 핵심입니다.

반응형