Snowflake

[Snowflake] Snowflake Time Travel 이해 및 사용하기

JustJunsu 2024. 10. 25. 20:39
728x90

Snowflake의 Time Travel 기능을 사용하면 일정 기간 내에 변경된 데이터나 삭제된 데이터에 접근할 수 있습니다. 이를 통해 과거 데이터 복원, 데이터 백업, 실수로 삭제된 데이터 복구 등이 가능합니다.

1. Snowflake Time Travel 소개

Time Travel은 Snowflake의 데이터 보호 수명 주기의 일부로, 다음과 같은 작업을 지원합니다:

  • 삭제된 테이블, 스키마, 데이터베이스 복원
  • 과거의 특정 시점에 대한 데이터 복제본 생성
  • 주요 시점의 데이터를 쿼리하여 변경 내역 분석

2. Time Travel SQL 확장 및 구문

Time Travel을 사용하려면 AT 및 BEFORE 구문을 활용합니다:

SELECT * FROM my_table AT(TIMESTAMP => 'YYYY-MM-DD HH:MM:SS');​
  • TIMESTAMP: 특정 시점의 데이터 확인
  • OFFSET: 현재로부터 지정한 초 단위의 차이만큼 과거 데이터 확인
  • STATEMENT: 쿼리 ID를 사용하여 특정 문 이후 상태 확인

3. 데이터 보존 기간 설정하기

기본 보존 기간은 1일이며, Enterprise Edition에서는 최대 90일까지 설정 가능합니다.

ALTER TABLE my_table SET DATA_RETENTION_TIME_IN_DAYS = 30;​

4. 과거 데이터 쿼리하기 예제

Time Travel을 사용하면 지정된 시간 또는 쿼리 ID를 기반으로 과거 데이터를 쿼리할 수 있습니다:

SELECT * FROM my_table AT(TIMESTAMP => '2024-01-01 00:00:00'); 
SELECT * FROM my_table AT(OFFSET => -3600); -- 1시간 전 데이터 
SELECT * FROM my_table BEFORE(STATEMENT => 'query_id');​

5. 과거 데이터 복제하기 예제

과거의 테이블 복제본을 생성하여 백업을 만들 수 있습니다:

CREATE TABLE restored_table CLONE my_table AT(TIMESTAMP => '2024-01-01 00:00:00');​

6. 삭제된 오브젝트 복원하기

삭제된 오브젝트를 복원할 수 있으며, 이를 통해 실수로 삭제한 테이블을 쉽게 복구할 수 있습니다.

DROP TABLE my_table;
UNDROP TABLE my_table;

7. 예제: 테이블 여러 차례 삭제 및 복원하기

아래는 테이블을 여러 번 삭제하고 복원하는 과정을 보여주는 예제입니다:

  1. 테이블 loaddata1을 두 번 삭제하고 다시 생성하여 세 가지 버전을 만듭니다.
  2. UNDROP을 통해 각 삭제 버전을 순서대로 복원합니다.
CREATE TABLE loaddata1 (col1 NUMBER); INSERT INTO loaddata1 VALUES (1111), (2222); 

-- 첫 번째 삭제 
DROP TABLE loaddata1; 

-- 테이블 다시 생성 
CREATE TABLE loaddata1 (col1 VARCHAR); 
INSERT INTO loaddata1 VALUES ('data1'), ('data2'); 

-- 두 번째 삭제 
DROP TABLE loaddata1; 

-- 최신 버전의 테이블 복원 
UNDROP TABLE loaddata1; 

-- 이름 변경 후 첫 번째 삭제된 버전 복원 
ALTER TABLE loaddata1 RENAME TO loaddata2; 
UNDROP TABLE loaddata1;​

 

SHOW TABLES HISTORY로 삭제된 테이블의 모든 버전과 삭제 시점을 확인할 수 있습니다:

SHOW TABLES HISTORY;​

7. 결론

Snowflake의 Time Travel 기능을 자세히 다루고, 복원과 데이터 보존 설정 등을 쉽게 활용해 보았습니다. 이제 Time Travel을 통해 데이터 복구와 백업이 필요할 때 적절하게 사용할 수 있습니다.

 

Reference

https://docs.snowflake.com/ko/user-guide/data-time-travel

 

Time Travel 이해 및 사용하기 | Snowflake Documentation

Time Travel을 사용하면 정의된 기간 내에 다음과 같은 작업을 수행할 수 있습니다. 정의된 기간이 경과된 후, 데이터는 Snowflake Fail-safe 로 이동되며 이러한 작업을 더 이상 수행할 수 없습니다. 참

docs.snowflake.com

 

728x90