Visão geral do time to live (TTL)

O time to live (TTL) permite definir políticas para excluir periodicamente dados de Tabelas do Spanner. Remoção de dados desnecessários:

  • Diminui os custos de armazenamento e backup.
  • Reduz o número de linhas que o banco de dados precisa verificar para algumas consultas, potencialmente aumentando o desempenho da consulta.
  • Ajuda a cumprir as regulamentações ou diretrizes do setor que limitam a tempo de retenção em certos tipos de dados.

O TTL é ideal para atividades de limpeza regulares. Ele é executado continuamente em segundo plano, excluindo periodicamente dados qualificados em lotes. Normalmente, os dados são excluídos em até 72 horas após a data de validade. O TTL não invalida imediatamente os dados nem os oculta das consultas quando eles se tornam qualificados para exclusão. O TTL também não verifica os dados enquanto eles são inseridos, portanto não impede que você inserindo uma linha com um carimbo de data/hora expirado.

O TTL foi projetado para minimizar o impacto em outras atividades do banco de dados. Paraleliza o trabalho com mais eficiência do que as consultas do usuário final e inclui lógica de repetição para garantir a limpeza de ponta a ponta.

Outro processo de compactação em segundo plano recupera o armazenamento de linhas excluídas. geralmente em sete dias.

Como funciona o TTL?

Para definir o TTL nas tabelas do Spanner, defina uma exclusão de linha política no esquema do banco de dados, que permite ao Spanner e excluir periodicamente dados desnecessários. Cada tabela pode ter sua própria política. Só um A política de TTL pode ser especificada por tabela. Você configura o TTL de forma diferente para Bancos de dados de dialeto GoogleSQL e PostgreSQL.

TTL com GoogleSQL

Com o GoogleSQL, você define uma política de exclusão de linhas especificando um carimbo de data/hora e um intervalo para determinar quando uma linha está qualificada para exclusão por exemplo, a data da última atualização mais 30 dias.

Um processo do sistema em segundo plano verifica diariamente se há linhas qualificadas. Ele carrega em paralelo as exclusões reais em lotes executados perto de onde os dados são armazenados internamente. Cada lote é executado na própria transação em um carimbo de data/hora consistente. Assim, as linhas em um determinado lote, com todos os índices e filhos intercalados, têm a garantia de serem excluídas atomicamente. No entanto, as exclusões em lotes acontecem em diferentes transações.

Como esse é um processo assíncrono em segundo plano, há um atraso entre a qualificação e a exclusão. Normalmente, o atraso é inferior a 72 horas. Como resultado, as linhas podem permanecer na tabela por até três dias após o TTL ter expirado; por exemplo, uma tabela com uma política de exclusão de linhas que exclua as linhas mais antigas de quatro dias pode incluir linhas de até sete dias, assim como mais antigas, não elegíveis.

Para instruções detalhadas sobre como criar uma linha do GoogleSQL política de exclusão, consulte Criar uma política de TTL.

TTL com PostgreSQL

Com o PostgreSQL, um proprietário de banco de dados pode usar uma cláusula TTL INTERVAL em a instrução CREATE TABLE ou ALTER TABLE para definir uma política de exclusão de linhas.

Para definir uma política de exclusão de linhas em uma tabela do PostgreSQL, a tabela precisa ter uma coluna com o tipo de dados TIMESTAMPTZ. A cláusula TTL INTERVAL usa esta coluna para definir uma especificação de intervalo para quando uma linha estiver qualificada para exclusão.

A cláusula precisa ser avaliada como um número inteiro de dias. Por exemplo, '3 DAYS' é permitido, assim como '4 DAYS 2 MINUTES - 2 MINUTES', mas '4 DAYS 3 MINUTES' não é permitido, e um erro é retornado. Não é possível usar palavras-chave números grandes.

A coleta de lixo de TTL exclui linhas qualificadas continuamente e em segundo plano. Como esse é um processo em segundo plano assíncrono, há um atraso entre da qualificação e exclusão. A tabela pode conter linhas qualificadas para TTL exclusão, mas para a qual o TTL ainda não foi concluído. Normalmente, o atraso é menor mais de 72 horas.

Para instruções sobre como criar uma política de exclusão de linhas do PostgreSQL, consulte Criar uma política de TTL.

Backups e TTL

Restaurar um backup

Quando você restaura um banco de dados de um backup, todas as políticas de exclusão de linha configuradas no banco de dados de origem são descartadas automaticamente. Isso evita que o Spanner exclua os dados expirados assim que backup foi restaurado. Portanto, será necessário reconfigurar o TTL manualmente.

Consistência de dados

Um backup é um snapshot consistente dos dados com precisão um momento específico (version_time). O backup pode conter linhas que podem estar qualificados para exclusão do TTL, mas para o qual o TTL ainda não foi concluído. Da mesma forma, os jobs de exportação do Dataflow leem a tabela inteira em um carimbo de data/hora fixo.

Auditoria

O TTL oferece suporte à auditoria das exclusões por meio de fluxos de alteração. Os registros de dados de fluxos de alterações que rastreiam alterações de TTL em um banco de dados têm a Campo transaction_tag definido como RowDeletionPolicy e o Campo is_system_transaction definido como true. Os leitores de streams de alterações são filtrar todos os registros TTL ou todos os registros, exceto o TTL de acordo com o caso de uso. Veja um exemplo de como usar o Beam para filtrar tags de transação.