DuckLake

DuckLake

ducklake 익스텐션은 DuckLake 형식으로 저장된 데이터베이스에 연결(attach)하는 기능을 추가해요. 이 익스텐션의 전체 문서는 DuckLake 웹사이트에서 볼 수 있어요.

DuckLake 1.0은 2026년 4월에 출시됐어요. 발표 블로그 글을 읽어보세요.

출처: 문서

본문

ducklake 익스텐션은 DuckLake 형식으로 저장된 데이터베이스에 연결(attach)하는 기능을 추가해요. 이 익스텐션의 전체 문서는 DuckLake 웹사이트에서 볼 수 있어요.

설치와 로드 (Installing and Loading)

ducklake를 설치하려면:

INSTALL ducklake;

ducklake 익스텐션은 ATTACH 절에서 처음 사용할 때 투명하게 자동 로드돼요. 수동으로 로드하고 싶다면:

LOAD ducklake;

사용법 (Usage)

ATTACH 'ducklake:metadata.ducklake' AS my_ducklake (DATA_PATH 'data_files');
USE my_ducklake;

테이블 (Tables)

DuckDB에서 ducklake 익스텐션은 my_ducklake{:.language-sql .highlight}라는 이름의 DuckLake에 대한 카탈로그 테이블__ducklake_metadata_⟨my_ducklake⟩{:.language-sql .highlight} 카탈로그에 저장해요.

함수 (Functions)

DuckLake는 여러 함수를 등록한다는 점을 참고해요. 이 함수들은 카탈로그 이름을 첫 번째 인자로 호출해야 해요. 예:

FROM ducklake_snapshots('my_ducklake');
┌─────────────┬────────────────────────────┬────────────────┬──────────────────────────┐
│ snapshot_id │       snapshot_time        │ schema_version │         changes          │
│    int64    │  timestamp with time zone  │     int64      │ map(varchar, varchar[])  │
├─────────────┼────────────────────────────┼────────────────┼──────────────────────────┤
│      0      │ 2025-05-26 11:41:10.838+02 │       0        │ {schemas_created=[main]} │
└─────────────┴────────────────────────────┴────────────────┴──────────────────────────┘

ducklake_snapshots

catalog 이름의 DuckLake 카탈로그에 저장된 스냅샷을 반환해요.

파라미터 이름 파라미터 타입 명명된 파라미터 설명
catalog VARCHAR no

정보는 다음 스키마의 테이블로 인코딩돼요:

컬럼 이름 컬럼 타입
snapshot_id BIGINT
snapshot_time TIMESTAMP WITH TIME ZONE
schema_version BIGINT
changes MAP(VARCHAR, VARCHAR[])

ducklake_table_info

ducklake_table_info 함수는 catalog라는 이름의 DuckLake 카탈로그에 저장된 테이블에 대한 정보를 반환해요.

파라미터 이름 파라미터 타입 명명된 파라미터 설명
catalog VARCHAR no

정보는 다음 스키마의 테이블로 인코딩돼요:

컬럼 이름 컬럼 타입
table_name VARCHAR
schema_id BIGINT
table_id BIGINT
table_uuid UUID
file_count BIGINT
file_size_bytes BIGINT
delete_file_count BIGINT
delete_file_size_bytes BIGINT

ducklake_table_insertions

ducklake_table_insertions 함수는 주어진 테이블에서 주어진 버전 또는 타임스탬프의 스냅샷 사이에 삽입된 행을 반환해요. start_snapshotend_snapshot의 타입이 BIGINT인지 TIMESTAMP WITH TIME ZONE인지에 따라 두 가지 변형이 있어요.

파라미터 이름 파라미터 타입 명명된 파라미터 설명
catalog VARCHAR no
schema_name VARCHAR no
table_name VARCHAR no
start_snapshot BIGINT / TIMESTAMP WITH TIME ZONE no
end_snapshot BIGINT / TIMESTAMP WITH TIME ZONE no

함수가 반환하는 테이블의 스키마는 테이블 table_name의 스키마와 동일해요.

ducklake_table_deletions

ducklake_table_deletions 함수는 주어진 테이블에서 주어진 버전 또는 타임스탬프의 스냅샷 사이에 삭제된 행을 반환해요. start_snapshotend_snapshot의 타입이 BIGINT인지 TIMESTAMP WITH TIME ZONE인지에 따라 두 가지 변형이 있어요.

파라미터 이름 파라미터 타입 명명된 파라미터 설명
catalog VARCHAR no
schema_name VARCHAR no
table_name VARCHAR no
start_snapshot BIGINT / TIMESTAMP WITH TIME ZONE no
end_snapshot BIGINT / TIMESTAMP WITH TIME ZONE no

함수가 반환하는 테이블의 스키마는 테이블 table_name의 스키마와 동일해요.

ducklake_table_changes

ducklake_table_changes 함수는 주어진 테이블에서 주어진 버전 또는 타임스탬프의 스냅샷 사이에 변경된 행을 반환해요. start_snapshotend_snapshot의 타입이 BIGINT인지 TIMESTAMP WITH TIME ZONE인지에 따라 두 가지 변형이 있어요.

파라미터 이름 파라미터 타입 명명된 파라미터 설명
catalog VARCHAR no
schema_name VARCHAR no
table_name VARCHAR no
start_snapshot BIGINT / TIMESTAMP WITH TIME ZONE no
end_snapshot BIGINT / TIMESTAMP WITH TIME ZONE no

함수가 반환하는 테이블의 스키마는 테이블 table_name의 스키마에 다음 세 컬럼을 더한 것이에요.

컬럼 이름 컬럼 타입 설명
snapshot_id BIGINT
rowid BIGINT
change_type VARCHAR 변경 유형: insert 또는 delete

명령 (Commands)

ducklake_cleanup_old_files

ducklake_cleanup_old_files 함수는 catalog가 나타내는 DuckLake에서 오래된 파일을 정리해요. 성공하면 단일 컬럼(Success)과 0행의 테이블을 반환해요.

파라미터 이름 파라미터 타입 명명된 파라미터 설명
catalog VARCHAR no
cleanup_all BOOLEAN yes
dry_run BOOLEAN yes
older_than TIMESTAMP WITH TIME ZONE yes

ducklake_expire_snapshots

ducklake_expire_snapshots 함수는 versions 파라미터로 지정된 버전 또는 older_than 파라미터보다 오래된 스냅샷을 만료시켜요. 성공하면 단일 컬럼(Success)과 0행의 테이블을 반환해요.

파라미터 이름 파라미터 타입 명명된 파라미터 설명
catalog VARCHAR no
versions UBIGINT[] yes
older_than TIMESTAMP WITH TIME ZONE yes

ducklake_merge_adjacent_files

ducklake_merge_adjacent_files 함수는 스토리지에서 인접한 파일을 병합해요. 성공하면 단일 컬럼(Success)과 0행의 테이블을 반환해요.

파라미터 이름 파라미터 타입 명명된 파라미터 설명
catalog VARCHAR no

호환성 매트릭스 (Compatibility Matrix)

DuckLake 사양과 ducklake DuckDB 익스텐션은 현재 함께 출시돼요. 호환성 매트릭스를 참고해요.

더 알아보기 (Learn more)