1. Iceberg에서 Tagging의 개념
Iceberg의 Tag는 특정 시점의 스냅샷을 이름 기반으로 고정 보존할 수 있는 기능입니다.
- 스냅샷: 테이블의 특정 시점 상태 (데이터 파일 목록 + 메타데이터)
- 태그(Tag): 스냅샷에 붙이는 사용자 정의 라벨
- 목적: 보존(retention) 정책에서 제외하거나, 특정 분석/재처리를 위해 고정 시점 참조
ALTER TABLE db.table
CREATE TAG `month_end_202507`
AS OF VERSION 4151342690114749344
RETAIN 365 DAYS;
- AS OF VERSION : 특정 스냅샷 버전 지정
- RETAIN : 이 태그를 최소 며칠 동안 보존할지 설정 (만료 보호 기간)
2. Expire Snapshots와 Tagging의 상호작용
보통 Iceberg 테이블은 expire_snapshots 명령어를 주기적으로 실행하여
오래된 스냅샷과 관련 파일(데이터, 매니페스트)을 정리합니다.
ALTER TABLE db.table
EXECUTE expire_snapshots(retention_threshold => '7d');
동작 원리
- retention_threshold보다 오래된 스냅샷을 삭제
- 단, Tag나 Branch가 참조 중인 스냅샷은 삭제 제외
즉, 태그가 달린 스냅샷은 expire 대상에서 제외됩니다.
3. 태그 기반 Expire 제외 전략
대표 시점 보존
- 월말/분기말/연말 등 대표 시점 스냅샷에 태그를 걸어 보존
- 일반 스냅샷은 7일~30일 단위로 expire
- 태그가 붙은 스냅샷만 장기 보존 (예: 1년)
-- 매일 만료 실행 (최근 7일 유지)
ALTER TABLE db.table EXECUTE expire_snapshots(retention_threshold => '7d');
-- 월말 스냅샷 보존
ALTER TABLE db.table
CREATE TAG `month_end_202507`
AS OF VERSION <snapshot_id>
RETAIN 365 DAYS;
4. Trino에서 태그 기반 조회
Trino는 Iceberg tag name을 직접 지정할 수 있습니다.
SELECT *
FROM table_name
FOR VERSION AS OF 'month_end_202507';
- 'month_end_202507' → snapshot_id가 아니라 태그명 (문자열 일시)
- Trino 엔진이 Iceberg 메타스토어에서 해당 태그가 가리키는 snapshot_id를 찾아서 실행
반응형
'Tools > Iceberg' 카테고리의 다른 글
Trino 쿼리를 통한 Iceberg 내부 살펴보기 (2) | 2025.07.31 |
---|---|
Apache Iceberg 기본 동작 확인 및 실습 정리 (0) | 2025.07.06 |
Apache Iceberg 기본 구조 (0) | 2025.01.16 |