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

Cette page explique comment utiliser la Google Cloud console et la 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 du mode Datastore.

Présentation de la valeur TTL

Utilisez des règles de valeur TTL pour supprimer automatiquement les données obsolètes de vos bases de données. Une règle TTL désigne une propriété donnée comme délai d'expiration pour les entités d'un type donné. Avec la valeur 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 24 heures suivant leur date d'expiration.

Tarifs

Les opérations de suppression TTL sont comptabilisées dans vos coûts de suppression d'entités. Pour connaître les tarifs des opérations de suppression, consultez la page Tarifs de Firestore en mode Datastore.

Limites et contraintes

  • Vous ne pouvez marquer qu'une seule propriété par type comme propriété TTL.
  • Vous pouvez avoir un maximum de 1 000 règles TTL.

Suppression TTL

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

  • La suppression via la valeur TTL n'est pas un processus instantané. Les entités expirées continuent d'apparaître dans les requêtes et les demandes de recherche jusqu'à ce que le processus TTL les supprime réellement. La valeur TTL échange la rapidité de suppression au profit d'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'une entité via la valeur TTL ne supprime pas les entités descendantes de cette entité.

  • L'application d'une règle TTL à un type 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 existantes pour ce type.

  • Si une entité a un délai d'expiration dans le passé et que vous ajoutez une nouvelle règle TTL au type, l'entité sera supprimée 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 entités dans le même ordre que leurs horodatages d'expiration.

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

  • Le mode Datastore respectera toujours le dernier champ TTL pour déterminer le délai d'expiration. Par exemple, si le champ TTL d'une entité expirée mais pas encore supprimée est mis à jour à une date ultérieure, l'entité n'expirera pas et la nouvelle date sera utilisée.

  • Le mode Datastore n'expirera un document que lorsque le champ TTL est défini sur un type Timestamp. Si vous laissez le champ absent ou défini sur une valeur telle que null, les délais d'expiration peuvent être désactivés par document.

  • 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 lisser les pics de trafic dus aux suppressions basées sur la valeur TTL.

Propriétés et index TTL

Une propriété TTL peut être indexée ou non indexée. Toutefois, comme une propriété TTL est un horodatage, l'indexation de la propriété peut affecter les performances à des taux de trafic plus élevés. L'indexation d'une propriété d'horodatage est contraire aux bonnes pratiques et peut créer des hotspots. Les hotspots sont des taux de lecture, d'écriture et de suppression élevés pour une plage de clés étroite.

Par défaut, Datastore crée un index intégré pour toutes les propriétés. Vous pouvez exclure une propriété des index pour désactiver les index sur une propriété TTL.

Autorisations

Le compte principal qui configure une règle 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.
  • La vérification de l'état des opérations TTL nécessite datastore.operations.list et datastore.operations.get.

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

Créer une règle TTL

Lorsque vous créez une règle TTL, vous désignez une propriété d'entité comme délai d'expiration pour les entités d'un type. La règle TTL s'applique au type spécifié dans tous les espaces de noms.

La valeur TTL utilise une propriété spécifiée pour identifier les entités éligibles à la suppression. Cette propriété TTL doit être de type Date and time. Vous pouvez sélectionner une propriété existante ou désigner une propriété que vous prévoyez d'ajouter ultérieurement.

Tenez compte des points suivants avant de définir la valeur de la propriété TTL :

  • La valeur de la propriété TTL peut être une heure future, actuelle ou passée. Si la valeur est une heure passée, l'entité est immédiatement éligible à la suppression. Par exemple, vous pouvez créer une règle TTL avec la propriété expireAt, que vous ajoutez ensuite aux entités existantes.

  • L'utilisation d'un autre type de données ou la non-définition de la valeur de la propriété TTL désactiveront la valeur TTL pour l'entité individuelle.

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

Google Cloud Console

  1. Dans la Google Cloud console, accédez à la page Bases 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 Time-to-live (Valeur TTL).

  4. Cliquez sur Create Policy (Créer une règle).

  5. Saisissez un nom de type et un nom de propriété d'horodatage.

  6. Facultatif : Configurez un Expiration offset (Décalage d'expiration). Saisissez une valeur et sélectionnez une unité (jours, heures, minutes ou secondes). Par défaut, le décalage est de 0.

  7. Cliquez sur Create (Créer).

La console revient à la page Time-to-live (Valeur TTL). 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. Dans la Google Cloud console, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la Google Cloud console, 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. Utilisez la firestore fields ttls update commande pour configurer une règle TTL. Ajoutez l'indicateur --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 

    Pour activer la valeur TTL avec un décalage d'expiration, ajoutez l'indicateur --expiration-offset :

    gcloud firestore fields ttls update \
       ttl_field \
       --collection-group=collection_group_name \
       --enable-ttl \
       --expiration-offset=expiration_offset 

    Remplacez expiration_offset par une durée, par exemple 7d pour 7 jours ou 24h pour 24 heures. Si vous omettez cet indicateur, le décalage d'expiration est défini par défaut sur 0.

L'activation d'une règle TTL peut prendre au moins dix minutes. Une fois que vous avez démarré une opération, la fermeture du terminal ne l'annule pas.

Afficher les règles TTL

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

Google Cloud Console

  1. Dans la Google Cloud console, accédez à la page Bases 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 Time-to-live (Valeur TTL).

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

gcloud

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

    Activer Cloud Shell

    En bas de la Google Cloud console, 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. Utilisez la firestore fields ttls list commande pour afficher 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 sous un type spécifique, utilisez la commande suivante :

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

Afficher les détails de l'opération

Vous pouvez utiliser la 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 celles qui ont été récemment effectuées :

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.

Google Cloud Console

  1. Dans la Google Cloud console, accédez à la page Bases 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 Time-to-live (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 Delete (Supprimer) (icône de corbeille).

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

La Google Cloud console revient à la page Time-to-live (Valeur TTL). En cas de réussite, Datastore supprime la règle TTL du tableau.

gcloud

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

    Activer Cloud Shell

    En bas de la Google Cloud console, 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. Utilisez la firestore fields ttls update commande pour configurer une règle TTL. Ajoutez l'indicateur --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 TTL

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

datastore.googleapis.com/entity/ttl_deletion_count Nombre de suppressions TTL

Nombre total d'entités supprimées par les règles TTL.

datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays Délai entre l'expiration de la valeur TTL et la suppression

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

Pour configurer un tableau de bord avec des métriques Datastore, consultez la page Gérer un tableau de bord personnalisé et ajouter des widgets de tableau de bord.