Cette page explique comment utiliser la console Google Cloud et la Google Cloud CLI pour configurer des règles valeur TTL (Time To Live). Avant de lire cette page, vous devez comprendre Modèle de données Cloud Firestore.
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 un champ donné comme date d'expiration des documents d'un groupe de collections donné. Avec le 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 TTL sont comptabilisées dans les coûts de suppression de vos documents. Pour connaître les tarifs des opérations de suppression, consultez la section Tarifs de Cloud Firestore.
Limites et contraintes
- Un seul champ par groupe de collections peut être marqué comme champ TTL.
- Un total de 200 configurations au niveau des champs est autorisé. 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 que une configuration de champ pour atteindre la limite.
- Pour les clients Firestore en mode Datastore, la valeur TTL ne peut pas être utilisée avec un mode de simultanéité Optimiste avec les groupes d'entités. Envisagez de passer au mode de simultanéité optimiste.
Suppression de TTL
Notez les comportements clés suivants de la suppression basée sur des valeurs TTL:
La suppression via TTL n'est pas un processus instantané. Documents expirés continuent d'apparaître dans les requêtes et les requêtes de recherche jusqu'à ce que le processus TTL les supprime réellement. Le TTL échange la rapidité de suppression contre 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'un document via le TTL ne supprime pas les sous-collections sous ce document.
L'application d'une règle TTL à un groupe de collections 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 existant pour ce groupe de collection.
Si un document a une date d'expiration passée et que vous ajoutez une nouvelle règle TTL à la collection, le document sera supprimé dans un délai de 24 heures quand la règle TTL termine sa configuration et devient active.
La valeur TTL ne supprime pas nécessairement les documents dans le même ordre que leurs codes temporels.
Les suppressions ne sont pas effectuées de manière transactionnelle. Documents ayant la même date d'expiration ne sont pas nécessairement supprimés en même temps. Si vous avez besoin de cette effectuez les suppressions à l'aide d'une bibliothèque cliente.
Cloud Firestore respectera toujours le dernier champ TTL pour déterminer l'expiration. Par exemple, si un document arrivé à expiration, mais pas encore supprimé, possède son le champ TTL mis à jour à une date ultérieure, le document n'expirera pas et le la nouvelle date sera utilisée.
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.
La suppression via le TTL appelle tous les écouteurs d'instantanés actifs et déclenche les déclencheurs Cloud Firestore Cloud Functions.
Champs et index TTL
Un champ TTL peut être indexé ou non indexé. Toutefois, comme un champ TTL est un code temporel, l'indexation du champ peut affecter les performances à des débits de trafic plus élevés. L'indexation d'un champ de code temporel peut créer hotspots, ce qui va à l'encontre des bonnes pratiques. Les zones cliquables sont des taux de lecture, d'écriture et de suppression élevés pour une plage de documents étroite.
Par défaut, 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 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
etdatastore.indexes.get
. - La modification des règles TTL nécessite l'autorisation
datastore.indexes.update
. datastore.operations.list
etdatastore.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 Rôles Identity and Access Management Cloud Firestore.
Avant de commencer
Avant d'utiliser la gcloud CLI pour gérer les règles TTL, utilisez la
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 un champ de document pour la date d'expiration pour les documents d'un groupe de collections.
Le TTL utilise un champ spécifié pour identifier les documents pouvant être supprimés.
Ce champ TTL doit être de type Date and time
. Vous pouvez sélectionner un champ existant 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 dans le futur, maintenant ou dans le passé. Si la valeur correspond à une heure passée, le document peut être immédiatement supprimé. Par exemple, vous pouvez créer une règle TTL avec le champ
expireAt
, que vous ajoutez ensuite aux documents existants.Si vous utilisez tout autre type de données ou si vous ne définissez pas la valeur du champ TTL, la valeur TTL sera désactivée pour le document individuel.
Pour créer une stratégie TTL, procédez comme suit :
Console Google Cloud
Dans la console Google Cloud, accédez à la page Base 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 Valeur TTL.
Cliquez sur Créer une règle.
Saisissez un nom de groupe de collection et un nom de champ de code temporel.
Cliquez sur Créer.
La console revient à la page Durée de vie. Si l'opération démarre correctement, la page ajoute une entrée dans le tableau des règles TTL. En cas d'échec, la page affiche un message d'erreur.
gcloud
Utilisez la commande 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
Durée d'activation de la règle TTL
Même sur une base de données vide, l'activation d'une valeur TTL peut prendre dix minutes, voire plus. . Lorsque vous lancez une opération, la fermeture du terminal n'annule pas opération.
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 Base 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 répertorie les règles TTL de votre base de données et inclut chacune des règles état.
gcloud
Utilisez la commande firestore fields ttls list
pour configurer une règle TTL. La commande suivante répertorie toutes les valeurs TTL
règles.
gcloud firestore fields ttls list
Pour lister les règles TTL d'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 CLI gcloud pour afficher plus de détails sur une stratégie TTL qui est à l'état CREATING
.
Utilisez la commande operations list
pour afficher toutes les opérations en cours et 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 stratégie TTL, procédez comme suit :
Console Google Cloud
Dans la console Google Cloud, accédez à la page Base 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 Valeur TTL.
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).
Confirmez l'opération en cliquant sur Supprimer.
La console revient à la page Durée de vie. En cas de réussite, Cloud Firestore supprime la règle TTL du tableau.
gcloud
1. Utilisez le
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 --disable-ttl
Surveiller les suppressions de valeurs TTL
Vous pouvez utiliser Cloud Monitoring pour afficher les métriques sur les suppressions en fonction de 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 liées à la valeur TTL |
Nombre total de documents supprimés par les règles TTL. |
firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Délais d'expiration du délai de vie avant suppression |
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 métriques Cloud Firestore, consultez les pages Gérer un tableau de bord personnalisé et Ajouter des widgets de tableau de bord.