이 문서는 레이크하우스 아키텍처 섹션의 일부입니다.
Delta Lake란?
💡 Delta Lake 는 클라우드 오브젝트 스토리지(S3, ADLS, GCS) 위에서 ACID 트랜잭션, 스키마 관리, 타임 트래블 등의 기능을 제공하는 오픈소스 스토리지 레이어입니다.쉽게 비유하면, 일반 데이터 레이크가 정리되지 않은 창고 라면, Delta Lake는 그 창고에 재고 관리 시스템, 출입 통제, 변경 기록 장부 를 설치한 것과 같습니다.
Delta Lake의 구조
Delta Lake = Parquet 파일 + 트랜잭션 로그 (
_delta_log/)
Delta Lake 테이블은 실제로 두 가지로 구성됩니다.
핵심 기능 1: ACID 트랜잭션
ACID란?
💡 ACID 는 데이터베이스 트랜잭션(작업 단위)이 갖추어야 할 네 가지 특성의 약자입니다. 전통적인 RDBMS(MySQL, PostgreSQL 등)에서는 당연한 기능이지만, 데이터 레이크에서는 제공되지 않았던 기능입니다.
왜 데이터 레이크에서 ACID가 중요한가요?
ACID가 없는 일반 데이터 레이크에서는 다음과 같은 문제가 발생할 수 있습니다.실습 예제
핵심 기능 2: 타임 트래블 (Time Travel)
개념
💡 타임 트래블(Time Travel) 이란 Delta 테이블의 과거 시점 데이터 를 조회하거나 복원할 수 있는 기능입니다. Delta Lake는 모든 변경 사항을 트랜잭션 로그에 기록하기 때문에, 이전 버전의 데이터로 되돌아갈 수 있습니다.이 기능은 마치 문서의 버전 관리(Version Control) 와 같습니다. Google Docs에서 이전 편집 내역으로 되돌릴 수 있는 것처럼, Delta 테이블도 이전 버전으로 되돌릴 수 있습니다.
사용 방법
활용 사례
핵심 기능 3: 스키마 관리
스키마 강제 (Schema Enforcement)
💡 스키마 강제(Schema Enforcement) 란 테이블에 정의된 스키마에 맞지 않는 데이터를 삽입하려고 하면 자동으로 거부 하는 기능입니다.
스키마 진화 (Schema Evolution)
💡 스키마 진화(Schema Evolution) 란 기존 테이블의 스키마(구조)를 데이터를 유실하지 않고 안전하게 변경 할 수 있는 기능입니다. 새로운 컬럼 추가, 컬럼 이름 변경 등이 가능합니다.
핵심 기능 4: 트랜잭션 로그 (Delta Log)
모든 Delta Lake의 기능은 트랜잭션 로그(Delta Log) 를 기반으로 동작합니다.동작 원리
- 각 트랜잭션(INSERT, UPDATE, DELETE 등)이 실행될 때마다 새로운 로그 파일(JSON)이 생성됩니다
- 로그 파일에는 “어떤 Parquet 파일이 추가되었고, 어떤 파일이 제거되었는지”가 기록됩니다
- 테이블을 읽을 때는 최신 로그를 참조하여 유효한 Parquet 파일만 읽습니다
- 이 구조 덕분에 타임 트래블, 롤백, 동시 쓰기 제어가 가능합니다
💡 MVCC(Multi-Version Concurrency Control, 다중 버전 동시성 제어)란? Delta Lake가 동시 읽기/쓰기를 관리하는 방식입니다. 데이터를 수정할 때 기존 파일을 직접 덮어쓰지 않고, 새로운 파일을 추가한 후 로그를 업데이트하는 방식으로 동작합니다. 따라서 누군가 테이블을 읽고 있는 중에 다른 사람이 쓰기를 해도, 읽는 쪽은 일관된 데이터를 볼 수 있습니다.