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). Antes de ler esta página, deve compreender o modelo de dados do Firestore.
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 num determinado grupo de coleções. 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 ver os preços das operações de eliminação, consulte os preços do Firestore.
Limites e restrições
- Só pode marcar um campo por grupo de recolha como um campo TTL.
- Pode ter um máximo de 500 configurações ao nível do campo. Uma configuração de campo pode conter várias 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 os clientes do Firestore no modo Datastore, o TTL não pode ser usado com um modo de simultaneidade de Optimistic With Entity Groups. Pondere alterar o modo de simultaneidade para o modo de simultaneidade otimista.
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 eliminação de um documento através do TTL não elimina as subcoleções desse documento.
A aplicação de uma política de TTL a um grupo de 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 esse grupo de 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 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 faz expirar um documento apenas quando o campo TTL está definido para um tipo
Date and time
. Se o campo estiver ausente ou definido para um valor comonull
, as expirações podem ser desativadas 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.
A eliminação através da TTL chama todos os ouvintes de instantâneos ativos e aciona as funções do Cloud Run e os acionadores do Firestore.
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 é contrário às práticas recomendadas. Os pontos críticos são taxas de leitura, escrita e eliminação elevadas num intervalo de documentos restrito.
Por predefinição, o Firestore cria um índice de campo único para todos os campos. Pode criar uma isenção de índice de campo único para desativar os índices num campo TTL.
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
edatastore.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
edatastore.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 num grupo de coleções.
O TTL usa um campo especificado para identificar documentos elegíveis para eliminação.
Este campo TTL tem de ser do tipo Date and time
. 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
Na Google Cloud consola, aceda à página Bases de dados.
Selecione a base de dados necessária na lista de bases de dados.
No menu de navegação, clique em Tempo de vida.
Clique em Criar política.
Introduza um nome do grupo de coleções e um nome do campo de data/hora.
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
-
In the Google Cloud console, 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.
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_group_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
Na Google Cloud consola, aceda à página Bases de dados.
Selecione a base de dados necessária na lista de bases de dados.
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
-
In the Google Cloud console, 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.
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 num grupo de recolha específico, use o seguinte:
gcloud firestore fields ttls list --collection-group=collection_group_name
View operation details
You can use the gcloud CLI to view more details about a TTL policy
that is in the CREATING
state.
Use the operations list
command to see all running and
recently completed operations:
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
Na Google Cloud consola, aceda à página Bases de dados.
Selecione a base de dados necessária na lista de bases de dados.
No menu de navegação, clique em Tempo de vida.
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).
Confirme clicando em Eliminar.
A consola regressa à página Tempo de vida. Se for bem-sucedida, o Firestore remove a política de TTL da tabela.
gcloud
-
In the Google Cloud console, 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.
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_group_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 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 | Atrasos na eliminação devido à expiração do tempo de vida |
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 do Firestore, consulte os artigos Faça a gestão do painel de controlo personalizado e Adicione widgets ao painel de controlo.