[Cassandra] 기존 table 에 TTL 을 추가하면 어떻게 될까?

  • 기존에 운영 중이던 테이블에 ttl 을 추가할 경우 어떻게 동작하는지 확인하기
    • 운영을 하다가 정책 변경 등으로 인해 테이블 변경이 있을 예정이라, 검증 겸 정리해봄
  • 테스트용 테이블
    CREATE TABLE temp_ttl_test (
      id text,
      value text,
      PRIMARY KEY (id)
    ) 
    
  • ttl 추가 전 데이터 추가

INSERT INTO temp_ttl_test (id,value) VALUES ('1', 'a');
INSERT INTO temp_ttl_test (id,value) VALUES ('2', 'b');

  • ttl 추가(gc_grace_seconds 도 같이 변경)
    • 1분 뒤 tombstone 이 추가되고, 2분 뒤 tombstone 데이터 제거처리
alter table temp_ttl_test with gc_grace_seconds = 120 and default_time_to_live = 60;
  • ttl 추가 후 데이터 insert
    INSERT INTO temp_ttl_test (id,value) VALUES ('3', 'c');
    
  • 데이터 조회쿼리
select * from temp_ttl_test;
  • ttl 도달 전 데이터 조회
     id | value
    ----+-------
    3 |     c
    2 |     b
    1 |     a
    
  • ttl 도달 후 데이터 조회
 id | value
----+-------
  2 |     b
  1 |     a
  • ttl 값 조회
    select ttl(value) from temp_ttl_test
    
 ttl(value)
------------
         45
       null
       null

Related Posts