Elimine entidades em massa

Use o serviço de eliminação em massa gerido para eliminar dados da sua base de dados. Esta funcionalidade suporta a eliminação em relação a um ou mais tipos.

Esta página descreve como eliminar entidades em massa através do serviço de eliminação em massa gerido. O serviço de eliminação em massa gerido do modo Datastore está disponível através da ferramenta de linha de comandos gcloud e da API REST do Firestore.

Antes de começar

Antes de poder usar o serviço de eliminação em massa gerido, tem de concluir as seguintes tarefas:

  1. Ative a faturação para o seu Google Cloud projeto. Apenas os projetos Google Cloud com a faturação ativada podem usar a funcionalidade de eliminação em massa.
  2. Certifique-se de que a sua conta tem as autorizações necessárias para o modo Datastore. Se for o proprietário do projeto, a sua conta tem as autorizações necessárias. Caso contrário, as seguintes funções concedem as autorizações necessárias para operações de eliminação em massa:

    • Funções do modo Datastore: Owner, Cloud Datastore Owner ou Cloud Datastore Bulk Admin

Configure o gcloud para o seu projeto

Pode iniciar operações de eliminação em massa através da Google Cloud consola ou da ferramenta de linha de comandos gcloud. Para usar o gcloud, configure a ferramenta de linha de comandos e ligue-se ao seu projeto de uma das seguintes formas:

Elimine dados em massa

Uma operação de eliminação em massa primeiro encontra todas as entidades aplicáveis na sua base de dados e elimina-as em lotes. Pode continuar a consultar ou ler estas entidades, embora os resultados possam variar consoante o progresso realizado. A eliminação em massa não elimina nenhuma entidade adicionada ou modificada após o início da operação.

Elimine tipos específicos em massa

gcloud

Para eliminar em massa tipos específicos, use a flag --collection-ids. O indicador usa a terminologia do Firestore, mas um ID do grupo de coleções é igual a um ID do tipo. A operação elimina apenas os tipos com os IDs indicados. Um tipo inclui todas as entidades e entidades aninhadas (em qualquer caminho) com os tipos especificados.

gcloud firestore bulk-delete \
--collection-ids=[COLLECTION_GROUP_ID_1_OR_KIND_1],[COLLECTION_GROUP_ID_2_OR_KIND_2],[SUBCOLLECTION_GROUP_ID_1_OR_KIND_3] \
--database=[DATABASE]

Faça a gestão de operações de eliminação em massa

Depois de iniciar uma operação de eliminação em massa, o modo Datastore atribui um nome único à operação. Pode usar o nome da operação para eliminar, cancelar ou verificar o estado da operação.

Os nomes das operações têm o prefixo projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/, por exemplo:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

No entanto, pode omitir o prefixo quando especificar um nome de operação para os comandos describe, cancel e delete.

Apresente todas as operações de eliminação em massa

gcloud

Use o comando operations list para ver todas as operações em execução e concluídas recentemente, incluindo operações de eliminação em massa:

gcloud firestore operations list

Verifique o estado da operação

gcloud

Use o comando operations describe para mostrar o estado de uma operação de eliminação em massa.

gcloud firestore operations describe [OPERATION_NAME]

Estime o tempo de conclusão

Um pedido do estado de uma operação de longa duração devolve as métricas workEstimated e workCompleted. Cada uma destas métricas é devolvida no número de bytes e no número de entidades:

  • workEstimated mostra o número total estimado de bytes e entidades que uma operação vai processar. O modo Datastore pode omitir esta métrica se não conseguir fazer uma estimativa.

  • workCompleted mostra o número de bytes e entidades eliminados até agora. Após a conclusão da operação, o valor mostra o número total de bytes e entidades que foram efetivamente processados, o que pode ser superior ao valor de workEstimated.

Divida workCompleted por workEstimated para uma estimativa aproximada do progresso. Esta estimativa pode ser imprecisa, uma vez que depende da recolha de estatísticas atrasadas.

Cancele uma operação

gcloud

Use o comando operations cancel para parar uma operação em curso:

gcloud firestore operations cancel [OPERATION_NAME]

O cancelamento de uma operação em execução não anula a operação. Uma operação de eliminação em massa cancelada não recupera as entidades eliminadas.

Elimine uma operação

Use o comando gcloud firestore operations delete para remover uma operação concluída da lista de operações recentes. Para cancelar uma operação em execução, use a operação de cancelamento anterior.

gcloud firestore operations delete [OPERATION_NAME]

Faturação e preços para operações de eliminação em massa

Tem de ativar a faturação para o seu Google Cloud projeto antes de usar o serviço de eliminação em massa gerido.

As operações de eliminação em massa são cobradas para leituras e eliminações de entidades às taxas indicadas nos preços do modo Datastore. As operações de eliminação em massa incorrem numa leitura de entrada de índice por entidade encontrada e numa operação de eliminação por entidade eliminada. É-lhe cobrada uma operação de leitura para até 1000 entradas de índice lidas. Por exemplo, para uma operação de eliminação em massa que eliminou 1500 entidades, são-lhe cobradas 2 leituras de entidades e 1500 eliminações de entidades.

Tenha em atenção que o modo Datastore cobra o trabalho real realizado. Se a operação for cancelada ou falhar devido a um erro do utilizador, é-lhe cobrado o progresso realizado. O modo Datastore não cobra leituras nem eliminações para as entidades que não são eliminadas definitivamente, como as entidades que são modificadas após o início da operação de eliminação. O custo é atribuído no dia da conclusão da operação.

As operações de eliminação em massa não acionam os alertas de Google Cloud orçamento até à conclusão. Da mesma forma, as leituras e as eliminações realizadas durante uma operação de eliminação em massa são aplicadas à sua utilização do nível gratuito após a conclusão da operação. As operações de eliminação em massa não afetam a utilização apresentada na secção de utilização da consola.

Veja os custos de eliminação em massa

As operações de eliminação em massa aplicam a etiqueta goog-firestoremanaged:bulkdelete às operações faturadas. Na página de relatórios do Cloud Billing, pode usar esta etiqueta para ver os custos relacionados com operações de eliminação em massa.

Práticas recomendadas

Evite ignorar dados eliminados, o que pode tornar as consultas mais lentas.

Outra opção

O Dataflow é um serviço gerido para desenvolver e executar fluxos de trabalho de processamento de dados que também podem eliminar dados em massa. O Dataflow fornece um modelo de eliminação do Datastore que pode usar para eliminar entidades selecionadas por uma consulta GQL.

Para mais informações, consulte a documentação do Dataflow sobre a execução do modelo de eliminação em massa do Datastore.

Se o seu exemplo de utilização envolver a retenção de dados, consulte o artigo Gerir a retenção de dados com políticas de TTL.