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

Cette page explique comment configurer des règles 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 du mode Datastore.

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 une propriété donnée comme délai d'expiration pour les entités d'un genre 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 les coûts de suppression d'entité. Pour connaître les tarifs des opérations de suppression, consultez la section Tarifs de Firestore en mode Datastore.

Limites et contraintes

  • Une seule propriété par genre peut être marquée en tant que propriété TTL.
  • Un total de 200 règles TTL est autorisé.

Suppression de la valeur TTL

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

  • La suppression via TTL n'est pas un processus instantané. Les entités expirées 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 négocie les délais de suppression pour bénéficier 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'une entité via la valeur TTL ne supprime pas les entités descendantes de cette entité.

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

  • Si une entité a un délai d'expiration dans le passé et que vous ajoutez une nouvelle règle ttl au genre, l'entité sera supprimée dans les 24 heures suivant la fin de la configuration de la règle et son activation.

  • 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 exigez ce comportement, effectuez les suppressions à l'aide d'une bibliothèque cliente.

  • Le mode Datastore respecte 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'expire un document que lorsque le champ TTL est défini sur le type Timestamp. Si vous ne renseignez pas ce champ ou si vous le définissez sur une valeur telle que null, les dates d'expiration peuvent être désactivées pour chaque 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 atténuer les pics de trafic liés 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, son indexation peut affecter les performances pour des taux de trafic plus élevés. L'indexation d'une propriété d'horodatage va à l'encontre des bonnes pratiques et peut créer des zones cliquables. Les points d'accès 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:

  • Pour afficher les règles TTL, vous devez disposer des autorisations datastore.indexes.list et datastore.indexes.get.
  • L'autorisation datastore.indexes.update est nécessaire pour modifier les 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 la page Rôles Identity and Access Management Datastore.

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 une propriété d'entité comme délai d'expiration pour les entités d'un genre. La règle TTL s'applique au genre spécifié dans tous les espaces de noms.

La valeur TTL utilise une propriété spécifiée pour identifier les entités pouvant être supprimées. Cette propriété TTL doit être de type Date and time. Vous pouvez sélectionner une propriété qui existe déjà ou en désigner une 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 date passée, passée ou future. Si la valeur est une date 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.

  • Si vous utilisez un autre type de données ou si vous ne définissez pas la valeur de la propriété TTL, la valeur TTL est désactivée pour l'entité individuelle.

Suivez les étapes ci-dessous pour créer une règle TTL:

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 genre et un nom de propriété 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 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 règle TTL peut prendre dix minutes ou plus. Une fois une opération lancée, 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 leur état.

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 liste les règles TTL pour 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 sous un genre 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 la gcloud CLI pour afficher plus de détails sur une règle TTL à l'état 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. 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. Sur 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, Datastore 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 de valeur TTL

Vous pouvez utiliser Cloud Monitoring pour afficher les métriques concernant 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

Délai entre le moment où une entité a expiré selon une règle TTL et le moment où elle a été réellement supprimée.

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