Cette page explique comment utiliser la console Google Cloud et Google Cloud CLI pour configurer des règles de valeur TTL (Time To Live). Avant de lire cette page, vous devez comprendre le Cloud Firestore modèle de données.
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 de valeur TTL désigne un champ donné comme délai d'expiration des documents d'un groupe de collections 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 de documents. Pour connaître les tarifs des opérations de suppression, consultez la page Cloud Firestore Tarifs.
Limites et contraintes
- Vous ne pouvez marquer qu'un seul champ par groupe de collections comme champ TTL.
- Vous pouvez avoir un maximum de 1 000 configurations au niveau des champs. 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 sont comptabilisées comme une seule configuration de champ par rapport à la limite.
- Pour les clients Firestore en mode Datastore, la valeur TTL ne peut pas être utilisée avec un mode de simultanéité Optimistic With Entity Groups. Envisagez de passer au mode de simultanéité Optimistic.
Suppression TTL
Notez les principaux comportements suivants de la suppression basée sur la valeur TTL :
La suppression via la valeur TTL n'est pas un processus instantané. Les documents expirés 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 des 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 en bloc de toutes les données expirées conformément à la nouvelle règle TTL. Notez que cette suppression en bloc n'est pas non plus instantanée et dépend de la quantité de données existantes pour ce groupe de collections.
Si un document a une heure d'expiration passée et que vous ajoutez une nouvelle règle TTL à la collection, le document sera 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 codes temporels d'expiration.
Les suppressions ne sont pas effectuées de manière transactionnelle. Les documents ayant la même heure d'expiration ne sont pas nécessairement supprimés en même temps. Si vous avez besoin de ce comportement, effectuez les suppressions à l'aide d'une bibliothèque cliente.
Cloud Firestore respecte toujours le dernier champ TTL pour déterminer l' expiration. Par exemple, si le champ TTL d'un document expiré mais non encore supprimé est mis à jour à une date ultérieure, le document n'expire pas et la nouvelle date est utilisée.
Cloud Firestore n'expire un document que lorsque le champ TTL est défini sur des types de valeurs spécifiques. Pour les bases de données de l'édition Standard, le champ doit être défini sur une valeur
Date and time. Pour les bases de données de l'édition Enterprise, le champ doit être défini sur une valeurDate and timeou une valeurArraycontenant une valeurDate and time. Si vous laissez le champ absent ou défini sur une valeur telle quenull, les expirations peuvent être désactivées 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.
La suppression via la valeur TTL appelle tous les écouteurs d'instantanés actifs et déclenche les déclencheurs Cloud Functions Cloud Firestore.
Champs et index TTL
Un champ TTL peut être indexé ou non. Toutefois, comme un champ TTL est un code temporel, l'indexation du champ peut affecter les performances à des taux de trafic plus élevés. L'indexation d'un champ de code temporel peut créer des hotspots, ce qui n'est pas recommandé. Les hotspots sont des taux de lecture, d'écriture et de suppression élevés pour une plage de documents restreinte.
Par défaut, l'édition Standard Cloud 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 :
- L'affichage des règles TTL nécessite les autorisations
datastore.indexes.listetdatastore.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.listetdatastore.operations.get.
Pour connaître les rôles qui attribuent ces autorisations, consultez la section Cloud Firestore Rôles de gestion de l'authentification et des accès.
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 des documents d'un groupe de collections.
La valeur TTL utilise un champ spécifié pour identifier les documents éligibles à la suppression.
Pour les bases de données de l'édition Standard, le champ TTL doit être défini sur une valeur Date and time.
Pour les bases de données de l'édition Enterprise, il doit être défini sur une valeur Date and time ou une valeur Array contenant une valeur Date and time. Vous pouvez sélectionner un champ qui existe déjà ou en désigner un 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 être une heure future, actuelle ou passée. Si la valeur est une heure passée, le document est immédiatement éligible à la suppression. Par exemple, vous pouvez créer une règle TTL avec le champ
expireAt, que vous ajoutez ensuite aux documents existants.L'utilisation de tout autre type de données ou la non-définition de la valeur du champ TTL désactivera la valeur TTL pour le document individuel.
Pour créer une règle TTL, procédez comme suit :
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 Time-to-live.
Cliquez sur Créer une règle.
Saisissez un nom pour le groupe de collections et un nom pour le champ de code temporel.
Cliquez sur Créer.
La console revient à la page Time-to-live. 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
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
Durée d'activation de la règle TTL
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 :
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 Time-to-live.
La console affiche la liste des règles TTL de votre base de données, ainsi que l'état de chaque règle.
gcloud
Utilisez la
firestore fields ttls list
commande pour configurer une règle TTL. La commande suivante répertorie toutes les règles TTL
policies.
gcloud firestore fields ttls list
Pour répertorier les règles TTL sous un groupe de collections 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 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 :
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 Time-to-live.
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).
Confirmez l'opération en cliquant sur Supprimer.
La console revient à la page Time-to-live. En cas de réussite, Cloud Firestore supprime la règle TTL du tableau.
gcloud
1. 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. Cloud Firestore fournit les métriques suivantes pour la valeur TTL :
| Type de métrique | Nom de la métrique | Description de la métrique |
|---|---|---|
| firestore.googleapis.com/document/ttl_deletion_count | Nombre de suppressions TTL |
Nombre total de documents supprimés par les règles TTL. |
| firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Délai entre l'expiration et la suppression TTL |
Temps écoulé entre l'expiration d'un document en vertu d'une règle TTL et sa suppression effective. |
Pour configurer un tableau de bord avec des Cloud Firestore métriques, consultez les pages Gérer un tableau de bord personnalisé et Ajouter des widgets de tableau de bord.