Manter apenas o valor mais recente

Nesta página, descrevemos uma estratégia que permite manter apenas o valor mais recente em uma coluna de uma tabela do Bigtable.

Todas as bibliotecas de cliente do Cloud Bigtable permitem que você use filtros para ler o valor, ou célula, mais recente em uma determinada linha e coluna. Mas, em alguns casos, é possível que você nunca precise ler as versões mais antigas dos seus dados. É possível usar uma política de coleta de lixo baseada na versão que especifica manter apenas uma célula em uma coluna. Mas, na prática, como pode levar até uma semana para a coleta de lixo, sua tabela pode conter dados mais antigos que você nunca pretende ler.

Para manter apenas o valor mais recente, recomendamos usar uma abordagem de excluir, depois gravar para limitar as colunas na tabela a apenas uma célula.

Excluir, depois gravar

Para reter apenas um valor em uma coluna, envie uma solicitação que a exclua e depois a recrie com um novo valor e carimbo de data/hora em uma ação atômica.

O pseudocódigo em Java a seguir mostra como isso funciona. A ordem é importante: a exclusão precisa ocorrer antes da gravação.

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);

Preencha o seguinte:

  • TABLE: o ID da tabela
  • COLUMN_FAMILY: o grupo de colunas que contém a coluna
  • COLUMN_QUALIFIER: o qualificador de coluna a ser excluído e recriado
  • TIMESTAMP: o novo carimbo de data/hora
  • VALUE: o novo valor da coluna

Carimbo de data/hora de zero

Anteriormente, recomendamos uma estratégia de sempre enviar gravações com um carimbo de data/hora de 0. Ainda é possível usar essa abordagem, mas como os carimbos de data/hora válidos são úteis, recomendamos a abordagem de excluir, depois gravar.

Se você definir o carimbo de data/hora de uma célula como 0 ou qualquer valor menor que o horário atual em milissegundos e também usar uma política de coleta de lixo baseada em idade, sua célula poderá ser excluída na próxima vez que a coleta de lixo ocorrer.

A seguir