Unity Catalog 익스텐션

Unity Catalog 익스텐션 (Unity Catalog Extension)

unity_catalog 익스텐션은 Delta Lake 포맷과 DuckDB Delta 익스텐션 위에 Unity Catalog 지원을 더해 줘요.

delta 익스텐션Delta Lake 오픈소스 스토리지 포맷을 지원해요. Delta Kernel로 빌드됐어요. 이 익스텐션은 로컬·원격 Delta 테이블에 대한 읽기 지원을 제공해요.

구현 세부 사항은 발표 블로그 포스트를 참고해요.

참고 두 익스텐션 모두 지원되는 플랫폼에서만 지원돼요.

출처: 문서

본문

설치와 로드 (Installing and Loading)

설치하고 로드하려면:

INSTALL unity_catalog;
LOAD unity_catalog;

사용법 (Usage)

Databricks나 Unity Catalog OSS로 Unity Catalog를 이미 구성했다면, 토큰·엔드포인트·리전으로 secret을 설정하고 카탈로그에 attach 해요:

CREATE SECRET (
    TYPE unity_catalog,
    TOKEN '⟨token⟩',
    ENDPOINT '⟨endpoint⟩',
    AWS_REGION '⟨region⟩'
);
ATTACH 'my_catalog' AS my_catalog (TYPE unity_catalog, DEFAULT_SCHEMA 'main');

여기서 ENDPOINT는 Unity Catalog REST API 엔드포인트이고 TOKEN은 적절한 자격 증명이에요. Databricks의 경우 ENDPOINTWorkspace URL(보통 https://⟨instance⟩.cloud.databricks.com/)이고, TOKEN은 예를 들어 unity-catalog 범위의 personal access token일 수 있어요 — 전체 옵션은 Unity Catalog의 접근 제어를 참고해요. OSS Unity Catalog의 경우 OSS Unity Catalog 문서를 참고해요.

읽기 (Reading)

SHOW ALL TABLES;
SELECT * FROM my_catalog.my_schema.my_table LIMIT 10;

쓰기 (Writing)

표준 INSERT가 지원돼요:

INSERT INTO my_catalog.my_schema.my_table VALUES (1, 'hello');
INSERT INTO my_catalog.my_schema.my_table SELECT * FROM other_table;

카탈로그 관리 커밋 (Catalog-Managed Commits)

Databricks Unity Catalog 테이블은 카탈로그 관리 커밋(Catalog-Coordinated Commits/CCv2)을 사용할 수 있는데, 이 경우 커밋 조정을 Delta 로그에 직접 쓰는 대신 Databricks가 처리해요. DuckDB는 attach된 테이블이 이를 요구하면 이 프로토콜을 투명하게 사용해요 — INSERT 문법은 동일해요:

INSERT INTO my_catalog.my_schema.my_catalog_managed_table VALUES (1, 'hello');

참고 DuckDB는 아직 CREATE TABLE DDL을 지원하지 않으므로, CMC 활성 테이블은 Spark나 UC CLI로 만들어야 해요(delta.feature.catalogManaged 테이블 속성 설정). 테이블이 CMC 활성화되면 DuckDB가 투명하게 읽고 써요.

기능 (Features)

이 익스텐션은 다음을 지원해요:

  • 사용 가능한 테이블 나열: SHOW ALL TABLES;
  • 표준 SQL로 테이블과 상호작용: SELECT * FROM ⟨catalog⟩.⟨schema⟩.⟨table⟩;
  • 타임 트래블: SELECT * FROM ... AT (VERSION => ...);
  • 삽입: INSERT INTO ... VALUES (...);
  • 개별 테이블 체크포인트: CALL unity_catalog_checkpoint_table('my_catalog.my_schema.my_table');

현재는 다음을 지원하지 않아요:

  • DELETE 또는 UPDATE
  • 테이블, 뷰, 스키마의 생성 또는 조작

지원되는 DuckDB 버전과 플랫폼

unity_catalog(그리고 delta) 익스텐션은 현재 다음 플랫폼을 지원해요:

  • Linux AMD64(x86_64와 ARM64): linux_amd64linux_arm64
  • macOS Intel과 Apple Silicon: osx_amd64osx_arm64
  • Windows AMD64: windows_amd64

다른 DuckDB 플랫폼 지원은 진행 중이에요.

더 알아보기 (Learn more)