Supprimer des entités de manière groupée

Vous pouvez utiliser le service de suppression groupée géré en mode Datastore pour supprimer des données de votre base de données. Cette fonctionnalité permet de supprimer un ou plusieurs types.

Cette page explique comment supprimer des entités Firestore en mode Datastore de manière groupée à l'aide du service de suppression groupée géré. Le service de suppression groupée géré en mode Datastore est disponible via l'outil de ligne de commande gcloud et l'API en mode Datastore (REST, RPC).

Avant de commencer

Pour pouvoir utiliser le service de suppression groupée géré, vous devez effectuer les tâches ci-dessous:

  1. 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.
  2. Assurez-vous que votre compte dispose des autorisations nécessaires pour le mode Datastore. 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 en mode Datastore:Owner, Cloud Datastore Owner ou Cloud Datastore Bulk Admin

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 :

Supprimer des données de manière groupée

Une opération de suppression groupée recherche d'abord toutes les entités applicables dans votre base de données, puis les supprime par lot. Vous pouvez toujours interroger ou lire ces entités, mais les résultats peuvent varier en fonction de la progression. La suppression groupée ne supprime aucune entité ajoutée ou modifiée après le début de l'opération.

Supprimer de manière groupée des types spécifiques

gcloud

Pour supprimer des types spécifiques de manière groupée, utilisez l'indicateur --collection-ids. L'indicateur utilise la terminologie Firestore, mais un ID de groupe de collections est identique à un ID de type. L'opération ne supprime que les types avec les ID donnés. Un type inclut toutes les entités et entités imbriquées (à n'importe quel chemin d'accès) avec les types 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]

Gérer les opérations de suppression groupée

Une fois que vous avez lancé une opération de suppression groupée, le mode Datastore attribue un nom unique à l'opération. 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 d'entités :

  • workEstimated indique le nombre total estimé d'octets et d'entités qu'une opération va traiter. Le mode Datastore peut omettre cette métrique s'il ne peut pas effectuer d'estimation.

  • workCompleted indique le nombre d'octets et d'entités supprimés jusqu'à présent. Une fois l'opération terminée, la valeur indique le nombre total d'octets et d'entités réellement traités, qui peut être supérieur à la valeur de workEstimated.

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 entités supprimées.

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 d'entités aux tarifs indiqués dans la section Tarifs du mode Datastore. Les opérations de suppression par lot entraînent une lecture d'une entrée d'index par entité trouvée et une opération de suppression par entité supprimée. 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 entités, vous serez facturé pour deux lectures d'entités et 1 500 suppressions d'entités.

Notez que le mode Datastore 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é. Le mode Datastore ne facture pas la lecture ni la suppression des entités qui ne sont pas supprimées à terme (par exemple, les entités modifiées 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 gratuits 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.

Autre option

Dataflow est un service géré conçu pour développer et exécuter des workflows de traitement des données, qui peuvent également supprimer des données de manière groupée. Dataflow fournit un modèle de suppression Datastore que vous pouvez utiliser pour supprimer des entités sélectionnées par une requête GQL.

Pour en savoir plus, consultez la documentation Dataflow sur l'exécution du modèle de suppression groupée Datastore.

Si votre cas d'utilisation implique la conservation des données, consultez Gérer la conservation des données avec des règles TTL.