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 durée de vie
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 genre donné. Le TTL vous permet de 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 le prix 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 définir jusqu'à 1 000 règles TTL.
Suppression TTL
Voici les principaux comportements de la suppression basée sur le délai avant expiration :
La suppression via le 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. Le délai de suppression des transactions TTL est plus long, mais le coût total de possession des suppressions est réduit. Les données sont généralement supprimées dans les 24 heures suivant leur date d'expiration.
La suppression d'une entité via le TTL ne supprime pas les entités descendantes de cette entité.
Si vous appliquez une règle TTL à un type existant, toutes les données expirées selon la nouvelle règle TTL seront supprimées de manière groupée. 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 une heure d'expiration passée 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.
Le TTL ne supprime pas nécessairement les entités dans le même ordre que leurs codes temporels d'expiration.
Les suppressions ne sont pas effectuées de manière transactionnelle. Les entités ayant la même heure 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 l'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é ne sera pas expirée et 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 ne renseignez pas le champ ou que vous le définissez sur une valeur telle quenull, vous pouvez désactiver les expirations 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 déclenchées par le TTL sont traitées avec une priorité plus faible. 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. Toutefois, comme une propriété TTL est un code temporel, l'indexation de la propriété peut affecter les performances en cas de trafic élevé. L'indexation d'une propriété d'horodatage ne respecte pas les bonnes pratiques et peut créer des points chauds. Les points chauds 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 stratégie TTL doit disposer de l'autorisation suivante dans le projet :
- Pour afficher les règles TTL, vous devez disposer des autorisations
datastore.indexes.listetdatastore.indexes.get. - Pour modifier les règles TTL, vous devez disposer de l'autorisation
datastore.indexes.update. - Pour vérifier l'état des opérations TTL, vous devez disposer des autorisations
datastore.operations.listetdatastore.operations.get.
Pour connaître les rôles qui attribuent ces autorisations, consultez Rôles Identity and Access Management pour Datastore.
Créer une règle TTL
Lorsque vous créez une règle TTL, vous désignez une propriété d'entité comme heure 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 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é 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 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 TTL sera désactivée pour l'entité individuelle.
Pour créer une règle TTL :
Console Google Cloud
Dans la console Google Cloud , accédez à la page Bases de données.
Sélectionnez la base de données requise dans la liste des bases de données.
Dans le menu de navigation, cliquez sur Durée de vie.
Cliquez sur Créer une règle.
Saisissez un nom de type et un nom de propriété de code temporel.
Facultatif : Configurez un délai d'expiration. Saisissez une valeur et sélectionnez une unité (jours, heures, minutes ou secondes). Par défaut, le décalage est défini sur 0.
Cliquez sur Créer.
La console revient à la page Délai avant expiration. 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
-
Dans la console Google Cloud , activez Cloud Shell.
En bas 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.
Exécutez la commande
firestore fields ttls updatepour configurer une règle TTL. Ajoutez l'indicateur--asyncpour 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 le 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
7dpour sept jours ou24hpour 24 heures. Si vous omettez ce flag, le décalage d'expiration est défini sur 0 par défaut.
L'activation d'une règle TTL peut prendre au moins 10 minutes. Une fois que vous avez lancé une opération, la fermeture du terminal ne l'annule pas.
Afficher les règles TTL
Suivez les étapes ci-dessous pour afficher les règles TTL et leur état.
Console Google Cloud
Dans la console Google Cloud , accédez à la page Bases de données.
Sélectionnez la base de données requise dans la liste des bases de données.
Dans le menu de navigation, cliquez sur Durée de vie.
La console Google Cloud liste les règles TTL pour votre base de données et inclut l'état de chaque règle.
gcloud
-
Dans la console Google Cloud , activez Cloud Shell.
En bas 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.
Exécutez la commande
firestore fields ttls listpour afficher une règle TTL. La commande suivante liste toutes les règles TTL.gcloud firestore fields ttls list
Pour lister 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 à l'état CREATING.
Utilisez la commande operations list pour afficher toutes les opérations en cours 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
Dans la console Google Cloud , accédez à la page Bases de données.
Sélectionnez la base de données requise dans la liste des bases de données.
Dans le menu de navigation, cliquez sur Durée de vie.
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 (icône en forme de corbeille).
Confirmez l'opération en cliquant sur Supprimer.
La console Google Cloud revient à la page Délai avant expiration. En cas de réussite, Datastore supprime la règle TTL de la table.
gcloud
-
Dans la console Google Cloud , activez Cloud Shell.
En bas 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.
Exécutez la commande
firestore fields ttls updatepour configurer une règle TTL. Ajoutez l'indicateur--asyncpour 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 le TTL. Datastore fournit les métriques suivantes pour le 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 Gérer les tableaux de bord personnalisés et Ajouter des widgets de tableau de bord.