20

Delta Lake: ACID 트랜잭션의 마법

Delta Lake: ACID 트랜잭션과 Time Travel

학습 목표

ACID의 각 요소가 무엇인지 이해한다 트랜잭션 로그의 동작 방식을 파악한다 Delta Lake의 스키마 관리 방식을 안다

ACID가 뭐길래?

데이터베이스의 4대 원칙:

원칙의미Delta Lake에서
Atomicity전부 성공 or 전부 실패커밋 전 파일 = 없는 것
Consistency항상 유효한 상태스키마 강제
Isolation동시 작업 충돌 방지낙관적 동시성 제어
Durability커밋되면 영구 저장트랜잭션 로그

트랜잭션 로그: 모든 비밀의 열쇠

에디터 로딩 중...

로그가 기록하는 것

  • add: 어떤 파일이 추가됐는지
  • remove: 어떤 파일이 삭제됐는지
  • commitInfo: 언제, 누가, 무슨 작업을 했는지
  • stats: 파일별 통계 (Data Skipping용)

읽기 동작: "현재 유효한 파일만"

에디터 로딩 중...

핵심: 실제로 삭제하지 않고 "삭제됨"으로 표시만 한다! → 언제든 과거 버전으로 돌아갈 수 있다 (Time Travel)


스키마 강제 (Schema Enforcement)

기본적으로 스키마가 다르면 쓰기 거부:

에디터 로딩 중...

좋은 것: 실수로 잘못된 데이터 넣는 것 방지 불편한 것: 스키마 변경이 필요할 때는?


스키마 진화 (Schema Evolution)

의도적으로 스키마를 변경하고 싶을 때:

에디터 로딩 중...

허용되는 변경

변경허용?방법
컬럼 추가OmergeSchema
타입 확장 (INT → LONG)OmergeSchema
컬럼 삭제X새 테이블 생성
타입 변경 (STRING → INT)X새 테이블 생성

Delta Lake vs Parquet

기능ParquetDelta Lake
ACID 트랜잭션XO
Time TravelXO
스키마 강제XO
Upsert (MERGE)XO
Data Skipping제한적O
동시 쓰기충돌 가능안전
가격무료무료 (오픈소스)

결론: 모든 새 프로젝트는 Delta Lake로!