Apache Iceberg™ 테이블의 메타데이터 및 보존

Snowflake는 사용하는 카탈로그 유형(Snowflake 또는 외부)에 따라 Apache Iceberg™ 테이블의 메타데이터를 처리합니다.

참고

어떤 유형의 Iceberg 테이블에 대해서도 history.expire.min-snapshots-to-keep 테이블 속성 을 사용하여 기본 최소 스냅샷 수를 지정할 수 없습니다.

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

Snowflake는 이 테이블 유형의 메타데이터 수명 주기를 관리하고, 테이블 데이터와 스냅샷의 보존 기간에 따라 부실해진 메타데이터, 매니페스트 목록 및 매니페스트 파일을 삭제합니다.

테이블 데이터 및 스냅샷의 보존 기간을 설정하려면 계정, 데이터베이스, 스키마 또는 테이블 수준에서 DATA_RETENTION_TIME_IN_DAYS 매개 변수를 설정합니다.

만들기

Snowflake는 주기적으로 Apache Iceberg 사양 버전 2에 대한 메타데이터를 생성하고 외부 볼륨의 파일에 메타데이터를 씁니다. 각각의 새 메타데이터 파일에는 마지막으로 생성된 Snowflake 메타데이터 파일 이후 DML 또는 DDL 변경 사항이 모두 포함됩니다.

SYSTEM$GET_ICEBERG_TABLE_INFORMATION 함수를 사용하여 필요에 따라 메타데이터를 생성할 수도 있습니다. 자세한 지침은 DML 변경 사항의 스냅샷 생성하기 섹션을 참조하십시오.

메타데이터 파일을 찾는 방법에 대한 정보는 데이터 및 메타데이터 디렉터리 섹션을 참조하십시오.

메타데이터 생성 내역 보기

메타데이터 생성 시도에 대한 전체 기록에 액세스하려면 계정의 쿼리 기록을 보고 결과를 필터링합니다. SQL 텍스트에서 SYSTEM$GET_ICEBERG_TABLE_INFORMATION 함수 이름을 검색합니다.

Snowflake는 내부적으로 동일한 SYSTEM$GET_ICEBERG_TABLE_INFORMATION 함수를 사용하여 테이블 메타데이터를 생성합니다. Snowflake가 시도한 시도는 쿼리 기록에서 SYSTEM 사용자 아래에 표시됩니다. 쿼리 기록의 STATUS 열은 메타데이터가 성공적으로 생성되었는지 여부를 나타냅니다.

보기 옵션은 쿼리 기록으로 쿼리 활동 모니터링하기 섹션을 참조하십시오.

삭제

다음과 같은 이벤트가 발생하면 Snowflake는 외부 클라우드 저장소에서 Iceberg 메타데이터를 삭제합니다.

  • 테이블 삭제 후.

  • Iceberg 메타데이터가 만료된 스냅샷이나 테이블 데이터를 참조하는 경우.

데이터 보존 기간이 만료된 후에는 즉시 삭제되지 않습니다. 결과적으로, 메타데이터 저장은 테이블의 수명보다 더 오랫동안 클라우드 저장소 공급자에게 비용을 발생시킬 수 있습니다.

경고

Snowflake는 테이블 데이터가 사용자가 관리하는 외부 클라우드 저장소에 있으므로 Snowflake 관리 Iceberg 테이블에 대해 Fail-safe 를 지원하지 않습니다. Iceberg 테이블 데이터를 보호하려면 클라우드 공급자를 통해 데이터 보호 및 복구를 구성해야 합니다.

테이블 삭제 후

테이블을 삭제한 경우 UNDROP ICEBERG TABLE 명령을 사용하여 데이터 보존 기간 내에 복원할 수 있습니다.

보존 기간이 만료되면 Snowflake는 외부 볼륨 위치에서 작성한 테이블 메타데이터와 스냅샷을 삭제합니다. 삭제는 비동기적으로 이루어지며 보관 기간이 지난 후 완료되는 데 며칠이 걸릴 수 있습니다.

참고

변환된 테이블 의 경우 Snowflake는 테이블 변환 후에 생성된 메타데이터만 삭제합니다.

스냅샷이 만료된 후

Snowflake는 데이터 보존 기간이 지난 후 만료된 스냅샷과 관련된 Iceberg 메타데이터 파일을 삭제합니다. 일반적으로 스냅샷이 만료된 후 7~14일 후에 삭제됩니다.

이전 테이블 스냅샷만 만료될 수 있습니다. Snowflake는 외부 클라우드 저장소에서 테이블의 최신(현재) 상태를 나타내는 메타데이터 파일을 절대 삭제하지 않습니다.

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

외부 카탈로그를 사용하는 테이블의 경우, Snowflake는 DATA_RETENTION_TIME_IN_DAYS 매개 변수 값을 사용하여 Snowflake Time Travel 및 테이블 삭제에 대한 보존 기간을 설정합니다. 보존 기간이 만료되어도 Snowflake는 외부 클라우드 저장소에서 Iceberg 메타데이터나 스냅샷을 삭제하지 않습니다.

Snowflake는 테이블 수준에서 DATA_RETENTION_TIME_IN_DAYS를 다음 값 중 작은 값으로 설정합니다.

  • 현재 메타데이터 파일의 history.expire.max-snapshot-age-ms 값입니다. Snowflake는 값을 일 단위로 변환합니다(내림).

  • Snowflake 계정 에디션 에 따라 다음 값으로 설정합니다.

    • Standard Edition: 1일.

    • Enterprise Edition 이상: 5일.

Snowflake에서는 DATA_RETENTION_TIME_IN_DAYS 값을 수동으로 변경할 수 없습니다. 값을 변경하려면 메타데이터 파일에서 history.expire.max-snapshot-age-ms 를 업데이트한 다음 테이블을 새로 고쳐야 합니다.

Time Travel

Snowflake Time Travel 을 사용하면 테이블의 과거 데이터를 쿼리할 수 있습니다.

Snowflake 관리 테이블을 Snowflake Open Catalog 와 동기화하기 또는 Snowflake Catalog SDK 를 사용할 때 서드 파티 컴퓨팅 엔진을 사용하여 Snowflake가 관리하는 테이블에서 time travel 쿼리를 수행할 수도 있습니다.

데이터 보존 기간 내에 커밋된 모든 스냅샷을 쿼리할 수 있습니다. 데이터 보존 기간을 지정하려면 DATA_RETENTION_TIME_IN_DAYS 오브젝트 매개 변수를 설정합니다.

테이블 데이터를 삭제하거나 테이블을 삭제하면 Snowflake는 테이블 보존 기간이 만료된 후 오브젝트를 삭제합니다. 이로 인해 테이블의 수명보다 더 오랫동안 클라우드 저장소 공급자에서 비용이 발생할 수 있습니다.