Simule o TTL ao nível da célula

No Bigtable, as políticas de recolha de lixo são definidas ao nível da família de colunas e não pode especificar uma política de recolha de lixo ao nível da célula. No entanto, pode simular uma política de tempo de vida (TTL) ao nível da célula alterando as definições de recolha de lixo. Esta página explica algumas abordagens diferentes que pode usar.

Antes de ler esta página, deve ler a vista geral da recolha de lixo. Para saber como enviar pedidos de gravação, que incluem datas/horas, consulte o artigo Gravações do Bigtable.

Expiração de um segundo

Nesta abordagem, defina a regra de recolha de lixo para que os dados expirem após um segundo. Sempre que escrever dados, defina a data/hora da célula para a hora em que quer que o valor expire. Durante a compactação, o Bigtable elimina todas as células que tenham uma data/hora que seja, pelo menos, um segundo anterior. Por exemplo, se definir a data/hora de uma célula para 30 de abril às 09:00:00, a célula é eliminada algum tempo depois de 30 de abril às 09:00:01. Esta abordagem permite-lhe definir valores de validade diferentes para diferentes células na mesma família de colunas.

Vantagens da expiração de um segundo

  • A indicação de data/hora tem um significado real: a hora de validade.

Desvantagens da expiração de um segundo

  • Todas as aplicações que escrevem dados nesta família de colunas do Bigtable têm de ser configuradas para seguir esta regra. Se se esquecer e usar uma indicação de tempo do servidor predefinida numa gravação, esses dados expiram imediatamente e são eliminados durante a próxima compactação.

  • Uma vez que as suas datas/horas não são "reais", não pode usá-las para nenhum outro exemplo de utilização, como determinar quando um valor foi escrito. Como solução alternativa, pode escrever a data/hora real numa coluna separada, mas isto aumenta a quantidade de dados que armazena.

  • Não pode implementar esta estratégia numa família de colunas que já tenha dados com indicações de tempo reais. Se os dados existentes tiverem datas/horas reais ou se escrever acidentalmente novos dados com datas/horas reais, esses dados são eliminados durante a próxima compactação.

  • Não pode especificar que várias células de uma determinada linha e coluna devem expirar ao mesmo tempo. Os novos dados substituem os dados antigos com a mesma data/hora.

  • Uma vez que a recolha de lixo pode demorar até uma semana, tem sempre de usar filtros quando lê os dados.

Validade predefinida

Suponhamos que quer que a maioria dos seus dados tenha um TTL predefinido, mas quer definir valores de expiração diferentes por célula para alguns dos seus dados.

Por exemplo, pode armazenar eventos de cliques de dez clientes numa tabela. A maioria dos eventos de clique deve expirar após 2 dias, mas tem um cliente cujos eventos de clique devem expirar após uma hora e outro cliente cujos eventos de clique devem expirar após 3 dias.

Nesta abordagem, crie a sua família de colunas com um limite de idade para a recolha de lixo definido como o TTL predefinido. Para dados que quer que expirem mais cedo do que o predefinido, defina a data/hora para um momento anterior ao momento em que os dados são efetivamente escritos. Para os dados que quer que expirem mais tarde, defina a data/hora para uma data/hora posterior à data/hora em que os dados são efetivamente escritos.

Vantagens da validade predefinida

  • Existe um TTL predefinido para gravações que não têm um TTL personalizado.

  • Esta abordagem pode ser aplicada com segurança a uma tabela pré-existente.

Desvantagens da validade predefinida

  • A data/hora não é semanticamente significativa porque a data/hora de uma célula pode ser real ou artificial. Isto significa que não pode usar as datas/horas das células para qualquer outro exemplo de utilização, como determinar quando um valor foi escrito. Como solução alternativa, pode escrever a indicação de tempo real numa coluna separada, mas isto aumenta a quantidade de dados que armazena.

  • Pode escrever inadvertidamente uma data/hora personalizada que entre em conflito com uma data/hora real numa determinada coluna.

  • Uma vez que a recolha de lixo é assíncrona, continua a ter de usar sempre filtros quando lê os dados quando usa esta estratégia.

O que se segue?