Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

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

Cette page explique comment utiliser Google Cloud Console et Google Cloud CLI pour configurer des règles de valeur TTL (Time To Live). Avant de lire cette page, vous devez comprendre le modèle de données Firestore.

Présentation de la durée de vie

Utilisez des règles de valeur TTL (Time To Live) pour supprimer automatiquement les données obsolètes de vos bases de données. Une règle TTL désigne un champ donné comme délai d'expiration pour les documents d'un groupe de collections donné. La valeur TTL vous permet de réduire les coûts de stockage en éliminant les données obsolètes. Les données sont généralement supprimées dans les 72 heures suivant leur date d'expiration.

Tarifs

Les opérations de suppression TTL sont comptabilisées dans les coûts de suppression des documents. Pour connaître les tarifs des opérations de suppression, consultez la page Tarifs de 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 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 configuration de champ dans la limite.

Suppression de la valeur TTL

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

  • La suppression via la valeur TTL n'est pas un processus instantané. Les documents arrivés à expiration continuent d'apparaître dans les requêtes et les requêtes de recherche jusqu'à ce que le processus TTL les supprime réellement. La valeur TTL échange la rapidité de suppression au profit du coût total de possession des 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 la valeur TTL ne supprime pas les sous-collections de 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 qui ont expiré conformément à la nouvelle règle TTL. Notez que cette suppression groupée n'est pas instantanée et dépend de la quantité de données qui existe pour ce groupe de collections.

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

  • Les suppressions ne s'effectuent pas 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.

  • Firestore respecte toujours le dernier champ TTL pour déterminer le délai d'expiration. Par exemple, si le champ "TTL" d'un document arrivé à expiration mais pas encore supprimé est mis à jour vers une date ultérieure, le document n'expirera pas 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 générées par la valeur TTL sont traitées avec une priorité inférieure. D'autres stratégies sont également mises en place pour lisser les pics de trafic provenant des suppressions basées sur TTL.

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

Champs et index TTL

Un champ TTL peut être indexé ou non indexé. Toutefois, comme 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 hotspots, ce qui va à l'encontre des bonnes pratiques. Les zones cliquables sont des taux élevés de lecture, d'écriture et de suppression dans 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 de champs individuels pour désactiver les index d'un champ TTL.

Autorisations

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

  • Pour afficher les règles TTL, vous devez disposer des 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 en savoir plus sur les rôles qui attribuent ces autorisations, consultez la section Rôles.

Avant de commencer

Avant d'utiliser gcloud CLI pour gérer les règles TTL, exécutez 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 pour les documents d'un groupe de collections.

La valeur 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 points suivants avant de définir la valeur du champ TTL:

  • La valeur du champ "TTL" peut être située dans le futur, dans le passé 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 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, la valeur TTL est désactivée pour chaque document.

Pour créer une règle TTL, procédez comme suit:

Console Google Cloud

  1. Accédez à la page Valeur TTL dans Firestore de la console Google Cloud.

    Accéder à la page "Valeur TTL"

  2. Cliquez sur Créer une règle.

  3. Saisissez un nom de groupe de collections et un nom de champ d'horodatage.

  4. Cliquez sur Créer.

La console renvoie à la page Valeur TTL. Si l'opération démarre correctement, la page ajoute une entrée à la table des règles TTL. En cas d'échec, la page affiche un message d'erreur.

gcloud

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Exécutez la commande firestore fields ttls update pour configurer une règle TTL. Ajoutez l'option --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 dans le cas d'une base de données vide, l'activation d'une règle TTL peut prendre 10 minutes ou plus. Une fois que vous avez démarré une opération, la fermeture du terminal n'annule pas l'opération.

Afficher les règles TTL

Suivez les étapes ci-dessous pour afficher les règles TTL et leurs états.

Console Google Cloud

Accédez à la page Valeur TTL dans Firestore de la console Google Cloud.

Accéder à la page "Valeur TTL"

La console répertorie les règles TTL de votre base de données et inclut l'état de chaque règle.

gcloud

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Exécutez la commande firestore fields ttls list pour configurer une règle TTL. La commande suivante répertorie toutes les règles TTL.

    gcloud firestore fields ttls list
    

    Pour répertorier les règles TTL d'un groupe de collections spécifique, utilisez le code suivant:

    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 règle TTL dont l'état est CREATING.

Utilisez la commande operations list pour afficher toutes les opérations en cours d'exécution et récemment terminées:

gcloud firestore operations list

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

Désactiver une règle TTL

Suivez les étapes ci-dessous pour désactiver une règle TTL.

Console Google Cloud

  1. Accédez à la page Valeur TTL dans Firestore de la console Google Cloud.

    Accéder à la page "Valeur TTL"

  2. 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 (corbeille).

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

La console renvoie à la page Valeur TTL. En cas de réussite, Firestore supprime la règle TTL de la table.

gcloud

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Exécutez la commande firestore fields ttls update pour configurer une règle TTL. Ajoutez l'option --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 concernant les suppressions basées sur TTL. Firestore fournit les métriques TTL suivantes:

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

Nombre total de documents supprimés par les règles TTL (Time To Live).

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Délais d'expiration et de suppression en temps réel

Temps écoulé entre la date d'expiration d'un document en vertu d'une règle de valeur TTL (Time To Live) 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.