Catch up on highlights from Firebase at Google I/O 2023. Learn more

Gérer la conservation des données avec les politiques TTL

Cette page décrit comment utiliser la console Google Cloud Platform et l'interface de ligne de commande Google Cloud pour configurer des règles de durée de vie (TTL). Avant de lire cette page, vous devez comprendre le modèle de données Cloud Firestore .

Aperçu de la durée de vie

Utilisez des règles de durée de vie (TTL) pour supprimer automatiquement les données obsolètes de vos bases de données. Une politique TTL désigne un champ donné comme heure d'expiration des documents dans un groupe de collections donné. Avec TTL, vous pouvez réduire les coûts de stockage en supprimant les données obsolètes. Les données sont généralement supprimées dans les 72 heures suivant leur date d'expiration.

Tarification

Les opérations de suppression TTL sont prises en compte dans vos coûts de suppression de documents. Pour connaître la tarification des opérations de suppression, consultez Tarification de Cloud Firestore .

Limites et contraintes

  • Un seul champ par groupe de collections peut être marqué comme champ TTL.
  • Un total de 200 configurations au niveau du champ sont autorisées. Une configuration de champ peut contenir plusieurs configurations pour le même champ. Par exemple, une exemption d'indexation à champ unique et une stratégie TTL sur le même champ comptent comme une configuration de champ dans la limite.

Suppression TTL

Notez les comportements clés suivants de la suppression basée sur TTL :

  • La suppression via TTL n'est pas un processus instantané. Les documents expirés continuent d'apparaître dans les requêtes et les demandes de recherche jusqu'à ce que le processus TTL les supprime réellement. TTL échange la rapidité de suppression au profit d'un coût total de possession réduit pour les suppressions. Les données sont généralement supprimées dans les 72 heures suivant leur date d'expiration.

  • La suppression d'un document via TTL ne supprime pas les sous-collections sous ce document.

  • L'application d'une stratégie TTL sur un groupe de collections existant entraîne une suppression en masse de toutes les données qui ont expiré conformément à la nouvelle stratégie TTL. Notez que cette suppression en bloc n'est pas non plus instantanée et dépend de la quantité de données existantes pour ce groupe de collecte.

  • TTL ne supprime pas nécessairement les documents dans le même ordre que leurs horodatages d'expiration.

  • Les suppressions ne sont pas effectuées de manière transactionnelle. Les documents avec le même délai d'expiration ne sont pas nécessairement supprimés en même temps. Si vous avez besoin de ce comportement, effectuez les suppressions à l'aide d'une bibliothèque cliente.

  • Cloud Firestore respectera toujours le dernier champ TTL pour déterminer l'expiration. Par exemple, si un document expiré mais pas encore supprimé voit son champ TTL mis à jour à une date ultérieure, le document n'expirera pas et la nouvelle date sera utilisée.

  • TTL est conçu pour minimiser l'impact sur les autres activités de la base de données. Les suppressions pilotées par TTL sont traitées avec une priorité inférieure. D'autres stratégies sont également en place pour lisser les pics de trafic dus aux suppressions pilotées par TTL.

  • La suppression via TTL appelle tous les écouteurs d'instantanés actifs et déclenche les déclencheurs Cloud Functions Cloud Firestore.

Champs et index TTL

Un champ TTL peut être indexé ou non indexé. Cependant, étant donné qu'un champ TTL est un horodatage, l'indexation du champ peut affecter les performances à des taux de trafic plus élevés. L'indexation d'un champ d'horodatage peut créer des points chauds , ce qui va à l'encontre des meilleures pratiques. Les hotspots sont des taux de lecture, d'écriture et de suppression élevés pour une plage de documents étroite.

Par défaut, Cloud Firestore crée un index à champ unique pour tous les champs. Vous pouvez créer une exemption d'index à champ unique pour désactiver les index sur un champ TTL.

Autorisations

Le mandataire qui configure une règle TTL nécessite l'autorisation suivante dans le projet :

  • L'affichage des stratégies TTL nécessite les autorisations datastore.indexes.list et datastore.indexes.get .
  • La modification des stratégies TTL nécessite l'autorisation datastore.indexes.update .
  • La vérification de l'état des opérations TTL nécessite datastore.operations.list et datastore.operations.get .

Pour les rôles qui attribuent ces autorisations, consultez Rôles Cloud Firestore Identity and Access Management .

Avant que tu commences

Avant d'utiliser l'interface de ligne de commande gcloud pour gérer les règles TTL, utilisez la commande gcloud components update pour mettre à jour les composants vers la dernière version disponible :

gcloud components update

Créer une politique TTL

Lorsque vous créez une stratégie TTL, vous désignez un champ de document comme heure d'expiration des documents dans un groupe de collections.

TTL utilise un champ spécifié pour identifier les documents éligibles à la suppression. Ce champ TTL doit être de type Date and time . Vous pouvez sélectionner un champ qui existe déjà ou vous pouvez désigner un champ que vous prévoyez d'ajouter ultérieurement.

Tenez compte des éléments suivants avant de définir la valeur du champ TTL :

  • La valeur du champ TTL peut être une heure dans le futur, maintenant ou dans le passé. Si la valeur est une heure passée, le document est immédiatement éligible à la suppression. Par exemple, vous pouvez créer une stratégie TTL avec le champ expireAt , que vous ajoutez ensuite aux documents existants.

  • L'utilisation de tout autre type de données ou la non définition de la valeur du champ TTL désactivera le TTL pour le document individuel.

Suivez les étapes ci-dessous pour créer une règle TTL :

Google Cloud Console

  1. Accédez à la page Cloud Firestore Time-to-live dans la console Google Cloud Platform.

    Aller à la page Durée de vie

  2. Cliquez sur Créer une stratégie .

  3. Entrez un nom de groupe de collecte et un nom de champ d'horodatage.

  4. Cliquez sur Créer .

La console revient à la page Durée de vie . Si l'opération démarre avec succès, la page ajoute une entrée au tableau des stratégies TTL. En cas d'échec, la page affiche un message d'erreur.

gcloud

Utilisez la commande firestore fields ttls update pour configurer une politique TTL. Ajoutez l'indicateur --async pour empêcher l'interface de ligne de commande gcloud d'attendre la fin de l'opération.

 gcloud firestore fields ttls update
  ttl_field --collection-group=collection_group_name
  --enable-ttl 

Même sur une base de données vide, l'activation d'une stratégie TTL peut prendre dix minutes ou plus. Une fois que vous avez lancé une opération, la fermeture du terminal n'annule pas l'opération.

Afficher les politiques TTL

Suivez les étapes ci-dessous pour afficher les stratégies TTL et leurs statuts.

Google Cloud Console

Accédez à la page Cloud Firestore Time-to-live dans la console Google Cloud Platform.

Aller à la page Durée de vie

La console répertorie les stratégies TTL pour votre base de données et inclut l'état de chaque stratégie.

gcloud

Utilisez la commande firestore fields ttls list pour configurer une stratégie TTL. La commande suivante répertorie toutes les stratégies TTL.

   gcloud firestore fields ttls list
   

Pour répertorier les stratégies TTL sous un groupe de collecte spécifique, utilisez ce qui suit :

   gcloud firestore fields ttls list  --collection-group=collection_group_name
   

Afficher les détails de l'opération

Vous pouvez utiliser l'interface de ligne de commande gcloud pour afficher plus de détails sur une règle TTL à l'état CREATING .

Utilisez la commande operations list pour voir toutes les opérations en cours et récemment terminées :

gcloud firestore operations list

La réponse comprend une estimation de l'état d'avancement de l'opération.

Désactiver une stratégie TTL

Suivez les étapes ci-dessous pour désactiver une politique TTL.

Google Cloud Console

  1. Accédez à la page Cloud Firestore Time-to-live dans la console Google Cloud Platform.

    Aller à la page Durée de vie

  2. Dans le tableau des stratégies TTL, recherchez la ligne de la stratégie TTL. Dans cette ligne du tableau, cliquez sur le bouton Supprimer (corbeille).

  3. Confirmez en cliquant sur Supprimer .

La console revient à la page Durée de vie . En cas de succès, Cloud Firestore supprime la stratégie TTL du tableau.

gcloud

1. Utilisez la commande firestore fields ttls update pour configurer une politique TTL. Ajoutez l'indicateur --async pour empêcher l'interface de ligne de commande gcloud d'attendre la fin de l'opération.

   gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
   

Surveiller les suppressions TTL

Vous pouvez utiliser Cloud Monitoring pour afficher des métriques sur les suppressions basées sur la durée de vie. Cloud Firestore fournit les métriques suivantes pour la durée de vie :

firestore.googleapis.com/document/ttl_deletion_count Nombre de suppressions de durée de vie

Nombre total de documents supprimés par les politiques de durée de vie (TTL).

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Expiration de la durée de vie jusqu'aux délais de suppression

Temps écoulé entre le moment où un document a expiré en vertu d'une politique de durée de vie (TTL) et le moment où il a été effectivement supprimé.

Pour configurer un tableau de bord avec des métriques Cloud Firestore, consultez gérer un tableau de bord personnalisé et ajouter des widgets de tableau de bord .