Você pode usar o serviço de exclusão em massa gerenciado do modo Datastore para excluir dados do seu banco de dados. Esse recurso oferece suporte à exclusão de um ou mais tipos.
Esta página descreve como excluir em massa as entidades do Firestore no modo Datastore usando
o serviço de exclusão em massa gerenciado. O
serviço de exclusão em massa gerenciado do modo Datastore está disponível na
ferramenta de linha de comando gcloud
e na API Datastore (REST, RPC).
Antes de começar
Antes de usar o serviço de exclusão em massa gerenciado, é necessário concluir as seguintes tarefas:
- Ative o faturamento para o projeto do Google Cloud. Somente projetos do Google Cloud com faturamento ativado podem usar a funcionalidade de exclusão em massa.
-
Verifique se a conta tem as permissões necessárias para o modo Datastore. Se você for o proprietário do projeto, sua conta já 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:
- Funções do modo Datastore:
Owner
,Cloud Datastore Owner
ouCloud Datastore Bulk Admin
- Funções do modo Datastore:
Configurar gcloud
para seu projeto
É possível iniciar operações de exclusão em massa pelo console do Google Cloud ou
pela ferramenta de linha de comando gcloud
. Para usar gcloud
, configure a ferramenta de linha de comando
e conecte-se ao seu projeto de uma das seguintes maneiras:
Acesse
gcloud
no console do Google Cloud usando o Cloud Shell.Verifique se a
gcloud
está configurada para o projeto correto:gcloud config set project [PROJECT_ID]
Excluir dados em massa
Uma operação de exclusão em massa primeiro encontra todas as entidades aplicáveis no seu banco de dados e as exclui em lotes. Você ainda pode consultar ou ler essas entidades, mas os resultados podem variar com base no progresso. A exclusão em massa não exclui entidades adicionadas ou modificadas após o início da operação.
Excluir tipos específicos em massa
gcloud
Para excluir em massa tipos específicos, use a flag
--collection-ids
. A flag usa a terminologia do Firestore, mas um ID de grupo de coleções é igual a um ID de tipo. A operação exclui apenas
os tipos com os IDs fornecidos. Um tipo
inclui todas as entidades e entidades aninhadas (em qualquer caminho) com os tipos
especificados.
gcloud beta 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 de iniciar uma operação de exclusão em massa, o modo Datastore atribui um nome exclusivo a ela. 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 as 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 entidades que uma operação processará. O modo do Datastore pode omitir essa métrica se não puder fazer uma estimativa.workCompleted
mostra o número de bytes e entidades excluídos até o momento. Após a conclusão da operação, o valor mostra o número total de bytes e entidades que foram realmente processados, o que pode ser maior do que o valor deworkEstimated
.
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 as entidades excluídas.
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 andamento, 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 o projeto do Google Cloud 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 entidades de acordo com as taxas listadas em Preços do modo Datastore. As operações de exclusão em massa geram uma leitura de entrada de índice por entidade encontrada e uma operação de exclusão por entidade excluída. É 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 entidades, você vai receber uma cobrança por 2 leituras de entidades e 1.500 exclusões de entidades.
O modo Datastore 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 modo Datastore não cobra pela leitura ou exclusão de entidades que não são excluídas (por exemplo, entidades que são modificadas 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 os alertas do orçamento do Google Cloud até a conclusão. Da mesma forma, as leituras e exclusões realizadas durante uma operação de exclusão em massa são aplicadas à sua cota/uso sem custo financeiro após a conclusão da operação. As operações de exclusão em massa não vão afetar 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.
Outra opção
O Dataflow é um serviço gerenciado para desenvolver e executar fluxos de trabalho de processamento de dados, que também podem excluir dados em massa. O Dataflow fornece um modelo de exclusão do Datastore que pode ser usado para excluir entidades selecionadas por uma consulta GQL.
Para mais informações, consulte a documentação do Dataflow sobre como executar o modelo de exclusão em massa do Datastore.
Se o caso de uso envolver a retenção de dados, consulte Gerenciar a retenção de dados com políticas de TTL.