Gérer la conservation des données à l'aide de 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 du mode Datastore.

Présentation de la valeur TTL (Time To Live)

Utilisez des règles TTL pour supprimer 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 des entités d'un type donné. Avec la valeur 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 d'entités. 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 comme propriété TTL.
  • Un total de 200 règles TTL est autorisé.

Suppression de TTL

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

  • La suppression via TTL n'est pas un processus instantané. 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. TTL échange la rapidité de suppression au profit de de réduction du coût total de possession des 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 le descendant de cette entité entités.

  • L'application d'une règle TTL à un type 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 non plus instantanée et dépend de la quantité de données existe 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é est supprimée sous 24 heures de la fin de la configuration de la règle TTL, qui devient active.

  • La valeur TTL ne supprime pas nécessairement les entités dans le même ordre que leurs codes temporels.

  • Les suppressions ne sont pas effectuées de manière transactionnelle. Les entités ayant la même date 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 respecte toujours le dernier champ TTL pour déterminer la date d'expiration. Par exemple, si une entité expirée, mais pas encore supprimée a son le champ TTL mis à jour à une date ultérieure, l'entité n'expirera pas et le la nouvelle date sera utilisée.

  • Le mode Datastore n'expire un document que lorsque le champ TTL est défini sur un type Timestamp. Si vous laissez le champ vide ou le définissez sur une valeur telle que null, vous pouvez désactiver les expirations par document.

  • La valeur TTL est conçue pour minimiser l'impact sur les autres activités de base de données. Suppressions induites par la valeur TTL sont traités 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.

Propriétés et index TTL

Une propriété TTL peut être indexée ou non indexée. Cependant, comme une propriété TTL est un horodatage, l'indexation de la propriété peut affecter les performances en cas de trafic plus élevé taux de conversion. L'indexation d'une propriété de code temporel va à l'encontre des bonnes pratiques et peut créer points d'accès. Les zones cliquables sont des taux élevés de lecture, d'écriture et de suppression pour une clé étroite la plage d'adresses IP.

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 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 le datastore.indexes.update l'autorisation.
  • 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 section Rôles de gestion de l'authentification et des accès Datastore.

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 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 pouvant être supprimées. Cette propriété TTL doit être de type Date and time. Vous pouvez sélectionner une propriété existante ou en désigner une que vous prévoyez d'ajouter plus tard.

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 dans le futur, maintenant ou dans le passé. Si la valeur correspond à une date passée, l'entité peut être supprimée immédiatement. Par exemple : vous pouvez créer une règle TTL avec la propriété expireAt, que vous ajoutez ensuite à 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, le TTL sera désactivé pour l'entité individuelle.

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 Durée de vie.

  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 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 les firestore fields ttls update pour configurer une règle TTL. Ajoutez l'indicateur --async pour empêcher la CLI gcloud 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 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 Valeur TTL.

La console répertorie les règles TTL de votre base de données et inclut chacune des règles état.

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 les 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 dont l'état est CREATING.

Utilisez la commande operations list pour afficher tous les éléments en cours d'exécution et opérations 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

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 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 Valeur TTL. En cas de succès, Datastore supprime la règle 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'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 valeurs TTL

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

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

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

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

Temps écoulé entre le moment où une entité a expiré sous une valeur TTL et la date de suppression effective.

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.