Lakehouse 포맷
Iceberg, Delta, DuckLake를 DuckDB에서 읽고 쓰는 범위와 extension 안정성 기준을 정리합니다.
핵심 요약
- Iceberg, Delta, DuckLake는 모두 파일+metadata 구조지만 트랜잭션·schema evolution·time travel·catalog 연동 방식이 제각각이라 extension 지원 범위와 안정성을 먼저 확인합니다.
- iceberg extension은 httpfs/azure와 함께 object storage에 접근하며, 단순 metadata scan과 REST catalog attach는 운영 의미가 다르므로 읽기 전용/catalog mutation을 분리합니다.
- delta extension은 read/write와 AT (VERSION => n) time travel을 지원하고, Delta log checkpoint·credential chain·release note를 함께 확인합니다.
- DuckLake는 metadata를 SQL DB에, data files를 별도 path에 둡니다. 1.0이 2026년 4월 발표라 신규 프로젝트라면 검토할 만하지만 기존 catalog 정책과 비교가 필요합니다.
- 단일 팀 mart는 Plain Parquet/DuckDB file, 여러 엔진이 table history를 공유하면 Iceberg/Delta, catalog mutation이 민감하면 read-only scan으로 제한합니다.
DuckDB는 단순 파일 스캐너를 넘어 lakehouse 포맷과도 연결됩니다. Iceberg, Delta, DuckLake는 모두 "파일 + metadata" 구조지만 트랜잭션, schema evolution, time travel, catalog 연동 방식이 제각각입니다. 그래서 DuckDB에서 쓰려면 포맷마다 지원 범위와 extension 안정성을 먼저 따져봐야 합니다.
지원 포맷 비교
| 포맷 | DuckDB extension | 강점 | 운영 주의 |
|---|---|---|---|
| Iceberg | iceberg | open table format, metadata scan, REST catalog 연동 | extension이 릴리스 사이에도 업데이트될 수 있음 |
| Delta | delta | Delta table read/write, time travel, append | platform별 regression과 credential chain 확인 |
| DuckLake | ducklake | DuckDB 친화 lakehouse, SQL metadata catalog | 1.0 이후 빠르게 변하는 생태계 |
| Plain Parquet | built-in/core | 단순, 넓은 호환성 | ACID/table history는 직접 관리 |
Iceberg
INSTALL iceberg;
LOAD iceberg;
SELECT count(*)
FROM iceberg_scan('s3://warehouse/db/table/metadata/v1.metadata.json');Iceberg extension은 httpfs나 azure extension과 함께 object storage에 접근합니다. catalog를 붙이지 않는 단순 scan과 REST catalog attach는 운영상 의미가 다릅니다. 읽기 전용 탐색인지, table write와 catalog mutation까지 할 것인지를 나눠서 문서로 남깁니다.
Delta
INSTALL delta;
LOAD delta;
CREATE SECRET (
TYPE s3,
PROVIDER credential_chain
);
SELECT *
FROM delta_scan('s3://company-lake/delta/orders');Delta extension은 local/remote Delta table read/write를 지원합니다. time travel은 attach 후 AT (VERSION => n) 형태로 읽습니다. 운영에서는 Delta log checkpoint, cloud provider credential chain, extension release note를 함께 챙깁니다.
DuckLake
DuckLake는 metadata를 SQL database에 두고 data files를 별도 path에 둡니다.
INSTALL ducklake;
LOAD ducklake;
ATTACH 'ducklake:metadata.ducklake' AS my_ducklake (DATA_PATH 'data_files');
USE my_ducklake;
FROM ducklake_snapshots('my_ducklake');DuckLake 1.0은 2026년 4월에 발표되었습니다. 새 프로젝트라면 검토할 만하지만, 기존 lakehouse 표준과 조직의 catalog 운영 정책부터 비교해 보는 게 순서입니다.
선택 기준
| 질문 | 추천 |
|---|---|
| 단일 팀 분석 mart인가 | Plain Parquet 또는 DuckDB file |
| 여러 엔진이 같은 table history를 공유해야 하나 | Iceberg/Delta |
| DuckDB 중심으로 lakehouse를 새로 설계하나 | DuckLake 검토 |
| 단순 export/검증인가 | Plain Parquet |
| catalog mutation 권한이 민감한가 | read-only scan으로 제한 |