Apache Polaris
Snowflake가 2024년 오픈소스로 공개한 뒤 아파치 소프트웨어 재단에 기증한 Iceberg REST 카탈로그 구현체.
Iceberg 생태계 — REST 카탈로그와 멀티 엔진 지원
· Head-to-Head Comparison 표의 Engine Support/Catalog/Community 행 (p.7), The Ecosystem Reality (pp.9-10)
Copy-on-Write (COW)
행 단위 수정 시 영향받는 데이터 파일 전체를 즉시 재작성하는 방식. 쓰기는 무겁지만 읽기는 항상 깨끗한 파일만 스캔한다.
컴팩션(Compaction)과 메타데이터 관리
· Where Iceberg Falls Short (p.6), Performance — Real Numbers 중 Small file handling/Metadata overhead (pp.8-9), The Bottom Line (p.13)
Merge-on-Read (MOR)
행 단위 수정 시 원본 파일을 건드리지 않고 삭제/변경 정보를 별도 삭제 파일로 기록하는 방식. 쓰기는 가볍지만 삭제 파일이 쌓이면 읽기 성능이 저하되어 주기적 컴팩션이 필요하다.
컴팩션(Compaction)과 메타데이터 관리
· Where Iceberg Falls Short (p.6), Performance — Real Numbers 중 Small file handling/Metadata overhead (pp.8-9), The Bottom Line (p.13)
Nessie
Git과 유사한 브랜치/커밋 개념을 데이터 카탈로그에 도입해, 여러 테이블에 걸친 원자적 커밋과 실험용 브랜치를 지원하는 Iceberg 카탈로그 구현체.
Iceberg 생태계 — REST 카탈로그와 멀티 엔진 지원
· Head-to-Head Comparison 표의 Engine Support/Catalog/Community 행 (p.7), The Ecosystem Reality (pp.9-10)
REST 카탈로그 (Iceberg REST Catalog, IRC)
특정 구현체가 아니라 HTTP 기반의 카탈로그 접근 API 표준. 이 스펙을 구현한 카탈로그(Polaris, Unity Catalog, Glue 등)끼리는 동일한 프로토콜로 상호 접근이 가능하다.
Iceberg 생태계 — REST 카탈로그와 멀티 엔진 지원
· Head-to-Head Comparison 표의 Engine Support/Catalog/Community 행 (p.7), The Ecosystem Reality (pp.9-10)
Unity Catalog
Databricks가 만든 데이터 거버넌스/카탈로그 서비스로 2024년 오픈소스화되었으며, 이후 Iceberg REST 카탈로그 API 호환성을 추가해 Databricks 밖의 엔진도 접근할 수 있게 되었다.
Iceberg 생태계 — REST 카탈로그와 멀티 엔진 지원
· Head-to-Head Comparison 표의 Engine Support/Catalog/Community 행 (p.7), The Ecosystem Reality (pp.9-10)
낙관적 동시성 제어 (OCC)
쓰기 시점에 락을 걸지 않고 우선 작업한 뒤, 커밋 시점에 베이스가 바뀌었는지 확인해 충돌이 있으면 재시도하는 동시성 제어 방식. Iceberg와 Delta Lake 모두 이 방식을 사용한다.
스키마 진화와 동시성 제어
· Delta Lake — How It Works 중 Concurrency control (p.3, 대조 맥락), Apache Iceberg Key Features 중 Schema evolution / Snapshot isolation (p.5)
매니페스트 리스트 (Manifest List)
한 스냅샷을 구성하는 매니페스트 파일들의 목록을 담은 Avro 파일. 매니페스트 파일별 파티션 요약 통계도 함께 보유한다.
Iceberg 아키텍처 — 메타데이터 트리와 쿼리 플래닝
· Apache Iceberg — How It Works: Architecture (pp.3-5) 및 Performance — Real Numbers 중 쿼리 플래닝/파일 리스팅 부분 (pp.8-9)
매니페스트 파일 (Manifest File)
실제 데이터 파일 경로, 파티션 값, 컬럼별 min/max/null count 통계, 파일 크기를 기록한 Avro 파일.
Iceberg 아키텍처 — 메타데이터 트리와 쿼리 플래닝
· Apache Iceberg — How It Works: Architecture (pp.3-5) 및 Performance — Real Numbers 중 쿼리 플래닝/파일 리스팅 부분 (pp.8-9)
메달리온 아키텍처
데이터를 Bronze(원본)→Silver(정제)→Gold(집계) 단계로 점진적으로 정제해나가는 데이터 레이크 설계 패턴.
테이블 포맷이란 무엇인가 (Parquet vs Iceberg)
· What Are Table Formats and Why Do They Matter? (pp.1-2)
메타데이터 파일 (metadata.json)
Iceberg 테이블의 스키마, 파티션 스펙, 정렬 순서, 스냅샷 목록과 현재 스냅샷 포인터를 담는 최상위 메타데이터 파일.
Iceberg 아키텍처 — 메타데이터 트리와 쿼리 플래닝
· Apache Iceberg — How It Works: Architecture (pp.3-5) 및 Performance — Real Numbers 중 쿼리 플래닝/파일 리스팅 부분 (pp.8-9)
벤더 종속 (Vendor Lock-in)
특정 벤더의 제품/플랫폼에 깊게 의존해 다른 벤더로 전환하는 비용이 커지는 상태. Iceberg의 엔진 독립적 설계는 이를 낮추는 것을 목표로 한다.
언제 Iceberg를 선택하는가 — 실전 판단 기준
· When to Choose What (pp.10-11), What About Hudi? (p.12), The Bottom Line (pp.12-13)
스냅샷 (Snapshot)
특정 시점의 테이블 상태 전체를 나타내는 단위. 하나의 매니페스트 리스트를 가리킨다.
Iceberg 아키텍처 — 메타데이터 트리와 쿼리 플래닝
· Apache Iceberg — How It Works: Architecture (pp.3-5) 및 Performance — Real Numbers 중 쿼리 플래닝/파일 리스팅 부분 (pp.8-9)
스냅샷 격리 (Snapshot Isolation)
읽기 작업이 항상 어느 한 스냅샷의 일관된 상태만 보고, 쓰기 도중의 중간 상태를 보지 않도록 보장하는 격리 수준.
스키마 진화와 동시성 제어
· Delta Lake — How It Works 중 Concurrency control (p.3, 대조 맥락), Apache Iceberg Key Features 중 Schema evolution / Snapshot isolation (p.5)
스냅샷 만료 (Snapshot Expiration)
더 이상 필요 없는 과거 스냅샷과 그에 딸린 매니페스트·데이터 파일을 제거해 메타데이터와 스토리지 누적을 방지하는 유지보수 작업.
컴팩션(Compaction)과 메타데이터 관리
· Where Iceberg Falls Short (p.6), Performance — Real Numbers 중 Small file handling/Metadata overhead (pp.8-9), The Bottom Line (p.13)
운영 규율 (Operational Discipline)
컴팩션, 스냅샷/파일 만료 같은 유지보수 작업을 실제로 정기 스케줄링해 실행하는 조직적 습관. 저자는 포맷 선택보다 이것이 프로덕션 성능을 더 크게 좌우한다고 강조한다.
언제 Iceberg를 선택하는가 — 실전 판단 기준
· When to Choose What (pp.10-11), What About Hudi? (p.12), The Bottom Line (pp.12-13)
직렬화 가능 격리 (Serializable Isolation)
동시 트랜잭션들이 마치 순차적으로 실행된 것과 같은 결과를 보장하는 가장 엄격한 격리 수준. Iceberg 행 단위 연산의 기본 격리 수준이다.
스키마 진화와 동시성 제어
· Delta Lake — How It Works 중 Concurrency control (p.3, 대조 맥락), Apache Iceberg Key Features 중 Schema evolution / Snapshot isolation (p.5)
컴팩션 (Compaction)
작은 데이터 파일 여러 개를 더 큰 파일로 병합해 쿼리 성능을 회복시키는 유지보수 작업. Iceberg에서는 rewrite_data_files 프로시저로 수행한다.
컴팩션(Compaction)과 메타데이터 관리
· Where Iceberg Falls Short (p.6), Performance — Real Numbers 중 Small file handling/Metadata overhead (pp.8-9), The Bottom Line (p.13)
테이블 포맷
파일 포맷 위에 메타데이터 계층을 얹어 ACID 트랜잭션, 타임트래블, 스키마 진화, 파티션 관리를 제공하는 규격. Apache Iceberg, Delta Lake, Apache Hudi가 대표적이다.
테이블 포맷이란 무엇인가 (Parquet vs Iceberg)
· What Are Table Formats and Why Do They Matter? (pp.1-2)
파일 포맷
Parquet, ORC, Avro처럼 데이터를 디스크에 어떤 바이트 레이아웃으로 저장할지 정의하는 규격. 압축·인코딩·컬럼 지향 여부를 결정하지만 트랜잭션 개념은 없다.
테이블 포맷이란 무엇인가 (Parquet vs Iceberg)
· What Are Table Formats and Why Do They Matter? (pp.1-2)
파티션 변환 (Partition Transform)
identity, year/month/day/hour, bucket(N, col), truncate(W, col) 등 원본 컬럼 값을 파티션 값으로 매핑하는 함수.
히든 파티셔닝과 파티션 진화
· Apache Iceberg Key Features 중 Hidden partitioning / Partition evolution (p.5), Head-to-Head Comparison 표의 Partition Evolution/Hidden Partitioning 행 (pp.6-7)
파티션 진화 (Partition Evolution)
기존 데이터 파일을 재작성하지 않고 테이블의 파티션 스펙을 바꾸는 기능. 여러 파티션 스펙이 한 테이블 안에 공존할 수 있다.
히든 파티셔닝과 파티션 진화
· Apache Iceberg Key Features 중 Hidden partitioning / Partition evolution (p.5), Head-to-Head Comparison 표의 Partition Evolution/Hidden Partitioning 행 (pp.6-7)
포맷 버전 (v1/v2/v3)
Iceberg 테이블 스펙의 버전. v2에서 행 단위 삭제(merge-on-read)가 추가되었고, v3(2025년 확정)에서 삭제 벡터·행 계보·신규 타입 등이 추가되었다.
Iceberg 아키텍처 — 메타데이터 트리와 쿼리 플래닝
· Apache Iceberg — How It Works: Architecture (pp.3-5) 및 Performance — Real Numbers 중 쿼리 플래닝/파일 리스팅 부분 (pp.8-9)
필드 ID (Field ID)
Iceberg가 각 컬럼에 부여하는 고유하고 영구적인 식별자. 이름/위치가 아닌 이 ID로 컬럼을 추적해 이름변경·순서변경을 메타데이터만으로 처리한다.
스키마 진화와 동시성 제어
· Delta Lake — How It Works 중 Concurrency control (p.3, 대조 맥락), Apache Iceberg Key Features 중 Schema evolution / Snapshot isolation (p.5)
히든 파티셔닝 (Hidden Partitioning)
사용자가 파티션 컬럼을 직접 지정하지 않아도, 원본 컬럼 값에 등록된 변환 함수를 적용해 Iceberg가 자동으로 올바른 파티션에 매핑하는 기능.
히든 파티셔닝과 파티션 진화
· Apache Iceberg Key Features 중 Hidden partitioning / Partition evolution (p.5), Head-to-Head Comparison 표의 Partition Evolution/Hidden Partitioning 행 (pp.6-7)