셀 수준 TTL 시뮬레이션
Bigtable에서 가비지 컬렉션 정책은 column family 수준에서 설정되며 개발자는 셀 수준 가비지 컬렉션 정책을 지정할 수 없습니다. 하지만 가비지 컬렉션 설정을 변경하여 셀 수준에서 TTL(수명) 정책�� 시뮬레이션할 수 있습니다. 이 페이지에서는 사용 가능한 몇 가지 방식을 설명합니다.
이 페이지를 읽기 전에 가비지 컬렉션 개요를 읽어야 합니다. 타임스탬프가 포함된 쓰기 요청을 보내는 방법은 Bigtable 쓰기를 참조하세요.
1초 만료
이 방식에서는 1초 후에 데이터가 만료되도록 가비지 컬렉션 규칙을 설정합니다. 데이터를 쓸 때마다 셀의 타임스탬프를 값 만료 시간으로 설정합니다. 압축하는 동안 Bigtable은 1초 이상 지난 타임스탬프가 있는 모든 셀을 삭제합니다. 예를 들어 셀의 타임스탬프를 4월 30일 오전 9:00:00으로 설정하면 4월 30일 오전 9:00:01 이후의 셀은 삭제됩니다. 이 방식을 통해 같은 column family에 있는 다양한 셀에 서로 다른 만료 값을 설정할 수 있습니다.
1초 만료의 장점
- 타임스탬프가 실제 만료 시간입니다.
1초 만료의 단점
이 Bigtable Column Family에 데이터를 쓰는 모든 애플리케이션이 이 규칙을 따르도록 구성해야 합니다. 이를 잊어버리고 쓰기에 기본 서버 타임스탬프를 사용하면 데이터가 즉시 만료되고 다음 압축 시에 삭제됩니다.
타임스탬프가 '실제'가 아니므로 타임스탬프를 다른 사용 사례(예: 값을 쓴 시간 확인)에 사용할 수 없습니다. 이 문제를 해결하기 위해 별도의 열에 실제 타임스탬프를 기록할 수 있지만 이렇게 하면 저장되는 데이터 양이 증가합니다.
실제 타임스탬프가 있는 데이터가 이미 있는 Column Family에서는 이 방식을 구현할 수 없습니다. 기존 데이터에 실제 타임스탬프가 있거나 실수로 실제 타임스탬프가 있는 새 데이터를 쓰면 데이터가 다음 압축 시에 삭제됩니다.
제공된 행과 열의 여러 셀이 동시에 만료되도록 지정할 수 없습니��. 새 데이터는 동일한 타임스탬프를 가진 이전 데이터를 덮어씁니다.
가비지 컬렉션에 최대 일주일이 소요될 수 있으므로 데이터를 읽을 때는 항상 필터를 사용해야 합니다.
기본 만료
대부분의 데이터에 기본 TTL이 있기를 원하지만 일부 데이터에 셀 기준 만료 값을 다르게 설정한다고 가정합니다.
예를 들어 고객 10명의 클릭 이벤트를 테이블 한 개에 저장할 수 있습니다. 대부분의 클릭 이벤트는 2일 후에 만료되지만 1시간 후에 클릭 이벤트가 만료되는 고객이 1명 있고 3일 후에 만료되는 고객이 1명 있습니다.
이 방식에서는 가비지 컬렉션의 저장기간 제한을 기본 TTL로 설정하여 column family를 만듭니다. 데이터를 기본값보다 빨리 만료시키려면 타임스탬프를 데이터의 실제 쓰기 시간보다 이��� 시간으로 설정합니다. 데이터를 나중에 만료시키려면 데이터의 실제 쓰기 시간보다 늦은 시간으로 타임스탬프를 설정합니다.
기본 만료의 장점
커스텀 TTL이 없는 쓰기에는 기본 TTL이 사용됩니다.
기존 테이블에 안전하게 적용할 수 있는 방식입니다.
기본 만료의 단점
셀의 타임스탬프가 실제이거나 인위적일 수 있으므로 타임스탬프에는 의미가 없습니다. 즉, 셀의 타임스탬프를 다른 사용 사례(예: 값을 쓴 시간 확인)에 사용할 수 없습니다. 이 문제를 해결하기 위해 별도의 열에 실제 타임스탬프를 기록할 수 있지만 이렇게 하면 저장되는 데이터 양이 증가합니다.
제공된 열의 실제 타임스탬프와 충돌하는 커스텀 타임스탬프를 실수로 쓸 수 있습니다.
가비지 컬렉션은 비동기식이므로 이 방식으로 데이터를 읽을 때는 항상 필터를 사용해야 합니다.
다음 단계
- 타임스탬프가 순차 번호인 가비지 컬렉션 알아보기
- 항상 열의 최근 값을 읽는 전략 알아보기
- 가비지 컬렉션 구성 방법을 보여주는 코드 샘플 검토하기
- 스토리지 가격 자세히 알아보기