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 modo Datastore.

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 uma determinada propriedade como a hora de validade das entidades de um determinado tipo. 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 entidades. Para ver os preços das operações de eliminação, consulte os preços do Firestore no modo Datastore.

Limites e restrições

  • Só pode marcar uma propriedade por tipo como propriedade TTL.
  • Pode ter um máximo de 500 políticas de TTL.

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. As entidades expiradas continuam a aparecer em consultas e pedidos de pesquisa até que o processo de TTL as 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 uma entidade através do TTL não elimina as entidades descendentes dessa entidade.

  • A aplicação de uma política de TTL a um tipo existente resulta numa eliminação em massa de todos os dados que expiraram 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 desse tipo.

  • Se uma entidade tiver um tempo de expiração no passado e adicionar uma nova política de TTL ao tipo, a entidade é eliminada 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 as entidades pela mesma ordem das respetivas datas/horas de validade.

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

  • O modo Datastore respeita sempre o campo TTL mais recente para determinar a expiração. Por exemplo, se uma entidade expirada, mas ainda não eliminada, tiver o campo TTL atualizado para uma data posterior, a entidade não expira e é usada a nova data.

  • O modo Datastore só faz expirar um documento quando o campo TTL está definido para um tipo Timestamp. Se o campo estiver ausente ou definido para um valor como null, 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.

Propriedades e índices de TTL

Uma propriedade TTL pode ser indexada ou não indexada. No entanto, como uma propriedade TTL é uma data/hora, a indexação da propriedade pode afetar o desempenho a taxas de tráfego mais elevadas. A indexação de uma propriedade de data/hora é contrária às práticas recomendadas e pode criar pontos críticos. Os pontos críticos são taxas de leitura, escrita e eliminação elevadas para um intervalo de chaves restrito.

Por predefinição, o Datastore cria um índice incorporado para todas as propriedades. Pode excluir uma propriedade dos índices para desativar os índices numa propriedade de 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 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 o artigo Funções de gestão de identidades e acessos do Datastore.

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 uma propriedade de entidade como a hora de expiração das entidades num tipo. A política de TTL aplica-se ao tipo especificado em todos os espaços de nomes.

O TTL usa uma propriedade especificada para identificar entidades elegíveis para eliminação. Esta propriedade TTL tem de ser do tipo Date and time. Pode selecionar uma propriedade que já exista ou designar uma propriedade que planeia adicionar mais tarde.

Considere o seguinte antes de definir o valor da propriedade TTL:

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

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

Siga os passos abaixo para criar uma política de TTL:

Google Cloud consola

  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 de tipo e um nome de propriedade 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_group_name --enable-ttl
    
  3. 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

Siga os passos abaixo para ver as políticas de TTL e os respetivos estados.

Google Cloud consola

  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 Google Cloud 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 ver 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 tipo específico, use o seguinte:

    gcloud firestore fields ttls list  --collection-group=collection_group_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

Siga os passos abaixo para desativar uma política de TTL.

Google Cloud consola

  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, localize 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 Google Cloud consola regressa à página Tempo de vida. Em caso de êxito, o Datastore 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_group_name --disable-ttl
    

Monitorize eliminações de TTL

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

datastore.googleapis.com/entity/ttl_deletion_count Contagem de eliminações de TTL

A contagem total de entidades eliminadas por políticas de TTL.

datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays Atrasos na eliminação devido à expiração do TTL

Tempo decorrido entre a data de expiração de uma entidade ao abrigo de uma política de TTL e a data de eliminação real.

Para configurar um painel de controlo com métricas do Datastore, consulte os artigos Gerir painel de controlo personalizado e Adicionar widgets do painel de controlo.