Load stage 가 idempotency 가장 중요한 곳
Extract 와 transform 은 자유롭게 retry 가능 — 입력은 read-only 고 출력은 in-memory. Load 는 다른 사람이 읽는 destination 에 쓰는데, 즉 버그 있는 load 가 downstream 리포트, 대시보드, ML 학습 데이터를 corrupt 시킬 수 있어. 이 stage 잘못하면 결과가 본인 머신을 떠나.
네 가지 canonical write 패턴
- Replace — 전체 target 덮어쓰기. 가장 안전한 의미; 작은 데이터셋만 viable.
- Append — 새 row 추가. 가장 단순하지만 다시 돌리면 row 두 배. 다른 dedup 로직 없으면 파이프라인에서 금지.
- Partition replace — 단일 partition (예:
date=2026-04-30) atomic 교체. 시간 partitioned warehouse 의 default. - Upsert — primary key 로 merge. 새 거면 insert, 있으면 update. 가장 깔끔한 의미, destination 지원 필요 (Postgres
ON CONFLICT, warehouse 의 MERGE).