최근 값만 유지

이 페이지에서는 Bigtable 테이블의 열에서 최근 값만 유지할 수 있게 해주는 전략을 설명합니다.

모든 Cloud Bigtable 클라이언트 라이브러리에서 필터를 사용하여 특정 행과 열의 최근 값이나 을 읽을 수 있습니다. 그러나 경우에 따라 이전 버전의 데이터는 전혀 읽지 않아도 됩니다. 열에 셀을 하나만 유지하도록 지정하는 버전 기반 가비지 컬렉션 정책을 사용할 수 있지만, 가비지 컬렉션이 수행되려면 최대 일주일이 소요될 수 있으므로 실제로 테이블에 읽을 계획이 없는 오래된 데이터가 포함될 수 있습니다.

최신 값만 유지하려면 삭제 후 쓰기 방식을 사용하여 테이블의 열을 셀 하나로만 제한하는 것이 좋습니다.

삭제 후 쓰기

열에 값을 하나만 유지하려면 열을 삭제하는 요청을 보낸 후 하나의 원자적 동작에서 새 값과 타임스탬프를 사용하여 다시 만들면 됩니다.

다음 자바 의사코드 예시는 작동 방식을 보여줍니다. 순서가 중요합니다. 삭제는 쓰기 전에 수행되어야 합니다.

RowMutation mutation = RowMutation.create(TABLE, ROW_KEY)
                .deleteCells(COLUMN_FAMILY, COLUMN_QUALIFIER, Range.TimestampRange.unbounded())
                .setCell((COLUMN_FAMILY, COLUMN_QUALIFIER, TIMESTAMP, VALUE);
dataClient.mutateRow(mutation);

다음을 제공합니다.

  • TABLE: 테이블 ID
  • COLUMN_FAMILY: 열이 포함된 column family
  • COLUMN_QUALIFIER: 삭제하고 다시 만들 column qualifier
  • TIMESTAMP: 새 타임스탬프
  • VALUE: 열의 새 값

영(0) 타임스탬프

이전에는 항상 타임스탬프가 0인 쓰기를 보내는 전략이 권장되었습니다. 이 방식을 계속 사용할 수 있지만, 유효한 타임스탬프가 유용하므로 삭제 후 쓰기 방식을 대신 사용하는 것이 좋습니다.

셀의 타임스탬프를 0으로 설정하거나 현재 시간보다 작은 값(밀리초 단위)으로 설정하고 연령별 가비지 컬렉션 정책도 사용하는 경우 다음에 가비지 컬렉션이 발생할 때 셀이 삭제될 수 있습니다.

다음 단계