Simular o TTL no nível de célula

No Bigtable, as políticas de coleta de lixo são definidas no nível do grupo de colunas e não é possível especificar essa política no nível da célula. No entanto, é possível simular uma política de time to live (TTL, na sigla em inglês) no nível da célula alterando as configurações de coleta de lixo. Esta página explica algumas abordagens diferentes que podem ser usadas.

Antes de ler esta página, leia a visão geral da coleta de lixo. Para saber como enviar solicitações de gravação, que incluem carimbos de data/hora, consulte Gravações do Bigtable.

Expiração de um segundo

Nessa abordagem, defina a regra de coleta de lixo para permitir que os dados expirem após um segundo. Sempre que gravar dados, defina o carimbo de data/hora da célula para o horário em que o valor deverá expirar. Durante a compactação, o Bigtable exclui todas as células que têm um carimbo de data/hora que esteja pelo menos um segundo no passado. Por exemplo, se você definir o carimbo de data/hora de uma célula para 30 de abril às 9:00:00, a célula será excluída após as 9:00:01 de 30 de abril. Essa abordagem permite definir valores de expiração diferentes para células diferentes no mesmo grupo de colunas.

Vantagens da expiração de um segundo

  • O carimbo de data/hora tem um significado real, o tempo de expiração.

Desvantagens da expiração em um segundo

  • Todo aplicativo que grava dados nesse grupo de colunas do Bigtable precisa ser configurado para seguir essa regra. Se você esquecer e usar um carimbo de data/hora do servidor padrão em uma gravação, esses dados expirarão imediatamente e serão excluídos durante a próxima compactação.

  • Como os carimbos de data/hora não são "reais", não é possível usá-los para nenhum outro caso de uso, como determinar quando um valor foi gravado. Como solução alternativa, é possível gravar o carimbo de data/hora real em uma coluna separada, mas isso aumentará a quantidade de dados armazenados.

  • Não é possível implementar essa estratégia em uma família de colunas que já tenha dados com carimbos de data/hora reais. Se os dados atuais tiverem carimbos de data/hora reais, ou se você acidentalmente gravar novos dados com carimbos de data/hora reais, esses dados serão excluídos durante a próxima compactação.

  • Não é possível especificar que várias células de uma determinada linha e coluna devem expirar ao mesmo tempo. Novos dados substituirão dados antigos com o mesmo carimbo de data/hora.

  • Como a coleta de lixo pode levar até uma semana, será sempre necessário usar filtros ao ler os dados.

Expiração padrão

Digamos que você queira que a maioria dos dados tenha um TTL padrão, mas quer definir diferentes valores de expiração por célula para alguns destes dados.

Por exemplo, é possível armazenar eventos de clique para dez clientes em uma tabela. A maioria dos eventos de cliques deve expirar após dois dias, mas os eventos de clique de um dos clientes devem expirar após uma hora e os de outro cliente devem expirar após três dias.

Nessa abordagem, crie seu grupo de colunas com um limite de idade para a coleta de lixo definida como o TTL padrão. Para os dados que você quer que expirem antes do padrão, defina o carimbo de data/hora como anterior ao horário em que os dados foram gravados. Para os dados que você quer que expirem mais tarde, configure o carimbo de data/hora para depois do horário em que os dados são realmente gravados.

Vantagens da expiração padrão

  • Um TTL padrão está em vigor para gravações que não têm um TTL personalizado.

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

Desvantagens da expiração padrão

  • O carimbo de data/hora não é semanticamente significativo porque, para cada célula, ele pode ser real ou artificial. Isso significa que não é possível usar os carimbos de data/hora das células para nenhum outro caso de uso, como determinar quando um valor foi gravado. Como solução alternativa, é possível gravar o carimbo de data/hora real em uma coluna separada, mas isso aumentará a quantidade de dados armazenados.

  • É possível gravar, inadvertidamente, um carimbo de data/hora personalizado que entre em conflito com um carimbo de data/hora real em uma determinada coluna.

  • Como a coleta de lixo é assíncrona, ainda será necessário usar filtros ao ler os dados usando essa estratégia.

Próximas etapas