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

Cette page explique comment utiliser la console Google Cloud Platform et Google Cloud CLI pour configurer les stratégies 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 politiques de durée de vie (TTL) pour supprimer automatiquement les données obsolètes de vos bases de données. Une stratégie TTL désigne un champ donné comme délai d'expiration pour les documents d'un groupe de collecte donné. Avec TTL, vous pouvez réduire les coûts de stockage en nettoyant les données obsolètes. Les données sont généralement supprimées dans les 24 heures suivant leur date d'expiration.

Tarifs

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

Limites et contraintes

  • Un seul champ par groupe de collecte peut être marqué comme champ TTL.
  • Un total de 200 configurations au niveau du terrain sont autorisées. Une configuration de champ peut contenir plusieurs configurations pour le même champ. Par exemple, une exemption d'indexation sur un seul champ et une politique TTL sur le même champ comptent comme une configuration de champ dans la limite.
  • Pour les clients Firestore en mode Datastore, TTL ne peut pas être utilisé avec un mode de simultanéité Optimistic With Entity Groups . Pensez à changer le mode de concurrence après cela .

Suppression du TTL

Notez les comportements clés suivants de la suppression pilotée par 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 24 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 collecte existant entraîne une suppression groupée de toutes les données expirées conformément à la nouvelle stratégie TTL. Notez que cette suppression groupée n’est pas non plus instantanée et dépend de la quantité de données existant pour ce groupe de collecte.

  • Si un document a un délai d'expiration dans le passé et que vous ajoutez une nouvelle stratégie ttl à la collection, le document sera supprimé dans les 24 heures suivant la fin de la configuration de la stratégie ttl et son activation.

  • 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 ayant 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 le champ TTL d'un document expiré mais pas encore supprimé est mis à jour à une date ultérieure, le document ne sera pas expiré et la nouvelle date sera utilisée.

  • TTL est conçu pour minimiser l'impact sur les autres activités de 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 atténuer les pics de trafic dus aux suppressions basées sur le 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é. Toutefois, étant donné qu'un champ TTL est un horodatage, l'indexation du champ peut affecter les performances à des débits 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 points chauds correspondent à des taux de lecture, d'écriture et de suppression élevés sur une plage étroite de documents.

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 configurant une stratégie 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 de gestion des identités et des accès Cloud Firestore .

Avant que tu commences

Avant d'utiliser gcloud CLI pour gérer les stratégies 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 délai d'expiration pour les documents d'un groupe de collecte.

TTL utilise un champ spécifié pour identifier les documents pouvant être supprimés. Ce champ TTL doit être de type Date and time . Vous pouvez sélectionner un champ qui existe déjà ou 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 correspond à une heure passée, le document peut immédiatement être supprimé. 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 la durée de vie du document individuel.

Suivez les étapes ci-dessous pour créer une stratégie TTL :

Google Cloud Console

  1. Dans la console Google Cloud Platform, accédez à la page Bases de données .

    Aller aux bases de données

  2. Sélectionnez la base de données requise dans la liste des bases de données.

  3. Dans le menu de navigation, cliquez sur Durée de vie .

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

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

  6. Cliquez sur Créer .

La console revient à la page Durée de vie . Si l'opération démarre correctement, 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 stratégie TTL. Ajoutez l'indicateur --async pour empêcher gcloud CLI 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 démarrez 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 politiques TTL et leurs statuts.

Google Cloud Console

  1. Dans la console Google Cloud Platform, accédez à la page Bases de données .

    Aller aux bases de données

  2. Sélectionnez la base de données requise dans la liste des bases de données.

  3. Dans le menu de navigation, cliquez sur Durée de vie .

La console répertorie les stratégies TTL pour votre base de données et inclut le statut 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 gcloud CLI pour afficher plus de détails sur une stratégie TTL qui est à 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'avancement de l'opération.

Désactiver une politique TTL

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

Google Cloud Console

  1. Dans la console Google Cloud Platform, accédez à la page Bases de données .

    Aller aux bases de données

  2. Sélectionnez la base de données requise dans la liste des bases de données.

  3. Dans le menu de navigation, cliquez sur Durée de vie .

  4. Dans le tableau de stratégie TTL, recherchez la ligne correspondant à la stratégie TTL. Dans cette ligne du tableau, cliquez sur le bouton Supprimer (poubelle).

  5. 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 stratégie TTL. Ajoutez l'indicateur --async pour empêcher gcloud CLI 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 les 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 stratégies de durée de vie (TTL).

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

Temps écoulé entre le moment où un document a expiré selon une stratégie de durée de vie (TTL) et le moment où il a été réellement 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 .