개요

데이터 레이크하우스(Data Lakehouse)는 데이터 레이크의 유연성 + 데이터 웨어하우스의 성능/ACID를 결합한 아키텍처입니다. 핵심은 오픈 테이블 포맷(Delta Lake, Apache Iceberg, Apache Hudi)으로, 오브젝트 스토리지(S3, GCS) 위에서 데이터 웨어하우스급 쿼리 성능을 제공합니다.

아키텍처 비교

데이터 레이크                데이터 웨어하우스            데이터 레이크하우스
──────────                ──────────────            ──────────────
S3/GCS에 파일 저장          전용 스토리지                S3/GCS + 오픈 테이블 포맷
스키마 없음 (Schema-on-Read) 엄격한 스키마               스키마 적용 + 유연성
ACID 없음                  ACID 보장                  ACID 보장
저비용, 대용량              고비용, 고성능              저비용 + 고성능
ETL 필요                   SQL 직접                   SQL 직접
Hadoop, Spark              Snowflake, BigQuery        Databricks, Spark

오픈 테이블 포맷

Delta Lake

항목내용
개발Databricks (Linux Foundation)
핵심Spark 생태계 표준, ACID 트랜잭션
스토리지Parquet + JSON 트랜잭션 로그 (_delta_log/)
라이선스Apache 2.0
GitHubhttps://github.com/delta-io/delta

특징:

  • ACID 트랜잭션: 동시 읽기/쓰기 안전
  • Time Travel: 과거 버전 데이터 조회 (VERSION AS OF 5)
  • Schema Evolution: 컬럼 추가/변경 자동 처리
  • Z-Ordering: 멀티 컬럼 데이터 클러스터링 → 쿼리 성능 향상
  • Change Data Feed (CDF): 변경 데이터 스트림
  • Liquid Clustering: 자동 데이터 레이아웃 최적화 (Delta 3.0)
  • Databricks, Spark, Flink, Trino, Presto 등 지원
-- Delta Lake 테이블 생성
CREATE TABLE events
USING DELTA
LOCATION 's3://bucket/events'
AS SELECT * FROM raw_events;
 
-- Time Travel
SELECT * FROM events VERSION AS OF 5;
SELECT * FROM events TIMESTAMP AS OF '2026-01-01';
 
-- MERGE (Upsert)
MERGE INTO target USING source
ON target.id = source.id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;

Apache Iceberg

항목내용
개발Netflix → Apache Foundation
핵심벤더 중립, 최고의 메타데이터 관리
스토리지Parquet/ORC/Avro + 메타데이터 레이어
라이선스Apache 2.0
GitHubhttps://github.com/apache/iceberg

특징:

  • Hidden Partitioning: 사용자가 파티션 스킴을 몰라도 자동 최적화
  • Partition Evolution: 파티션 변경 시 기존 데이터 재작성 불필요
  • Schema Evolution: 안전한 스키마 변경 (ID 기반 컬럼 추적)
  • Time Travel: 스냅샷 기반 과거 데이터 조회
  • Branching/Tagging: Git처럼 데이터 브랜치 관리
  • Row-level Deletes: Copy-on-Write / Merge-on-Read 선택
  • Spark, Flink, Trino, Presto, Dremio, Snowflake, BigQuery 지원
-- Iceberg 테이블
CREATE TABLE events (
    id BIGINT,
    event_type STRING,
    ts TIMESTAMP
) USING ICEBERG
PARTITIONED BY (days(ts));
 
-- Partition Evolution (파티션 변경, 재작성 불필요)
ALTER TABLE events ADD PARTITION FIELD hours(ts);
 
-- Time Travel
SELECT * FROM events.snapshots;
SELECT * FROM events FOR SYSTEM_TIME AS OF TIMESTAMP '2026-01-01';

Apache Hudi

항목내용
개발Uber → Apache Foundation
핵심증분 처리(Incremental) 특화, CDC 강점
스토리지Parquet + Avro 로그
라이선스Apache 2.0

특징:

  • Copy-on-Write (CoW): 읽기 최적화, 쓰기 시 전체 재작성
  • Merge-on-Read (MoR): 쓰기 최적화, 읽기 시 머지
  • Incremental Queries: 마지막 읽기 이후 변경분만 조회
  • Record-level Index: 레코드 수준 업서트 최적화
  • CDC(Change Data Capture) 파이프라인에 최적

Lance (LanceDB)

항목내용
개발LanceDB
핵심AI/ML 데이터 특화 컬럼형 포맷
특징벡터 임베딩 네이티브, 랜덤 액세스 빠름
라이선스Apache 2.0
  • 이미지, 비디오, 텍스트, 임베딩 혼합 저장
  • 벡터 검색 네이티브 지원
  • Parquet 대비 100배 빠른 랜덤 액세스
  • LLM 학습 데이터 관리에 적합

테이블 포맷 비교

항목Delta LakeIcebergHudiLance
개발DatabricksNetflixUberLanceDB
ACIDOOOO
Time TravelOO (최강)OO
파티션 진화제한적O (Hidden)제한적X
스키마 진화OO (ID 기반)OO
증분 처리OOO (최강)X
벡터/MLXXXO
브랜칭XOXX
생태계Databricks가장 넓음AWS EMRML 특화
적합 용도Databricks 사용자벤더 중립CDC/스트리밍AI/ML 데이터

레이크하우스 플랫폼

플랫폼테이블 포맷특징
DatabricksDelta Lake레이크하우스 원조, Unity Catalog
SnowflakeIceberg (네이티브)클라우드 DW → 레이크하우스 확장
Google BigQueryBigLake (Iceberg)서버리스, 멀티클라우드
AWSIceberg (Athena/EMR)S3 + Glue + Athena
DremioIceberg오픈소스 레이크하우스 엔진
StarRocksIceberg/Delta/Hudi실시간 분석
Apache Doris멀티 포맷실시간 OLAP

선택 가이드

상황추천
Databricks 사용 중Delta Lake
벤더 중립, 멀티 엔진Apache Iceberg
CDC/실시간 증분 처리Apache Hudi
AI/ML 데이터 (벡터, 이미지)Lance
Snowflake/BigQuery 사용Iceberg (네이티브 지원)
새 프로젝트Iceberg (업계 수렴 중)

2025~2026 트렌드

  • Iceberg로 수렴: Snowflake, BigQuery, Databricks 모두 Iceberg 지원 → 사실상 표준화
  • Delta Lake ↔ Iceberg 호환: Databricks UniForm으로 Delta ↔ Iceberg 상호 읽기
  • Apache XTable: 포맷 간 상호 변환 (Delta ↔ Iceberg ↔ Hudi)
  • AI 레이크하우스: Lance 등 벡터/멀티모달 네이티브 포맷 부상

관련 항목