레이크하우스 형식

레이크하우스 형식 (Lakehouse Formats)

레이크하우스 형식(lakehouse formats)은 흔히 오픈 테이블 형식(open table formats)이라고도 불리며, ACID 트랜잭션이나 스냅샷 히스토리 유지 같은 보장을 유지하면서 객체 스토리지에 데이터를 저장하기 위한 규격이에요. 시간이 지나면서 여러 레이크하우스 형식이 등장했는데, 각각 메타데이터(일명 카탈로그)를 관리하는 고유한 방식이 있어요. 이 페이지에서는 DuckDB가 이 형식들 중 일부에 대해 제공하는 지원과, 여전히 DuckDB를 사용하면서 이 형식들과 거의 완전한 상호운용성을 얻을 수 있는 해결 방법을 다룰게요.

출처: 문서

본문

DuckDB 레이크하우스 지원 매트릭스 (DuckDB Lakehouse Support Matrix)

DuckDB는 Iceberg, Delta, Lance, DuckLake를 일급 시민(first-class citizens)으로 지원해요. 다음 매트릭스는 DuckDB가 core 확장을 통해 기본 제공(out of the box)으로 네이티브 지원하는 것을 나타내요.

DuckLake Iceberg Delta Lance
Extension ducklake iceberg delta lance
Read
Write
Deletes
Updates
Upserting
Create table
Create table with partitions
Attaching to a catalog ✅ \*
Rename table
Rename columns
Add/drop columns
Alter column type
Compaction and maintenance
Encryption
Manage table properties
Time travel
Query table changes

\* unity_catalog 확장을 통해 지원.

DuckDB는 최소 의존성으로 네이티브 확장을 구축하는 것을 목표로 해요. 예를 들어 iceberg 확장은 서드파티 Iceberg 라이브러리에 대한 의존성이 없어서, 모든 데이터와 메타데이터 연산이 DuckDB 확장에 네이티브로 구현돼 있어요. delta 확장의 경우 delta-kernel-rs 프로젝트를 사용하는데, 이는 엔진들이 가능한 한 네이티브에 가까운 delta 통합을 구축할 수 있게 하는 가벼운 플랫폼이에요.

네이티브 구현이 왜 중요한가요? 네이티브 구현 덕분에 DuckDB가 복잡한 필터 푸시다운(파일 수준과 row-group 수준 가지치기 포함) 같은 더 많은 성능 최적화를 수행하고 메모리 관리를 개선할 수 있어요.

더 알아보기 (Learn more)