Gerencie a retenção de dados com políticas TTL

Esta página descreve como usar o Console do Google Cloud Platform e a CLI do Google Cloud para configurar políticas de tempo de vida (TTL). Antes de ler esta página, você deve entender o modelo de dados do Cloud Firestore .

Visão geral do tempo de vida

Use políticas de tempo de vida (TTL) para remover automaticamente dados obsoletos de seus bancos de dados. Uma política TTL designa um determinado campo como o prazo de validade para documentos em um determinado grupo de coleta. Com o TTL, você pode diminuir os custos de armazenamento limpando dados obsoletos. Os dados normalmente são excluídos 24 horas após a data de expiração.

Preços

As operações de exclusão de TTL contam para os custos de exclusão de documentos. Para preços de operações de exclusão, consulte Preços do Cloud Firestore .

Limites e restrições

  • Apenas um campo por grupo de coleções pode ser marcado como campo TTL.
  • São permitidas um total de 200 configurações em nível de campo. Uma configuração de campo pode conter diversas configurações para o mesmo campo. Por exemplo, uma isenção de indexação de campo único e uma política de TTL no mesmo campo contam como uma configuração de campo para o limite.
  • Para clientes do modo Firestore no modo Datastore, o TTL não pode ser usado com um modo de simultaneidade de Optimistic With Entity Groups . Considere alterar o modo de simultaneidade seguindo isto .

Exclusão de TTL

Observe os seguintes comportamentos principais de exclusão orientada por TTL:

  • A exclusão por meio de TTL não é um processo instantâneo. Os documentos expirados continuam a aparecer em consultas e solicitações de pesquisa até que o processo TTL os exclua. A TTL negocia a oportunidade de exclusão em benefício da redução do custo total de propriedade para exclusões. Os dados normalmente são excluídos 24 horas após a data de expiração.

  • Excluir um documento por meio de TTL não exclui subcoleções desse documento.

  • A aplicação de uma política TTL num grupo de recolha existente resulta numa eliminação em massa de todos os dados que expiraram de acordo com a nova política TTL. Observe que essa exclusão em massa também não é instantânea e depende da quantidade de dados existentes para esse grupo de coleta.

  • Se um documento tiver um prazo de validade no passado e você adicionar uma nova política de ttl à coleção, o documento será excluído dentro de 24 horas após a conclusão da configuração da política de ttl e de sua ativação.

  • O TTL não exclui necessariamente documentos na mesma ordem que seus carimbos de data e hora de expiração.

  • As exclusões não são feitas transacionalmente. Documentos com o mesmo prazo de validade não são necessariamente excluídos ao mesmo tempo. Se você precisar desse comportamento, execute as exclusões usando uma biblioteca cliente.

  • O Cloud Firestore sempre respeitará o campo TTL mais recente para determinar a expiração. Por exemplo, se um documento expirado, mas ainda não excluído, tiver seu campo TTL atualizado para uma data posterior, o documento não expirará e a nova data será usada.

  • O TTL foi projetado para minimizar o impacto em outras atividades do banco de dados. As exclusões conduzidas por TTL são tratadas com prioridade mais baixa. Outras estratégias também estão em vigor para suavizar os picos de tráfego decorrentes de exclusões acionadas por TTL.

  • A exclusão por meio de TTL chama todos os listeners de snapshot ativos e aciona gatilhos do Cloud Functions Cloud Firestore.

Campos e índices TTL

Um campo TTL pode ser indexado ou não indexado. Entretanto, como um campo TTL é um carimbo de data/hora, a indexação do campo pode afetar o desempenho em taxas de tráfego mais altas. A indexação de um campo de carimbo de data/hora pode criar pontos de acesso que vão contra as práticas recomendadas. Os pontos de acesso apresentam altas taxas de leitura, gravação e exclusão em uma faixa restrita de documentos.

Por padrão, o Cloud Firestore cria um índice de campo único para todos os campos. Você pode criar uma isenção de índice de campo único para desabilitar índices em um campo TTL.

Permissões

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

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

Para funções que atribuem essas permissões, consulte Funções do Cloud Firestore Identity and Access Management .

Antes de você começar

Antes de usar a CLI gcloud para gerenciar políticas 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 TTL

Ao criar uma política de TTL, você designa um campo de documento como o prazo de validade para documentos em um grupo de coleta.

O TTL usa um campo especificado para identificar documentos elegíveis para exclusão. Este campo TTL deve ser do tipo Date and time . Você pode selecionar um campo que já existe ou designar um campo que planeja adicionar posteriormente.

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 um momento no passado, o documento será imediatamente elegível para exclusão. Por exemplo, você pode criar uma política TTL com o campo expireAt , que você adiciona aos documentos existentes.

  • Usar qualquer outro tipo de dados ou não definir o valor do campo TTL desativará o TTL do documento individual.

Siga as etapas abaixo para criar uma política TTL:

Console do Google Cloud

  1. No console do Google Cloud Platform, acesse a página Bancos de dados .

    Vá para bancos de dados

  2. Selecione o banco de dados necessário na lista de bancos de dados.

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

  4. Clique em Criar política .

  5. Insira um nome de grupo de coleta e um nome de campo de carimbo de data/hora.

  6. Clique em Criar .

O console retorna para a página Tempo de vida . Se a operação for iniciada com êxito, a página adicionará uma entrada à tabela de políticas TTL. Em caso de falha, a página exibe uma mensagem de erro.

gcloud

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

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

Mesmo em um banco de dados vazio, pode levar dez minutos ou mais para habilitar uma política TTL. Depois de iniciar uma operação, fechar o terminal não cancela a operação.

Ver políticas de TTL

Siga as etapas abaixo para visualizar as políticas de TTL e seus status.

Console do Google Cloud

  1. No console do Google Cloud Platform, acesse a página Bancos de dados .

    Vá para bancos de dados

  2. Selecione o banco de dados necessário na lista de bancos de dados.

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

O console lista as políticas TTL do seu banco de dados e inclui o status de cada política.

gcloud

Use o comando firestore fields ttls list para configurar uma política TTL. O comando a seguir lista todas as políticas TTL.

   gcloud firestore fields ttls list
   

Para listar políticas TTL em um grupo de coleta específico, use o seguinte:

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

Ver detalhes da operação

Você pode usar a CLI gcloud para visualizar mais detalhes sobre uma política TTL que está 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.

Desabilitar uma política TTL

Siga as etapas abaixo para desabilitar uma política TTL.

Console do Google Cloud

  1. No console do Google Cloud Platform, acesse a página Bancos de dados .

    Vá para bancos de dados

  2. Selecione o banco de dados necessário na lista de bancos de dados.

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

  4. Na tabela de políticas TTL, encontre a linha da política TTL. Dentro desta linha da tabela, clique no botão Excluir (lixeira).

  5. Confirme clicando em Excluir .

O console retorna para a página Tempo de vida . Em caso de sucesso, o Cloud Firestore remove a política de TTL da tabela.

gcloud

1. Use o comando firestore fields ttls update para configurar uma política TTL. Adicione a sinalização --async para evitar que a CLI gcloud aguarde a conclusão da operação.

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

Monitore exclusões de TTL

Você pode usar o Cloud Monitoring para visualizar métricas sobre exclusões baseadas em TTL. O Cloud Firestore fornece as seguintes métricas para TTL:

firestore.googleapis.com/document/ttl_deletion_count Contagem de exclusão de tempo de vida

Contagem total de documentos excluídos por políticas de tempo de vida (TTL).

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Expiração do tempo de vida para atrasos na exclusão

Tempo decorrido entre o momento em que um documento expirou sob uma política de tempo de vida (TTL) e o momento em que foi realmente excluído.

Para configurar um painel com métricas do Cloud Firestore, consulte gerenciar painel personalizado e adicionar widgets de painel .