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

Cette page explique comment configurer des règles valeur TTL (Time To Live) à l'aide de la console Google Cloud et de la Google Cloud CLI. 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 délai d'expiration des documents d'un groupe de collections donné. La valeur TTL vous permet de 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.

Tarification

Les opérations de suppression TTL sont comptabilisées dans le coût de suppression de vos documents. Pour connaître les tarifs des opérations de suppression, consultez les tarifs de Firestore.

Limites et contraintes

  • Un seul champ par groupe de collections peut être marqué en tant que champ TTL.
  • Un total de 200 configurations au niveau du champ est autorisée. 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 pour la limite.
  • Pour les clients Firestore en mode Datastore, la valeur TTL ne peut pas être utilisée avec le mode de simultanéité Optimiste avec des groupes d'entités. Envisagez de passer au mode de simultanéité optimiste.

Suppression de la valeur TTL

Notez les principaux comportements de la suppression basée sur la valeur 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 requêtes de recherche jusqu'à ce que le processus TTL les supprime réellement. La valeur TTL échange le délai de suppression des éléments 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 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 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 disponibles pour ce groupe de collections.

  • Si un document a un délai d'expiration dans le passé et que vous ajoutez une nouvelle règle TTL à la collection, le document est supprimé dans les 24 heures suivant la fin de la configuration et l'activation de la règle TTL.

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

  • Les suppressions ne sont pas transactionnelles. Les documents dont le délai d'expiration est identique ne sont pas nécessairement supprimés en même temps. Si vous exigez ce comportement, effectuez les suppressions à l'aide d'une bibliothèque cliente.

  • Firestore respecte toujours le dernier champ TTL pour déterminer l'expiration. Par exemple, si le champ TTL d'un document arrivé à expiration, mais pas encore supprimé, est mis à jour à 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 basées sur la valeur TTL sont traitées avec une priorité inférieure. D'autres stratégies sont également en place pour atténuer les pics de trafic liés aux suppressions basées sur la valeur TTL.

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

Champs et index TTL

Un champ TTL peut être indexé ou non indexé. Toutefois, comme un champ TTL est un horodatage, son indexation peut affecter les performances pour 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 points d'accès sont des taux de lecture, d'écriture et de suppression élevés pour une plage de documents étroite.

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 compte principal qui configure une règle TTL nécessite l'autorisation suivante dans le projet:

  • Les autorisations datastore.indexes.list et datastore.indexes.get sont nécessaires pour afficher les règles TTL.
  • L'autorisation datastore.indexes.update est requise pour modifier des règles TTL.
  • datastore.operations.list et datastore.operations.get sont nécessaires pour vérifier l'état des opérations TTL.

Pour connaître les rôles qui attribuent ces autorisations, consultez l'article Rôles IAM Firestore.

Avant de commencer

Avant d'utiliser la 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 susceptibles d'être supprimés. Ce champ TTL doit être du 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 correspondre à une date passée, à une date actuelle ou à une date passée. Si la valeur est une date 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 du document individuel sera désactivée.

Pour créer une règle 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 Valeur TTL.

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

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

  6. Cliquez sur Créer.

La console revient à 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 la 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 règle TTL peut prendre dix minutes ou plus. Lorsque vous lancez 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 leurs états, 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 Valeur TTL.

La console répertorie les règles TTL pour votre base de données et indique 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
    

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 règle 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 Valeur TTL.

  4. Dans le tableau des règles TTL, recherchez la ligne correspondant à la règle TTL. Dans cette ligne du tableau, cliquez sur le bouton Supprimer (corbeille).

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

La console revient à 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 la 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 valeurs TTL

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

Type de métrique Nom de la métrique Description de la métrique
firestore.googleapis.com/document/ttl_deletion_count Nombre de suppressions (Time To Live)

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

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Délais entre l'expiration de la valeur TTL et la suppression

Temps écoulé entre l'expiration d'un document avec 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.