Data Engineering/Databricks & Delta Lake

[DeltaLake] (1) - 대표적인 오픈 테이블 포맷인 Delta Lake 와 Ice Berg 비교하기

minjiwoo 2025. 2. 15. 21:43
728x90

오픈 테이블 포맷

오픈 테이블 포맷 (Open Table Formats) 는 데이터 레이크(Data Lake) 에 ACID 트랜잭션과, schema 제약조건 강화, time travel 기능 등을 추가한 시스템이다. 기본적으로, 데이터레이크는 빅데이터 패러다임이 등장하면서 확장성, 유연성 그리고 무엇보다 저비용이라는 점에서 장점이 있다. 저렴한 비용으로 정형, 비정형 데이터를 모두 저장할 수 있다는 점에서 널리 쓰인다. 

그렇지만 데이터레이크는 데이터베이스와 같은 ACID 트랜잭션을 지원하지 않았다. 데이터 레이크는 csv, json, parquet 과 같은 파일 형식으로 데이터를 저장한다. 따라서 CDC 나 데이터의 일관성 보장에 대해서 처리하기에는 구현하기도 어렵고 파일을 다루다 보니 처리 비용과 시간이 많이 걸리게 된다는 단점이 있다. 

이런 데이터 레이크의 단점을 극복하기 위해서 등장한 것이 바로 오픈 테이블 포맷이다. Apache Hudi, Apache Iceberg, Delta Lake 가 이러한 오픈 테이블 포맷의 대표적인 예시이다. 

 

오픈 테이블 포맷은 왜 필요한걸까 ? 

트랜잭션과 무결성이라고 한다면 흔히 사용하는 OLTP(Online Transacional Processing) 데이터베이스에서도 지원할텐데, 왜 굳이 오픈 테이블 포맷을 도입해야 하는가에 대한 의문이 들 수 있다. 

오픈 테이블 포맷이 필요한 경우 

  • 대용량 데이터 관리 - OLTP 시스템은 대규모 데이터 분석에 최적화 되어 있지 않으며, 오픈 테이블 포맷은 Spark, Flink 같은 빅데이터 프레임워크와의 통합이 쉽다. 
  • 파일 기반의 오브젝트 스토리지에서 데이터를 다루는 경우
  • 타임트래블과 버전 관리 기능이 필요한 경우 

오픈 테이블 포맷이 필요하지 않은 경우 

  • 데이터 크기가 크지 않은 경우 
  • 읽기 지연 (latency) 에 민감한 경우 

 

대표적인 오픈 테이블 포맷인 Delta Lake 와 Ice Berg 비교하기 

오픈 테이블 포맷 중에서 Delta Lake 와 Ice Berg 에 대해서 비교해보고자 한다. 

1. 공통적으로 지원하는 기능 

ACID 트랜잭션 지원 

  • ACID (원자성, 일관성, 격리성, 지속성) 트랜잭션을 지원하여 데이터의 정합성을 보장한다. 따라서 MERGE INTO, UPDATE, DELTE, INSERTS 와 같은 read, write 연산을 안전하게 실행할 수 있다. 그럼에도 전통적인 RDBMS 에 비해서는 트랜잭션 및 무결성 보장의 수준이 낮다. 
  • 그렇지만 Ice Berg는 merge-on-read 방식이며, Delta Lake 는 merge-on-write 방식이라는 점에서 차이가 있다. 

Schema Evolution

  • 테이블의 스키마를 ALTER TABLE 이라는 직접적인 변경작업 없이도 컬럼의 추가와 타입변경이 가능한 기능이다. 말그대로 스키마의 변경 사항을 자동으로 감지하여 업데이트 하는 기능이다. 
  • Ice Berg가 DeltaTable 에 비해서 더 유연한 Schema Evolution 기능을 지원한다. DROP COLUMN, RENAME COLUMN 기능도 지원한다. 반면에 DeltaTable 은 ALTER TABLE 을 지원하지만 제약사항이 있다. 

Time Travel (데이터 버전 관리)

  • 데이터에 대해 versioning 을 하기 때문에, 원하는 version 으로 돌아갈 수 있다. 
  • 즉, 과거 데이터의 이력을 조회할 수 있으며 롤백할 수도 있다. 
  • Iceberg 는 스냅샷 기반의 버전 관리를 사용하며, Delta Lake 는 _delta_log 를 이용한 트랜잭션 로그 기반 버전 관리를 사용한다. 

Data Compaction (파일 최적화)

데이터가 분산된 작은 파일들을 합치는 최적화 기능을 지원한다. 데이터를 적재할 때 많은 작은 파일들이 생성될 수 있는데, 이를 small-file problems 라고도 한다. 작은 파일들이 분산되어 있으므로, 읽기 성능이 저하되고 메타데이터 관리 비용이 증가하게 된다. 따라서 파일 크기를 최적화하는 작업이 필요하다. 

  • Ice Berg : 데이터 파일들을 re-write 함으로써 파일 최적화를 한다. 
CALL flights.REWRITE_DATA_FILES();
  • Delta Table : OPTIMIZE 연산을 통해 최적화를 하며 Z-ORDERING (관련 정보를 동일한 파일 집합에 배치하는 연산. 데이터를 건너 뛸 수 있다) 을 추가적으로 수행할 수 있다. 
OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)

 

2. 핵심적인 아키텍처 차이점

https://www.datacamp.com/blog/iceberg-vs-delta-lake

트랜잭션 모델 

  • Iceberg 는 스냅샷을 이용하여 트랜잭션을 수행한다. 이를 통해 변경사항이 완전히 커밋되거나 롤백되도록 보장한다. 
    • 기본적으로 스냅샷 격리(snapshot isolation)를 보장
    • 읽기 작업은 트랜잭션이 시작될 당시의 일관된 스냅샷을 기반으로 수행된다. 
  • DeltaLake는 트랜잭션 로그(_delta_log 디렉토리)를 사용하여 검증된 변경사항만 테이블에 커밋하도록 한다. 
    • 직렬화 가능 (serializable isolation) 에 가까운 격리수준을 제공 
    • 직렬성 : 여러 트랜잭션이 동시에 수행되더라도 각 트랜잭션이 마치 하나씩 차례대로 수행되는 것과 같이 보이도록 하는 일관성을 보장하는 특성

파일 포맷 호환성

  • Iceberg 는 상대적으로 다양한 파일 포맷을 지원한다. parquet 뿐만 아니라, orc, avro 같은 포맷을 기본적으로 제공한다. 데이터가 서로 다른 포맷으로 저장되더라도 활용할 수 있다는 장점이 있다. 
  • DeltaLake는 parquet 포맷을 기본 저장 형식으로 사용한다. 단일 parquet 포맷에 초점을 두고, 성능을 높이는 것을 지향한다. 

 

출처 

 

AWS에서의 Transactional Data Lake를 위한 오픈 테이블 형식(Open table format) 선택 가이드 | Amazon Web Services

이 글은 AWS Big Data Blog의 Choosing an open table format for your transactional data lake on AWS by Shana Schipers, Ian Meyers, and Carlos Rodrigues의 한국어 번역 및 편집본입니다. 2023년 8월: 이 게시물은 Amazon Redshift의 Apache I

aws.amazon.com

 

 

728x90