Apache Iceberg™ 테이블

Snowflake용 Apache Iceberg™ 테이블은 일반적인 Snowflake 테이블의 성능 및 쿼리 의미 체계와 사용자가 관리하는 외부 클라우드 저장소를 결합합니다. Snowflake에 저장할 수 없거나 저장하지 않기로 선택한 기존 데이터 레이크에 이상적입니다.

Iceberg 테이블은 개방형 형식으로 저장된 데이터 파일에 추상화 계층을 제공하고 다음과 같은 기능을 지원하는 Apache Iceberg™ 개방형 테이블 형식 사양을 사용합니다.

  • ACID(원자성, 일관성, 격리, 영속성) 트랜잭션

  • 스키마 진화

  • 숨겨진 파티셔닝

  • 테이블 스냅샷

Snowflake는 Apache Parquet™ 파일 형식을 사용하는 Iceberg 테이블을 지원합니다.

시작하기

Iceberg 테이블을 시작하려면 자습서: 첫 번째 Apache Iceberg™ 테이블 만들기 섹션을 참조하십시오.

작동 방법

이 섹션에서는 Snowflake의 Iceberg 테이블 작업과 관련된 정보를 제공합니다. Iceberg 테이블 형식 사양에 대해 자세히 알아보려면 공식 Apache Iceberg 설명서Iceberg 테이블 사양 을 참조하십시오.

데이터 저장소

Iceberg 테이블은 외부 클라우드 저장소 위치(Amazon S3, Google Cloud Storage 또는 Azure Storage)에 데이터 파일과 메타데이터 파일을 저장합니다. 외부 저장소는 Snowflake에 속하지 않습니다. 데이터 보호 및 복구 구성을 포함하여, 외부 클라우드 저장소 위치에 대한 모든 관리 책임은 본인에게 있습니다. Snowflake는 Iceberg 테이블에 대한 Fail-safe 저장소를 제공하지 않습니다.

Snowflake는 외부 볼륨 을 사용하여 저장소 위치에 연결하며, Iceberg 테이블은 Snowflake 저장소 비용이 발생하지 않습니다. 자세한 내용은 청구 섹션을 참조하십시오.

Iceberg 테이블의 보관에 대해 자세히 알아보려면 Apache Iceberg™ 테이블용 저장소 섹션을 참조하십시오.

외부 볼륨

외부 볼륨은 Snowflake를 Iceberg 테이블의 외부 클라우드 저장소에 연결하는 데 사용하는 이름이 지정된 계정 수준의 Snowflake 오브젝트입니다. 외부 볼륨은 저장소 위치에 대한 ID 및 액세스 관리(IAM) 엔터티를 저장합니다. Snowflake는 IAM 엔터티를 사용하여 테이블 데이터, Iceberg 메타데이터 및 테이블 스키마, 파티션 및 기타 메타데이터를 저장하는 매니페스트 파일에 액세스하기 위해 저장소에 안전하게 연결합니다.

단일 외부 볼륨이 하나 이상의 Iceberg 테이블을 지원할 수 있습니다.

Iceberg 테이블의 외부 볼륨을 설정하려면 외부 볼륨 구성 섹션을 참조하십시오.

카탈로그

Iceberg 카탈로그를 사용하면 컴퓨팅 엔진이 Iceberg 테이블을 관리하고 로드할 수 있습니다. 카탈로그는 Iceberg 테이블 사양 의 첫 번째 아키텍처 계층을 형성하며 다음을 지원해야 합니다.

  • 하나 이상의 Iceberg 테이블에 대한 현재 메타데이터 포인터 저장. 메타데이터 포인터는 테이블 이름을 해당 테이블의 현재 메타데이터 파일 위치에 매핑합니다.

  • 테이블의 현재 메타데이터 포인터를 업데이트할 수 있도록 원자성 작업 수행.

Iceberg 카탈로그에 대해 자세히 알아보려면 Apache Iceberg 설명서 를 참조하십시오.

Snowflake는 다양한 카탈로그 옵션 을 지원합니다. 예를 들어, Snowflake를 Iceberg 카탈로그로 사용하거나 카탈로그 통합 을 사용하여 Snowflake를 외부 Iceberg 카탈로그에 연결할 수 있습니다.

카탈로그 통합

카탈로그 통합은 다음 시나리오를 위해 테이블 메타데이터가 구성되는 방식에 대한 정보를 저장하는 명명된 계정 수준의 Snowflake 오브젝트입니다.

  • Snowflake를 Iceberg 카탈로그 로 사용하지 않는 경우. 예를 들어, 테이블이 AWS Glue에서 관리되는 경우 카탈로그 통합이 필요합니다.

  • Snowflake Open Catalog 를 다음과 통합하려는 경우:

    • Snowflake를 사용하여 Snowflake Open Catalog 의 Iceberg 테이블을 쿼리합니다.

    • 서드 파티 컴퓨팅 엔진이 테이블을 쿼리할 수 있도록 Snowflake가 관리하는 Iceberg 테이블을 Snowflake Open Catalog 와 동기화합니다.

단일 카탈로그 통합은 동일한 외부 카탈로그를 사용하는 하나 이상의 Iceberg 테이블을 지원할 수 있습니다.

카탈로그 통합을 설정하려면 카탈로그 통합 구성하기 섹션을 참조하십시오.

메타데이터 및 스냅샷

Iceberg는 데이터 파일이 매니페스트 및 메타데이터 파일을 사용하여 매핑되는 스냅샷 기반 쿼리 모델을 사용합니다. 스냅샷은 특정 시점의 테이블 상태를 나타내며 테이블의 전체 데이터 파일 세트에 액세스하는 데 사용됩니다.

테이블 메타데이터 및 Time Travel 지원에 대해 알아보려면 Apache Iceberg™ 테이블의 메타데이터 및 보존 섹션을 참조하십시오.

클라우드 간/리전 간 지원

클라우드 간/리전 간 지원은 Iceberg 테이블의 유형에 따라 다릅니다.

테이블 타입

클라우드 간/리전 간 지원

참고

카탈로그 통합 이 있는 외부 카탈로그를 사용하는 테이블

외부 볼륨의 활성 저장소 위치 가 Snowflake 계정과 동일한 클라우드 공급자 또는 동일한 리전에 있지 않은 경우 다음 제한 사항이 적용됩니다.

  • SYSTEM$GET_ICEBERG_TABLE_INFORMATION 함수를 사용하여 최근에 새로 고친 스냅샷에 대한 정보를 검색할 수 없습니다.

  • Snowflake를 카탈로그로 사용하도록 테이블을 변환할 수 없습니다.

Snowflake 계정과 외부 볼륨이 서로 다른 리전에 있는 경우 테이블을 쿼리할 때 외부 클라우드 저장소 계정에 송신 비용이 발생합니다.

Snowflake를 카탈로그로 사용하는 테이블

외부 볼륨은 Snowflake 계정을 호스팅하는 (동일한 리전의) 동일한 클라우드 공급자와 함께 활성 저장소 위치 를 사용해야 합니다.

활성 위치가 동일한 리전에 없으면 CREATE ICEBERG TABLE 문은 사용자 오류를 반환합니다.

청구

Snowflake는 Iceberg 테이블을 사용할 때 가상 웨어하우스(컴퓨팅) 사용 및 클라우드 서비스에 대해 계정에 요금을 청구합니다. 자동 새로 고침 을 사용하는 경우 Snowflake는 해당 계정에 요금을 청구합니다.

Snowflake는 다음에 대해 계정에 요금을 청구하지 않습니다.

참고

Snowflake 계정과 외부 볼륨이 서로 다른 리전에 있는 경우 테이블을 쿼리할 때 외부 클라우드 저장소 계정에 송신 비용이 발생합니다.

카탈로그 옵션

Snowflake는 다음의 Iceberg 카탈로그 옵션을 지원합니다.

다음 표에 이러한 카탈로그 옵션 간의 차이점이 요약되어 있습니다.

Snowflake를 카탈로그로 사용

외부 카탈로그 사용

읽기 액세스

쓰기 액세스

Snowflake 플랫폼 지원을 위해 테이블을 변환하여 Snowflake를 카탈로그로 사용할 수 있습니다.

데이터 및 메타데이터 저장소

외부 볼륨(클라우드 저장소)

외부 볼륨(클라우드 저장소)

Snowflake 플랫폼 지원

Snowflake Open Catalog 통합

다른 컴퓨팅 엔진을 사용하여 테이블을 쿼리하기 위해 Snowflake 관리 테이블을 Open Catalog 와 동기화할 수 있습니다.

Snowflake를 사용하여 Open Catalog 에서 관리하는 Iceberg 테이블을 쿼리할 수 있습니다.

Snowflake Catalog SDK 와 함께 작동

Snowflake를 카탈로그로 사용

Snowflake를 Iceberg 카탈로그로 사용하는 Iceberg 테이블은 읽기 및 쓰기 액세스와 함께 완전한 Snowflake 플랫폼 지원을 제공합니다. 테이블 데이터와 메타데이터는 Snowflake가 외부 볼륨 을 사용하여 액세스하는 외부 클라우드 저장소에 저장됩니다. Snowflake는 테이블에 대해 압축과 같은 모든 수명 주기 유지 관리를 처리합니다.

Snowflake를 Iceberg 카탈로그로 사용하는 Iceberg 테이블의 작동 방식

외부 카탈로그 사용

외부 카탈로그를 사용하는 Iceberg 테이블은 읽기 전용 액세스로 제한된 Snowflake 플랫폼 지원을 제공합니다. 이 테이블 유형에서 Snowflake는 카탈로그 통합 을 사용하여 Iceberg 메타데이터 및 스키마에 대한 정보를 검색합니다.

이 옵션을 사용하면 다음 소스에 대한 Iceberg 테이블을 생성할 수 있습니다.

  • AWS Glue 데이터 카탈로그

  • 오브젝트 저장소의 Iceberg 메타데이터 파일

  • 오브젝트 저장소의 델타 테이블 파일

  • Open Catalog

  • 원격 Iceberg REST 카탈로그

Snowflake는 테이블에 대한 수명 주기 관리를 맡지 않습니다.

테이블 데이터와 메타데이터는 Snowflake가 외부 볼륨 을 사용하여 액세스하는 외부 클라우드 저장소에 저장됩니다.

다음 다이어그램은 Iceberg 테이블이 외부 Iceberg 카탈로그와의 카탈로그 통합을 사용하는 방법을 보여줍니다.

카탈로그 통합을 사용하는 Iceberg 테이블의 작동 방식

고려 사항 및 제한 사항

다음 고려 사항과 제한 사항이 Iceberg 테이블에 적용되며 변경될 수 있습니다.

클라우드 및 리전

  • Iceberg 테이블은 모든 Snowflake 계정, 모든 클라우드 플랫폼 및 중국 리전을 제외한 모든 리전에서 사용할 수 있습니다.

  • 외부 카탈로그를 사용하는 경우 클라우드 간/리전 간 테이블이 지원됩니다. 자세한 내용은 클라우드 간/리전 간 지원 섹션을 참조하십시오.

Iceberg

  • 다음 기능: 을 제외하고 Apache Iceberg 사양의 버전 1 및 2가 지원됩니다.

    • 행 수준 삭제(위치 삭제 또는 동등 삭제) 그러나 Snowflake를 카탈로그로 사용하는 테이블은 Snowflake DELETE 문을 지원합니다.

    • history.expire.min-snapshots-to-keep 테이블 속성 을 사용하여 유지할 기본 최소 스냅샷 수 지정. 자세한 내용은 메타데이터 및 스냅샷 섹션을 참조하십시오.

  • bucket 변환 함수를 사용한 Iceberg 분할은 조건절을 사용하여 결과를 필터링하는 쿼리의 성능에 영향을 미칩니다.

  • Snowflake에서 관리되지 않는 Iceberg 테이블의 경우 다음 사항에 유의하십시오.

    • 스냅샷이 만료되기 전에 주기적으로 테이블을 새로 고치는 경우 테이블 생성 후 생성된 모든 스냅샷으로의 Time Travel이 지원됩니다.

    • 구체화되지 않은 ID 파티션 열이 있는 테이블의 변환은 지원되지 않습니다. 소스 열이 Parquet 파일에 존재하지 않는 경우, 테이블에서 ID 변환을 정의하면 구체화되지 않은 ID 파티션 열이 생성됩니다.

파일 형식

  • Iceberg 테이블은 Apache Parquet 파일을 지원합니다.

  • 부호 없는 정수 논리 유형을 사용하는 Parquet 파일은 지원되지 않습니다.

외부 볼륨

  • 저장소 통합을 사용하여 외부 볼륨의 클라우드 저장소 위치에 액세스할 수 없습니다.

  • 생성하는 각 외부 볼륨에 대해 별도의 신뢰 관계를 구성해야 합니다.

메타데이터 파일

  • 메타데이터 파일은 Iceberg 테이블의 가장 최근 스냅샷을 식별하지 못합니다.

  • 데이터 파일 또는 스냅샷의 위치는 ALTER ICEBERG TABLE 명령을 사용하여 수정할 수 없습니다. 이러한 설정 중 하나를 수정하려면 (CREATE OR REPLACE ICEBERG TABLE 구문을 사용하여) 테이블을 다시 생성해야 합니다.

  • 외부 카탈로그를 사용하는 테이블의 경우:

    • 매니페스트 파일에 중복이 포함되지 않았는지 확인합니다. 동일한 스냅샷에 중복 파일이 있는 경우 Snowflake는 중복 파일의 경로를 포함하는 오류를 반환합니다.

    • Parquet 메타데이터에 유효하지 않은 UTF-8 문자가 포함된 경우 테이블을 생성할 수 없습니다. Parquet 메타데이터가 UTF-8을 준수하는지 확인합니다.

  • Snowflake는 Snowflake 외부에서 생성된 Parquet 메타데이터의 손상 및 불일치를 감지하고 오류 메시지를 통해 문제를 표시합니다.

    테이블 메타데이터가 일관되지 않은 경우에도 외부에서 관리되는(또는 변환된) 테이블을 생성, 새로 고침 또는 쿼리하는 것이 가능합니다. Iceberg 데이터를 작성할 때는 테이블의 메타데이터 통계(예: RowCount 또는 NullCount)가 데이터 내용과 일치하는지 확인하십시오.

  • Snowflake를 카탈로그로 사용하는 테이블의 경우 Snowflake는 DDL 문을 개별적으로 처리하고 다른 카탈로그와 다를 수 있는 방식으로 메타데이터를 생성합니다. 자세한 내용은 DDL 문 섹션을 참조하십시오.

클러스터링

클러스터링 지원은 Iceberg 테이블의 유형에 따라 다릅니다.

테이블 타입

참고

Snowflake를 Iceberg 카탈로그로 사용하는 테이블

CREATE ICEBERG TABLE 또는 ALTER ICEBERG TABLE 명령을 사용하여 클러스터링 키를 설정합니다. 클러스터링 키를 설정하거나 관리하려면 CREATE ICEBERG TABLE(Iceberg 카탈로그로서의 Snowflake)ALTER ICEBERG TABLE 섹션을 참조하십시오.

외부 카탈로그를 사용하는 테이블

클러스터링은 지원되지 않습니다.

변환된 테이블

Snowflake는 테이블을 변환한 후 파일이 생성되었거나 그 이후에 DML 문을 사용하여 파일이 수정된 경우에만 파일을 클러스터링합니다.

델타

  • Snowflake 스트림은 파티션 열이 있는 Delta 테이블 파일에서 생성된 Iceberg 테이블에는 지원되지 않습니다. 그러나 파티션 열이 없는 Delta 파일에서 생성된 테이블에 대한 Insert-only 스트림은 지원됩니다.

  • Delta 테이블 파일에서 생성된 Iceberg 테이블에서는 동적 테이블이 지원되지 않습니다.

  • Snowflake에서는 AWS Glue Data Catalog의 Delta 테이블 정의에서 Iceberg 테이블을 만들 수 없습니다.

  • 다음 특징이나 데이터 타입을 사용하는 Parquet 파일(Delta 테이블의 데이터 파일)은 지원되지 않습니다.

    • 필드 ID.

    • INTERVAL 데이터 타입.

    • 전체 자릿수가 38개보다 많은 DECIMAL 데이터 타입.

    • 1단계 또는 2단계 표현을 사용하는 LIST 또는 MAP 타입.

    • 부호 없는 정수 타입(INT(부호 있음 = false)).

    • FLOAT16 데이터 타입.

    Delta 데이터 타입과 Iceberg 테이블에 대한 자세한 내용은 델타 데이터 타입 섹션을 참조하십시오.

  • CREATE 및 ALTER … REFRESH 중에 새로 고침 작업은 작업당 최대 1,000개의 Delta 커밋 파일을 처리할 수 있습니다.

    참고

    Snowflake는 Iceberg 테이블을 생성할 때 Delta 체크포인트 파일을 사용합니다. 1,000개의 커밋 파일 제한은 최신 체크포인트 이후의 커밋에만 적용됩니다.

  • SYSTEM$GET_ICEBERG_TABLE_INFORMATION 함수를 사용하여 Iceberg 메타데이터를 생성할 수 없습니다.

  • Delta Lake 기능 중 행 추적, 삭제 벡터 파일, 변경 데이터 파일, 변경 메타데이터, DataChange, CDC, 프로토콜 진화는 지원되지 않습니다.

자동 새로 고침

  • 자동 새로 고침이 활성화되어 있으면 테이블 메타데이터를 수동으로 새로 고칠 수 없습니다. 수동 새로 고침을 수행하려면 먼저 자동 새로 고침을 해제합니다.

  • Snowflake 버전 8.22 이전에 생성된 카탈로그 통합의 경우 해당 카탈로그 통합에 의존하는 테이블에서 자동 새로 고침을 활성화하기 전에 REFRESH_INTERVAL_SECONDS 매개 변수를 수동으로 설정해야 합니다. 자세한 지침은 ALTER CATALOG INTEGRATION … SET AUTO_REFRESH 섹션을 참조하십시오.

  • 새 테이블 스냅샷이 현재 테이블 스냅샷의 직접적인 하위인지 확인합니다. 그렇지 않으면 자동 새로 고침이 STOPPED 상태로 전환됩니다. 이 문제가 발생할 때 자동 새로 고침을 복구하려면 오류 복구 섹션을 참조하십시오.

    • 테이블이 비어 있는 경우 자동 새로 고침을 활성화하기 전에 수동 새로 고침을 수행 하여 정의되지 않은 동작을 방지합니다.

  • 오브젝트 저장소에 카탈로그 통합 을 사용하는 경우 자동 새로 고침이 지원되지 않습니다.

  • 시퀀스 번호 열이 없는 Iceberg 버전 1 매니페스트는 현재 지원되지 않습니다.

서드 파티 클라이언트의 Iceberg 데이터, 메타데이터 액세스

  • 서드 파티 클라이언트는 Snowflake를 카탈로그로 사용하는 Iceberg 테이블에 데이터를 추가, 삭제 또는 업서트할 수 없습니다.

지원되지 않는 기능

다음 Snowflake 기능은 현재 모든 Iceberg 테이블에서 지원되지 않습니다.

다음 기능은 외부 카탈로그를 사용하는 Iceberg 테이블에는 지원되지 않습니다.