Excluir dados em massa

Use o serviço de exclusão em massa gerenciado para excluir dados do seu banco de dados. Esse recurso oferece suporte à exclusão de um ou mais grupos de coleções.

Esta página descreve como excluir documentos em massa usando o serviço de exclusão em massa gerenciado. O serviço de exclusão em massa gerenciado do Firestore está disponível na gcloud ferramenta de linha de comando e na API REST do Firestore.

Antes de começar

Antes de usar o serviço de exclusão em massa gerenciado, é necessário concluir as seguintes tarefas:

  1. Para a exclusão em massa de documentos, ative o faturamento para seu Google Cloud projeto. Somente Google Cloud projetos com o faturamento ativado podem usar a funcionalidade de exclusão em massa.
  2. Verifique se sua conta tem as permissões necessárias para o Firestore. Se você for o proprietário do projeto, sua conta já vai ter as permissões necessárias. Caso contrário, os seguintes papéis concedem as permissões necessárias para operações de exclusão em massa:

    • Papéis do Firestore: Owner, Cloud Datastore Owner, ou Cloud Datastore Bulk Admin

Configurar gcloud para seu projeto

É possível iniciar operações de exclusão em massa pelo Google Cloud console ou pela gcloud ferramenta de linha de comando. Para usar gcloud, configure a ferramenta de linha de comando e conecte-se ao seu projeto de uma das seguintes maneiras:

Excluir dados em massa

Uma operação de exclusão em massa primeiro encontra todos os documentos aplicáveis no seu banco de dados e os exclui em lotes. Você ainda pode consultar ou ler esses documentos, embora os resultados possam variar com base no progresso feito. A exclusão em massa não exclui documentos adicionados ou modificados após o início da operação.

Excluir em massa grupos de coleções específicos

gcloud

Para excluir em massa grupos de coleções específicos, use a --collection-ids flag. A operação exclui apenas os grupos de coleções com os IDs fornecidos.

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]

Gerenciar operações de exclusão em massa

Depois que você inicia uma operação de exclusão em massa, o Firestore atribui um nome exclusivo à operação. Use o nome da operação para excluir, cancelar ou verificar o status dela.

Os nomes das operações são prefixados com projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/, por exemplo:

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

No entanto, é possível omitir o prefixo ao especificar um nome de operação para os comandos describe, cancel e delete.

Listar todas as operações de exclusão em massa

gcloud

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

gcloud firestore operations list

Verificar o status da operação

gcloud

Use o comando operations describe para mostrar o status de uma operação de exclusão em massa.

gcloud firestore operations describe [OPERATION_NAME]

Estimar o tempo de conclusão

Uma solicitação para o status de uma operação de longa duração retorna as métricas workEstimated e workCompleted. Cada uma dessas métricas é retornada no número de bytes e no número de entidades:

  • workEstimated mostra o número total estimado de bytes e documentos que uma operação vai processar. O Firestore poderá omitir essa métrica se não conseguir fazer uma estimativa.

  • workCompleted mostra o número de bytes e documentos processados até o momento. Após a conclusão da operação, o valor mostra o número total de bytes e documentos que foram realmente processados, que pode ser maior que o valor de workEstimated.

Divida workCompleted por workEstimated para ter uma estimativa aproximada do andamento. A estimativa pode ser imprecisa, porque ela depende da coleção de estatísticas em atraso.

Cancelar uma operação

gcloud

Use o comando operations cancel para interromper uma operação em andamento:

gcloud firestore operations cancel [OPERATION_NAME]

Cancelar uma operação em execução não desfaz a operação. Uma operação de exclusão em massa cancelada não recupera os documentos excluídos.

Excluir 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]

Faturamento e preços para operações de exclusão em massa

É necessário ativar o faturamento para seu Google Cloud projeto antes de usar o serviço gerenciado de exclusão em massa.

As operações de exclusão em massa são cobradas por leituras e exclusões de documentos nas taxas listadas em Preços do Firestore. As operações de exclusão em massa geram uma leitura de entrada de índice por documento encontrado e uma operação de exclusão por documento excluído. É cobrada uma operação de leitura para até 1.000 entradas de índice. Por exemplo, para uma operação de exclusão em massa que excluiu 1.500 documentos, você será cobrado por duas leituras de documentos e 1.500 exclusões de documentos.

O Firestore cobra pelo trabalho real realizado. Se a operação for cancelada ou falhar devido a um erro do usuário, você vai ser cobrado pelo progresso feito. O Firestore não cobra leituras ou exclusões dos documentos que não são excluídos, como documentos modificados após o início da operação de exclusão. O custo será atribuído no dia da conclusão da operação.

As operações de exclusão em massa não acionam seus Google Cloud orçamento alertas até a conclusão. Da mesma forma, leituras e exclusões realizadas durante uma operação de exclusão em massa são aplicadas ao uso do Nível sem custos financeiros após a conclusão da operação. As operações de exclusão em massa não afetam o uso mostrado na seção de uso do console.

Conferir os custos de exclusão em massa

As operações de exclusão em massa aplicam o rótulo goog-firestoremanaged:bulkdelete às operações faturadas. Na página de relatórios do Cloud Billing, é possível usar esse rótulo para conferir os custos relacionados às operações de exclusão em massa.

Práticas recomendadas

Evite pular dados excluídos, o que pode deixar as consultas mais lentas.