Supprimer des données de manière groupée
Vous pouvez utiliser le service de suppression groupée géré par Firestore pour supprimer des données de votre base de données. Cette fonctionnalité permet de supprimer un ou plusieurs groupes de collections.
Cette page explique comment supprimer des documents Firestore de manière groupée à l'aide du service de suppression groupée géré. Le service de suppression groupée géré par Firestore est disponible via l'outil de ligne de commande gcloud
et l'API Firestore (REST, RPC).
Avant de commencer
Pour pouvoir utiliser le service de suppression groupée géré, vous devez effectuer les tâches ci-dessous:
- Activer la facturation pour votre projet Google Cloud. Seuls les projets Google Cloud pour lesquels la facturation est activée peuvent utiliser la fonctionnalité de suppression groupée.
-
Assurez-vous que votre compte dispose des autorisations nécessaires pour Firestore. Si vous êtes le propriétaire du projet, votre compte dispose des autorisations requises. Sinon, les rôles suivants accordent les autorisations nécessaires pour les opérations de suppression groupée:
- Rôles Firestore:
Owner
,Cloud Datastore Owner
ouCloud Datastore Bulk Admin
- Rôles Firestore:
Configurer gcloud
pour votre projet
Vous pouvez lancer des opérations de suppression groupée via la console Google Cloud ou l'outil de ligne de commande gcloud
. Pour utiliser gcloud
, configurez l'outil de ligne de commande et connectez-vous à votre projet de l'une des manières suivantes :
Accédez à
gcloud
à partir de la console Google Cloud à l'aide de Cloud Shell.Assurez-vous que
gcloud
est configuré pour le bon projet :gcloud config set project [PROJECT_ID]
Supprimer des données de manière groupée
Une opération de suppression groupée recherche d'abord tous les documents applicables dans votre base de données, puis les supprime par lot. Vous pouvez toujours interroger ou lire ces documents, mais les résultats peuvent varier en fonction de l'avancement des travaux. La suppression groupée ne supprime pas les documents ajoutés ou modifiés après le début de l'opération.
Supprimer des groupes de collections spécifiques de manière groupée
gcloud
Pour supprimer de manière groupée des groupes de collections spécifiques, utilisez l'indicateur --collection-ids
. L'opération ne supprime que les groupes de collections avec les ID donnés. Un groupe de collections inclut tous les documents et documents imbriqués (à n'importe quel chemin d'accès) avec les groupes de collections spécifiés.
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]
restaurants
de premier niveau de la base de données cymbal
. Sous chaque document de restaurant, plusieurs sous-collections imbriquées sont présentes, telles que ratings
, reviews
et outlets
. Pour supprimer de manière groupée les groupes de collection restaurants
et reviews
, votre commande se présente comme suit:
gcloud beta firestore bulk-delete \ --collection-ids=restaurants,reviews \ --database='cymbal'
Gérer les opérations de suppression groupée
Une fois que vous avez lancé une opération de suppression groupée, Firestore attribue à l'opération un nom unique. Vous pouvez utiliser le nom de l'opération pour supprimer, annuler ou vérifier l'état de l'opération.
Les noms des opérations sont précédés du préfixe projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/
, par exemple :
projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
Cependant, vous pouvez omettre le préfixe lorsque vous spécifiez un nom d'opération pour les commandes describe
, cancel
et delete
.
Répertorier toutes les opérations de suppression groupée
gcloud
Utilisez la commande operations list
pour afficher toutes les opérations en cours et terminées récemment, y compris les opérations de suppression groupée:
gcloud firestore operations list
Vérifier l'état de l'opération
gcloud
Utilisez la commande operations describe
pour afficher l'état d'une opération de suppression groupée.
gcloud firestore operations describe [OPERATION_NAME]
Estimer le délai d'exécution
Une requête permettant d'obtenir l'état d'une opération de longue durée renvoie les métriques workEstimated
et workCompleted
. Chacune de ces métriques est renvoyée à la fois en nombre d'octets et en nombre de documents:
workEstimated
indique le nombre total estimé d'octets et de documents qu'une opération va traiter. Firestore peut omettre cette métrique s'il ne peut pas effectuer d'estimation.workCompleted
indique le nombre d'octets et de documents supprimés jusqu'à présent. Une fois l'opération terminée, la valeur indique le nombre total d'octets et de documents réellement traités, qui peut être supérieur à la valeur deworkEstimated
.
Divisez workCompleted
par workEstimated
pour obtenir une estimation approximative de la progression. Cette estimation peut être inexacte, car elle dépend de la collecte de statistiques retardée.
Annuler une opération
gcloud
Utilisez la commande operations cancel
pour arrêter une opération en cours :
gcloud firestore operations cancel [OPERATION_NAME]
L'annulation d'une opération en cours n'annule pas l'opération. Une opération de suppression groupée annulée ne permet pas de récupérer les documents supprimés.
Supprimer une opération
Utilisez la commande gcloud firestore operations delete
pour supprimer une opération terminée de la liste des opérations récentes. Pour annuler une opération en cours, utilisez l'opération d'annulation précédente.
gcloud firestore operations delete [OPERATION_NAME]
Facturation et tarifs des opérations de suppression groupée
Vous devez activer la facturation pour votre projet Google Cloud pour pouvoir utiliser le service de suppression groupée géré.
Les opérations de suppression groupée sont facturées pour les lectures et suppressions de documents aux tarifs indiqués dans la section Tarifs de Firestore. Les opérations de suppression groupée entraînent une lecture d'une entrée d'index par document trouvé et une opération de suppression par document supprimé. Une opération de lecture vous est facturée pour un maximum de 1 000 entrées d'index lues. Par exemple, pour une opération de suppression groupée ayant supprimé 1 500 documents, vous serez facturé pour deux lectures de documents et 1 500 suppressions de documents.
Notez que Firestore facture le travail effectué. Si l'opération est annulée ou échoue en raison d'une erreur de l'utilisateur, le temps passé sera facturé. Firestore ne facture pas les opérations de lecture ni de suppression pour les documents qui ne sont pas supprimés à terme (par exemple, les documents modifiés après le début de l'opération de suppression). Le coût sera attribué le jour de l'opération.
Les opérations de suppression groupée ne déclencheront pas vos alertes budgétaires Google Cloud avant la fin de leur exécution. De même, les opérations de lecture et de suppression effectuées lors d'une opération de suppression groupée sont appliquées à votre quota/utilisation sans frais une fois l'opération terminée. Les opérations de suppression groupée n'ont aucune incidence sur l'utilisation affichée dans la section "Utilisation" de la console.
Afficher les coûts de suppression groupée
Les opérations de suppression groupée appliquent le libellé goog-firestoremanaged:bulkdelete
aux opérations facturées. Sur la page Rapports Cloud Billing, vous pouvez utiliser ce libellé pour afficher les coûts liés aux opérations de suppression groupée.
Bonnes pratiques
Évitez de passer outre les données supprimées, car cela pourrait ralentir les requêtes.