Gérer la conservation des données avec des règles TTL

Cette page explique comment utiliser la console Google Cloud et la Google Cloud CLI 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 Firestore.

Présentation de la valeur TTL

Utilisez des règles TTL pour supprimer automatiquement les données obsolètes de vos bases de données. Une règle TTL désigne un champ donné comme date d'expiration des documents d'un groupe de collections donné. Avec le 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 par expiration de délai avant suppression sont comptabilisées dans les coûts de suppression de documents. Pour connaître les tarifs des opérations de suppression, consultez la page Tarifs de Firestore.

Limites et contraintes

  • Vous ne pouvez marquer qu'un seul champ par groupe de collections comme champ TTL.
  • Un total de 200 configurations au niveau du champ est autorisé. Une configuration de champ peut contenir plusieurs configurations pour le même champ. Par exemple, une exception d'indexation à champ unique et une règle TTL sur le même champ comptent comme une seule configuration de champ vers la limite.
  • Pour les clients Firestore en mode Datastore, la valeur TTL ne peut pas être utilisée avec un mode de simultanéité Optimistic With Entity Groups (Optimiste avec des groupes d'entités). Envisagez de définir le mode de simultanéité sur le mode de simultanéité optimiste.

Suppression de TTL

Notez les principaux comportements de la suppression basée sur le TTL:

  • La suppression via le TTL n'est pas un processus instantané. Les documents expirés continuent d'apparaître dans les requêtes et les requêtes de recherche jusqu'à ce que le processus TTL les supprime. Le TTL échange la rapidité de suppression contre une réduction du coût total de possession 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 le TTL ne supprime pas les sous-collections sous ce document.

  • L'application d'une règle TTL à un groupe de collections existant entraîne la suppression groupée de toutes les données expirées conformément à la nouvelle règle 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 collection.

  • Si la date d'expiration d'un document est antérieure et que vous ajoutez une règle TTL à la collection, le document sera supprimé dans les 24 heures suivant la fin de la configuration de la règle TTL et sa mise en service.

  • Le TTL ne supprime pas nécessairement les documents dans l'ordre de leurs codes temporels d'expiration.

  • Les suppressions ne sont pas effectuées de manière transactionnelle. Les documents ayant la même date 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.

  • Firestore respectera toujours le dernier champ TTL pour déterminer l'expiration. Par exemple, si la date d'expiration d'un document expiré mais pas encore supprimé est mise à jour, le document ne sera pas expiré et la nouvelle date sera utilisée.

  • La valeur TTL est conçue pour minimiser l'impact sur les autres activités de base de données. Les suppressions basées sur le TTL sont traitées avec une priorité inférieure. D'autres stratégies sont également mises en place pour atténuer les pics de trafic dus aux suppressions basées sur le TTL.

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

Champs et index TTL

Un champ TTL peut être indexé ou non. Toutefois, comme un champ TTL est un code temporel, 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 est contraire aux bonnes pratiques. Les hotspots sont des taux de lecture, d'écriture et de suppression élevés pour une plage de documents restreinte.

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

Autorisations

Le principal qui configure une stratégie TTL nécessite l'autorisation suivante dans le projet:

  • L'affichage des règles TTL nécessite les autorisations datastore.indexes.list et datastore.indexes.get.
  • La modification des règles TTL nécessite l'autorisation datastore.indexes.update.
  • Pour vérifier l'état des opérations TTL, vous devez utiliser datastore.operations.list et datastore.operations.get.

Pour connaître les rôles qui attribuent ces autorisations, consultez la section Rôles de Identity and Access Management Firestore.

Avant de commencer

Avant d'utiliser la CLI 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 règle TTL

Lorsque vous créez une règle TTL, vous désignez un champ de document comme délai d'expiration des documents d'un groupe de collections.

Le 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 existant ou en désigner un que vous prévoyez d'ajouter ultérieurement.

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

  • La valeur du champ TTL peut être une heure future, actuelle ou passée. Si la valeur correspond à une heure passée, le document peut être immédiatement supprimé. Par exemple, vous pouvez créer une règle TTL avec le champ expireAt, que vous ajoutez ensuite aux documents existants.

  • Si vous utilisez un autre type de données ou si vous ne définissez pas la valeur du champ TTL, le TTL sera désactivé pour le document individuel.

Pour créer une stratégie TTL, procédez comme suit:

Console Google Cloud

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

    Accéder à la page "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 règle.

  5. Saisissez un nom de groupe de collection et un nom de champ de code temporel.

  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 règles TTL. En cas d'échec, la page affiche un message d'erreur.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Utilisez la commande firestore fields ttls update pour configurer une règle 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 

Durée d'activation de la règle 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 règles TTL

Pour afficher les règles TTL et leur état, procédez comme suit:

Console Google Cloud

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

    Accéder à la page "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 règles TTL de votre base de données et inclut l'état de chaque règle.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Utilisez la commande firestore fields ttls list pour configurer une règle TTL. La commande suivante liste toutes les règles TTL.

    gcloud firestore fields ttls list
    

    Pour lister les règles TTL d'un groupe de collections spécifique, utilisez la commande suivante:

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

View operation details

You can use the gcloud CLI to view more details about a TTL policy that is in the CREATING state.

Use the operations list command to see all running and recently completed operations:

gcloud firestore operations list

La réponse inclut une estimation de la progression de l'opération.

Désactiver une règle TTL

Pour désactiver une stratégie TTL, procédez comme suit:

Console Google Cloud

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

    Accéder à la page "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 des règles TTL, recherchez la ligne correspondant à la règle TTL. Sur cette ligne du tableau, cliquez sur le bouton Supprimer (poubelle).

  5. Confirmez l'opération en cliquant sur Supprimer.

La console revient à la page Durée de vie. Si l'opération réussit, Firestore supprime la stratégie TTL de la table.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Utilisez la commande firestore fields ttls update pour configurer une règle 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 de TTL

Vous pouvez utiliser Cloud Monitoring pour afficher les métriques sur les suppressions basées sur le TTL. Firestore fournit les métriques suivantes pour le TTL:

Type de métrique Nom de la métrique Description de la métrique
firestore.googleapis.com/document/ttl_deletion_count Nombre de suppressions liées à la valeur TTL

Nombre total de documents supprimés par les règles TTL.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Délais d'expiration du délai de vie avant suppression

Temps écoulé entre l'expiration d'un document en vertu d'une règle TTL et sa suppression effective.

Pour configurer un tableau de bord avec des métriques Firestore, consultez Gérer un tableau de bord personnalisé et Ajouter des widgets de tableau de bord.