Faça a gestão da retenção de dados com políticas de TTL

Esta página descreve como usar a Google Cloud consola e a CLI Google Cloud para configurar políticas de tempo de vida (TTL).

Vista geral do tempo de vida

Use políticas de TTL para remover automaticamente dados desatualizados das suas bases de dados. Uma política de TTL designa um determinado campo como a hora de validade dos documentos numa determinada coleção. Com o TTL, pode diminuir os custos de armazenamento limpando os dados obsoletos. Normalmente, os dados são eliminados no prazo de 24 horas após a data de expiração.

Preços

As operações de eliminação de TTL contam para os custos de eliminação de documentos. Para saber os preços das operações de eliminação, consulte os preços da edição Enterprise do Firestore.

Limites e restrições

  • Só pode marcar um campo por coleção como um campo TTL.
  • Pode ter um máximo de 500 configurações de TTL ao nível do campo.

Eliminação de TTL

Tenha em atenção os seguintes comportamentos importantes da eliminação baseada no TTL:

  • A eliminação através do TTL não é um processo instantâneo. Os documentos expirados continuam a aparecer em consultas e pedidos de pesquisa até que o processo de TTL os elimine efetivamente. Pontualidade da eliminação de negociações de TTL para reduzir o custo total de propriedade das eliminações. Normalmente, os dados são eliminados no prazo de 24 horas após a data de expiração.

  • A aplicação de uma política de TTL numa recolha existente resulta numa eliminação em massa de todos os dados expirados de acordo com a nova política de TTL. Tenha em atenção que esta eliminação em massa também não é instantânea e depende da quantidade de dados existentes para essa recolha.

  • Se um documento tiver um tempo de expiração no passado e adicionar uma nova política de TTL à coleção, o documento é eliminado no prazo de 24 horas após a conclusão da configuração e a ativação da política de TTL.

  • O TTL não elimina necessariamente os documentos pela mesma ordem das respetivas datas/horas de expiração.

  • As eliminações não são feitas de forma transacional. Os documentos com o mesmo tempo de expiração não são necessariamente eliminados ao mesmo tempo. Se precisar deste comportamento, faça as eliminações através de uma biblioteca cliente.

  • O Firestore com compatibilidade com o MongoDB respeita sempre o campo TTL mais recente para determinar a expiração. Por exemplo, se um documento expirado, mas ainda não eliminado, tiver o campo TTL atualizado para uma data posterior, o documento não vai expirar e vai ser usada a nova data.

  • O Firestore com compatibilidade com o MongoDB faz expirar um documento apenas quando o campo TTL está definido para um tipo Date and time ou BSON Date. Deixe o campo em falta ou defina-o com um valor como null para desativar as expirações por documento.

  • O TTL foi concebido para minimizar o impacto noutras atividades da base de dados. As eliminações determinadas pelo TTL são tratadas com uma prioridade inferior. Também existem outras estratégias para suavizar os picos de tráfego de eliminações baseadas no TTL.

Campos e índices TTL

Um campo TTL pode ser indexado ou não indexado. No entanto, uma vez que um campo TTL é uma data/hora, a indexação do campo pode afetar o desempenho a taxas de tráfego mais elevadas. A indexação de um campo de indicação de tempo pode criar pontos críticos, o que vai contra as práticas recomendadas. Os pontos críticos são taxas de leitura, escrita e eliminação elevadas num intervalo de documentos restrito.

Autorizações

O principal que configura uma política de TTL requer a seguinte autorização no projeto:

  • A visualização das políticas de TTL requer as autorizações datastore.indexes.list e datastore.indexes.get.
  • A modificação das políticas de TTL requer a autorização datastore.indexes.update
  • A verificação do estado das operações de TTL requer datastore.operations.list e datastore.operations.get.

Para funções que atribuem estas autorizações, consulte Funções de gestão de identidade e de acesso do Firestore.

Antes de começar

Antes de usar a CLI gcloud para gerir políticas de TTL, use o comando gcloud components update para atualizar os componentes para a versão mais recente disponível:

gcloud components update

Crie uma política de TTL

Quando cria uma política de TTL, designa um campo de documento como a hora de expiração dos documentos numa coleção.

O TTL usa um campo especificado para identificar documentos elegíveis para eliminação. Este campo TTL tem de ser do tipo Timestamp ou BSON Date. Pode selecionar um campo que já exista ou designar um campo que planeia adicionar mais tarde.

Considere o seguinte antes de definir o valor do campo TTL:

  • O valor do campo TTL pode ser um momento no futuro, agora ou no passado. Se o valor for uma hora no passado, o documento é imediatamente elegível para eliminação. Por exemplo, pode criar uma política de TTL com o campo expireAt, que adiciona a documentos existentes.

  • A utilização de qualquer outro tipo de dados ou a não definição do valor do campo TTL desativa o TTL para o documento individual.

Para criar uma política de TTL, siga estes passos:

Consola do Google Cloud

  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Selecione a base de dados necessária na lista de bases de dados.

  3. No menu de navegação, clique em Tempo de vida.

  4. Clique em Criar política.

  5. Introduza um nome da coleção e um nome do campo de data/hora.

  6. Clique em Criar.

A consola regressa à página Tempo de vida. Se a operação for iniciada com êxito, a página adiciona uma entrada à tabela de políticas de TTL. Em caso de falha, a página apresenta uma mensagem de erro.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Use o comando firestore fields ttls update para configurar uma política de TTL. Adicione a flag --async para impedir que a CLI gcloud aguarde pela conclusão da operação.

     gcloud firestore fields ttls update
    ttl_field --collection-group=collection_name
    --enable-ttl 

Duração da ativação da política de TTL

Mesmo numa base de dados vazia, pode demorar dez minutos ou mais a ativar uma política de TTL. Depois de iniciar uma operação, o fecho do terminal não cancela a operação.

Veja as políticas de TTL

Para ver as políticas de TTL e os respetivos estados, siga estes passos:

Consola do Google Cloud

  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Selecione a base de dados necessária na lista de bases de dados.

  3. No menu de navegação, clique em Tempo de vida.

A consola apresenta as políticas de TTL da sua base de dados e inclui o estado de cada política.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Use o comando firestore fields ttls list para configurar uma política de TTL. O comando seguinte apresenta uma lista de todas as políticas de TTL.

    gcloud firestore fields ttls list
    

    Para listar as políticas de TTL numa coleção específica, use o seguinte:

    gcloud firestore fields ttls list  --collection-group=collection_name
    

Veja os detalhes da operação

Pode usar a CLI gcloud para ver mais detalhes acerca de uma política de TTL que se encontra no estado CREATING.

Use o comando operations list para ver todas as operações em execução e concluídas recentemente:

gcloud firestore operations list

A resposta inclui uma estimativa do progresso da operação.

Desative uma política de TTL

Para desativar uma política de TTL, siga estes passos:

Consola do Google Cloud

  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Selecione a base de dados necessária na lista de bases de dados.

  3. No menu de navegação, clique em Tempo de vida.

  4. Na tabela de políticas de TTL, encontre a linha da política de TTL. Nesta linha da tabela, clique no botão Eliminar (caixote do lixo).

  5. Confirme clicando em Eliminar.

A consola regressa à página Tempo de vida. Em caso de êxito, o Firestore com compatibilidade com o MongoDB remove a política de TTL da tabela.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Use o comando firestore fields ttls update para configurar uma política de TTL. Adicione a flag --async para impedir que a CLI gcloud aguarde pela conclusão da operação.

    gcloud firestore fields ttls update ttl_field --collection-group=collection_name --disable-ttl
    

Monitorize as eliminações de TTL

Pode usar o Cloud Monitoring para ver métricas sobre eliminações baseadas no TTL. O Firestore com compatibilidade com o MongoDB fornece as seguintes métricas para o TTL:

Tipo de métrica Nome da métrica Descrição da métrica
firestore.googleapis.com/document/ttl_deletion_count Contagem de eliminações de tempo de vida

Contagem total de documentos eliminados por políticas de TTL.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Tempo de expiração até aos atrasos na eliminação

Tempo decorrido entre a data de expiração de um documento ao abrigo de uma política de TTL e a data em que foi efetivamente eliminado.

Para configurar um painel de controlo com métricas de compatibilidade do Firestore com o MongoDB, consulte os artigos Faça a gestão do painel de controlo personalizado e Adicione widgets ao painel de controlo.