본문 바로가기
개발/AWS

DynamoDB TTL 설정하기

by 문둘기 2019. 12. 5.

DynamoDB에서 기본제공해주는 TTL(Time To Live)은 데이터를 자동으로 삭제해주는 기능이다
TTL을 epoch 시간 값으로 저장하면 그 시간이 지났을때, 48시간내에 해당데이터가 삭제된다 

직접 해보면 이해가 더 잘된다. 

 

먼저 test라는 테이블을 만들자 

 

아직 데이터는 하나도 넣지않은상태이다

그다음 테이블 세부정보화면에 

TTL(Time to live) 속성 에서 TTL 관리를 누른다 

 

TTL 속성칸에 본인이 TTL을 걸고싶은 속성명을 입력하면된다 

나는 deleteTime 을 입력했다

 

 

TTL이 적용됐다

 

이제 항목으로가서 항목만들기를 누르고 데이터를 넣어보자

TTL은 epoch 시간 값을 넣어야한다

나는 이렇게 데이터를 저장했다.

 

deleteTime 속성에 (TTL) 이 자동으로 붙었다 TTL 속성이라는 뜻이다

 

마우스를 대면 이렇게 데이터가 만료되는 시간을 알려준다,

createTime은 19년 12월 5일 1시 28분이고 
deleteTime은 19년 12월 6일 1시28분이다 (1일후 만료)

나는 1일후에 데이터가 삭제되기를 원했기 때문에 현재시간+1일의 값을 deleteTime에 입력한것이다 
이런식으로 해당 데이터가 삭제되길원하는 시간을 TTL속성에 입력하면 내가 따로 주기적으로 삭제할필요없이 자동으로 삭제된다

하지만 시간이 지나자마자 바로 칼같이 삭제되는게아니다, 환경에 따라 다르며 보통 48시간이내에 삭제된다고한다 
값이 삭제되기전에는 읽기,스캔,쿼리등의 작업에서 값이 계속 표시되는 문제가있다

그렇기 때문에 공식문서에서는 

만료 시간과 삭제 시간 사이에 지연이 있을 수 있기 때문에 항목을 쿼리할 때 항목이 만료될 수 있습니다. 읽기 요청을 실행할 때 만료된 항목을 볼 필요가 없으면 필터링해야 합니다. 이렇게 하려면 TTL(Time To Live) 만료 값이 epoch 형식의 현재 시간보다 클 경우에만 항목을 반환하는 필터 표현식을 사용합니다

이렇게 TTL속성값이 현재시간보다 클경우에만 반환하게끔 필터링하는것을 권장하고있다 

 

당연한소리지만  TTL값이 없는 2번 데이터는 자동으로 삭제되지않고 계속남아있게된다

 

12/7 에 확인한 결과 TTL이 없는 2번데이터만 남아있었다.  TTL이 만료된 1번데이터는 정상적으로 삭제되었다.