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
edatastore.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
edatastore.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
No console do Google Cloud Platform, acesse a página Bancos de dados .
Selecione o banco de dados necessário na lista de bancos de dados.
No menu de navegação, clique em Tempo de vida .
Clique em Criar política .
Insira um nome de grupo de coleta e um nome de campo de carimbo de data/hora.
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
No console do Google Cloud Platform, acesse a página Bancos de dados .
Selecione o banco de dados necessário na lista de bancos de dados.
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
No console do Google Cloud Platform, acesse a página Bancos de dados .
Selecione o banco de dados necessário na lista de bancos de dados.
No menu de navegação, clique em Tempo de vida .
Na tabela de políticas TTL, encontre a linha da política TTL. Dentro desta linha da tabela, clique no botão Excluir (lixeira).
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 .