Gerenciar a retenção de dados usando políticas de TTL
Nesta página, descrevemos como usar o console do Google Cloud Platform e a CLI do Google Cloud para configurar políticas de time to live (TTL). Antes de ler esta página, é preciso entender o modelo de dados do Firestore.
Visão geral de time to live (TTL)
Use as políticas de TTL para automatizar remover dados desatualizados dos seus bancos de dados. Uma política de TTL designa um determinado campo como o prazo de validade de documentos em um determinado grupo de coleções. Com o TTL, é possível diminuir os custos de armazenamento limpando dados obsoletos. Normalmente, os dados são excluídos em até 24 horas após a data de validade.
Preços
As operações de exclusão de TTL são contabilizadas nos seus custos de exclusão de documentos. Para preços de operações de exclusão, consulte os preços do Firestore.
Limites e restrições
- Somente um campo por grupo de coleções pode ser marcado como um campo de TTL.
- No total, são permitidas 200 configurações no nível do campo. Uma configuração 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 clientes do Firestore no modo Datastore, o TTL não pode ser usado com um modo de simultaneidade Otimista com grupos de entidades. Considere alterar o modo de simultaneidade para o modo de simultaneidade otimista.
Exclusão por TTL
Observe os principais comportamentos de exclusão orientada por TTL:
A exclusão por TTL não é um processo instantâneo. Os documentos expirados continuam aparecendo nas consultas e nas solicitações de pesquisa até que o processo de TTL exclua eles. O TTL não prioriza a velocidade de exclusão, para reduzir o custo total de propriedade para exclusões. Normalmente, os dados são excluídos em até 24 horas após a data de validade.
A exclusão de um documento pelo TTL não afeta as subcoleções do documento.
A aplicação de uma política de TTL em um grupo de coleções resulta em uma ação em massa exclusão de todos os dados expirados de acordo com a nova política de TTL. Essa exclusão em massa também não é instantânea e depende da quantidade de dados desse grupo de coleções.
Se um documento tiver um prazo de validade passado e você adicionar uma nova política de TTL à coleção, ele será excluído em até 24 horas após a conclusão da configuração da política de TTL e ficará ativo.
O TTL não exclui necessariamente os documentos na mesma ordem que os carimbos de data/hora de expiração.
As exclusões não são feitas de maneira transacional. Documentos com o mesmo prazo de validade não são necessariamente excluídos ao mesmo tempo. Se você precisar desse comportamento, faça as exclusões usando uma biblioteca de cliente.
O Firestore sempre respeitará o campo de TTL mais recente para determinar a expiração. Por exemplo, se um documento expirado, mas ainda não excluído, tiver o campo TTL atualizado para uma data posterior, o documento não vai 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 geradas pelo TTL são tratadas com uma prioridade mais baixa. Outras estratégias também estão em vigor para suavizar os picos de tráfego de exclusões orientadas por TTL.
Exclusão por chamadas TTL: todas as ativas listeners de snapshots e aciona funções do Cloud Run Gatilhos do Firestore.
Campos e índices de TTL
Um campo de TTL pode ser indexado ou não indexado. No entanto, como um campo de TTL é um carimbo de data/hora, a indexação dele pode afetar o desempenho em taxas de tráfego mais altas. Indexar um campo de carimbo de data/hora pode criar pontos de acesso, o que é contra as práticas recomendadas. Os pontos de acesso são as taxas altas de leitura, gravação e exclusão para um intervalo de documentos estreito.
Por padrão, o Firestore cria um índice de campo único para todos os campos. É possível criar uma isenção de índice de campo único para desativar índices em um campo de TTL.
Permissões
O principal que configura uma política de TTL exige a permissão a seguir no projeto:
- A visualização de políticas de TTL exige as permissões
datastore.indexes.list
edatastore.indexes.get
. - A modificação de políticas de TTL exige a permissão
datastore.indexes.update
. - A verificação do status das operações TTL requer
datastore.operations.list
edatastore.operations.get
.
Para papéis que atribuem essas permissões, consulte Papéis do Identity and Access Management do Firestore.
Antes de começar
Antes de usar a CLI gcloud para gerenciar 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
Criar uma política de TTL
Ao criar uma política de TTL, você designa um campo de documento como o tempo de expiração para documentos em um grupo de coleções.
O TTL usa um campo especificado para identificar documentos que podem ser excluídos.
Esse campo de TTL deve ser do tipo Date and time
. É possível selecionar um campo que
já existe ou designar um campo que você planeja adicionar mais tarde.
Considere as informações a seguir antes de definir o valor do campo de TTL:
O valor do campo de TTL pode ser um horário no futuro, no presente ou no passado. Se o valor for um horário no passado, o documento estará imediatamente qualificado para exclusão. Por exemplo, é possível criar uma política de 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 desativa o TTL do documento individual.
Para criar uma política TTL, siga estas etapas.
Console do Google Cloud
No Console do Google Cloud, 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 Time to live.
Clique em Criar política.
Insira um nome para o grupo de coleções e um campo de carimbo de data/hora.
Clique em Criar.
O console retorna à página Time to live. Se a operação for iniciada com êxito, a página vai adicionar uma entrada à tabela de políticas de TTL. Em caso de falha, a página exibe 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 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
Duração da ativação da política de TTL
Mesmo em um banco de dados vazio, pode levar dez minutos ou mais para ativar uma política de TTL. Após iniciar uma operação, o fechamento do terminal não cancela a operação.
Conferir políticas de TTL
Para visualizar as políticas de TTL e os status delas, siga estas etapas:
Console do Google Cloud
No Console do Google Cloud, 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 Time to live.
O console lista as políticas de TTL do banco de dados e inclui o status de cada uma delas.
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 a seguir lista todas as políticas de TTL.gcloud firestore fields ttls list
Para listar políticas de TTL em um grupo de coleções 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.
Desativar uma política de TTL
Para desativar uma política de TTL, siga estas etapas:
Console do Google Cloud
No Console do Google Cloud, 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 Time to live.
Na tabela de políticas de TTL, encontre a linha da política de TTL. Nessa linha, clique no botão Excluir (lixeira).
Para confirmar, clique em Excluir.
O console retorna à página Time to live. Em caso de sucesso, 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 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
Monitorar exclusões por TTL
É possível usar o Cloud Monitoring para conferir métricas sobre exclusões orientadas por TTL. O Firestore fornece as seguintes métricas para TTL:
Tipo de métrica | Nome da métrica | Descrição da métrica |
---|---|---|
firestore.googleapis.com/document/ttl_deletion_count | Contagem de exclusões por time to live |
Contagem total de documentos excluídos pelas políticas de TTL. |
firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Atraso entre a expiração de time to live e a exclusão |
Tempo decorrido entre a expiração de um documento em um TTL e quando ele foi realmente excluído. |
Para configurar um painel com métricas do Firestore, consulte gerenciar painel personalizado e adicionar widgets de painel.