Chapter 6. Time Travel

Snowflake SE·2024년 12월 27일
0

Zero to Snowflake

목록 보기
11/21

1. Time Travel 개요

Snowflake는 별도의 백업을 수행하지 않고도 사용자의 실수에 의한 데이터 유실에 대해서도 복원이 가능한 Time Travel 기능을 제공하고 있습니다.

  1. 기능
    • MVCC (Multi-version Concurrency Control) 방식
    • 데이터 변경 내역이 snapshot으로 기록
    • 이전 버전의 데이터 자동 관리
    • 테이블, 스키마, 데이터베이스에 대한 UNDROP 명령어 지원
  2. SQL 확장
    • SELECT 구문에 AT 또는 BEFORE 추가
    • CLONE 구문에 AT 또는 BEFORE 추가
  3. 사용 사례
    • 사용자 실수나 삭제된 데이터 복원
    • 과거 특정 시점 데이터 복제 및 백업
    • 특정 기간 내 데이터 사용 및 변경 내용 분석
      타임트래블

2. Time Travel 설정 파라매터

  • Time Travel의 기본값은 1(단위:일)입니다
  • Standard Edition은 0또는 1을 설정할 수 있습니다
  • Enterprise 이상의 Edition에서는 0부터 90까지 설정할 수 있습니다
  • Time Travel 파라매터는 테이블 단위, 스키마 단위, 데이터베이스 단위, 어카운트 단위로 설정할 수 있습니다
    -- account
    alter account set MIN_DATA_RETENTION_TIME_IN_DAYS = 5 ;
    
    -- database
    create database mydata     DATA_RETENTION_TIME_IN_DAYS = 5 ;
    alter  database mydata set DATA_RETENTION_TIME_IN_DAYS = 5 ;
    
    -- schema
    create schema myschema     DATA_RETENTION_TIME_IN_DAYS = 5 ;
    alter  schema myschema set DATA_RETENTION_TIME_IN_DAYS = 5 ;
    
    -- table
    create table mytable ( [column_list] ) DATA_RETENTION_TIME_IN_DAYS = 5 ;
    alter  table mytable               set DATA_RETENTION_TIME_IN_DAYS = 5 ;

파라매터


3. Time Travel 사용

  • 과거 데이터 조회

    --------------------------------
    set QID   = last_query_id();
    set CTIME = current_timestamp ;
    --------------------------------
    SELECT * FROM my_table     AT ( TIMESTAMP => $CTIME::timestamp_tz ) ;
    SELECT * FROM my_table     AT ( OFFSET    => -60*5 ) ; -- 5 min ago
    SELECT * FROM my_table BEFORE ( STATEMENT => $QID  ) ;
  • 과거 오브젝트 복제

    // 클론 이용
    CREATE TABLE    restored_table  CLONE my_table      AT ( TIMESTAMP => $CTIME::timestamp_tz ) ;
    CREATE SCHEMA   restored_schema CLONE my_schema     AT ( OFFSET    => -3600 ) ; -- 1 hour ago
    CREATE DATABASE restored_db     CLONE my_db     BEFORE ( STATEMENT => $QID  ) ;
  • Drop된 오브젝트 복원

    // 테이블, 스키마, 데이터베이스 단위
    UNDROP TABLE    my_table  ;  
    UNDROP SCHEMA   my_schema ; 
    UNDROP DATABASE my_db     ;

4. Fail-Safe

Snowflake에서는 Time-travel로 데이터를 복원할 수 있는 기능 외에 과거 데이터를 보호하기 위해 추가적인 저장 공간을 가지고 있습니다. 하드웨어 장애나 보안 위반과 같은 시스템 장애 또는 기타 치명적인 이벤트 발생 시 데이터를 보호하는 기능으로서 Fail-Safe 공간을 제공하고 있습니다.

  1. Fail-safe 동작
    • Time Travel 기간이 만료되면, 해당 데이터는 Fail-Safe로 이동
    • 7일간 데이터 보존 (변경 불가능)
  2. Fail-safe 데이터 접근
    • Time Travel 오퍼레이션 사용 불가능
    • 일반 사용자의 접근 불가능
    • 케이스 오픈 시 Snowflake 기술 지원팀에서 데이터 복구
  3. Fail-safe 사용량 모니터링
    • Billing 메뉴에서 Fail-safe 사용량 확인
      Fail-Safe
profile
Snowflake Korea SE

0개의 댓글