Cette page décrit comment utiliser la console Google Cloud Platform et l'interface de ligne de commande Google Cloud 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 Cloud Firestore .
Aperçu de la durée de vie
Utilisez des règles de durée de vie (TTL) pour supprimer automatiquement les données obsolètes de vos bases de données. Une politique TTL désigne un champ donné comme heure d'expiration des documents dans un groupe de collections donné. Avec 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 72 heures suivant leur date d'expiration.
Tarification
Les opérations de suppression TTL sont prises en compte dans vos coûts de suppression de documents. Pour connaître la tarification des opérations de suppression, consultez Tarification 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 du champ sont autorisées. Une configuration de champ peut contenir plusieurs configurations pour le même champ. Par exemple, une exemption d'indexation à champ unique et une stratégie TTL sur le même champ comptent comme une configuration de champ dans la limite.
Suppression TTL
Notez les comportements clés suivants de la suppression basée sur TTL :
La suppression via 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. TTL échange la rapidité de suppression au profit d'un coût total de possession réduit pour les suppressions. Les données sont généralement supprimées dans les 72 heures suivant leur date d'expiration.
La suppression d'un document via TTL ne supprime pas les sous-collections sous ce document.
L'application d'une stratégie TTL sur un groupe de collections existant entraîne une suppression en masse de toutes les données qui ont expiré conformément à la nouvelle stratégie 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 collecte.
TTL ne supprime pas nécessairement les documents dans le même ordre que leurs horodatages d'expiration.
Les suppressions ne sont pas effectuées de manière transactionnelle. Les documents avec le même délai 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 respectera toujours le dernier champ TTL pour déterminer l'expiration. Par exemple, si un document expiré mais pas encore supprimé voit son champ TTL mis à jour à une date ultérieure, le document n'expirera pas et la nouvelle date sera utilisée.
TTL est conçu pour minimiser l'impact sur les autres activités de la base de données. Les suppressions pilotées par 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 pilotées par TTL.
La suppression via 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 indexé. Cependant, étant donné qu'un champ TTL est un horodatage, l'indexation du champ peut affecter les performances à des taux de trafic plus élevés. L'indexation d'un champ d'horodatage peut créer des points chauds , ce qui va à l'encontre des meilleures pratiques. Les hotspots 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 exemption d'index à champ unique pour désactiver les index sur un champ TTL.
Autorisations
Le mandataire qui configure une règle TTL nécessite l'autorisation suivante dans le projet :
- L'affichage des stratégies TTL nécessite les autorisations
datastore.indexes.list
etdatastore.indexes.get
. - La modification des stratégies TTL nécessite l'autorisation
datastore.indexes.update
. - La vérification de l'état des opérations TTL nécessite
datastore.operations.list
etdatastore.operations.get
.
Pour les rôles qui attribuent ces autorisations, consultez Rôles Cloud Firestore Identity and Access Management .
Avant que tu commences
Avant d'utiliser l'interface de ligne de commande 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 politique TTL
Lorsque vous créez une stratégie TTL, vous désignez un champ de document comme heure d'expiration des documents dans un groupe de collections.
TTL utilise un champ spécifié pour identifier les documents éligibles à la suppression. Ce champ TTL doit être de type Date and time
. Vous pouvez sélectionner un champ qui existe déjà ou vous pouvez désigner un champ que vous prévoyez d'ajouter ultérieurement.
Tenez compte des éléments 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 est une heure passée, le document est immédiatement éligible à la suppression. Par exemple, vous pouvez créer une stratégie 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 le TTL pour le document individuel.
Suivez les étapes ci-dessous pour créer une règle TTL :
Google Cloud Console
Accédez à la page Cloud Firestore Time-to-live dans la console Google Cloud Platform.
Cliquez sur Créer une stratégie .
Entrez un nom de groupe de collecte et un nom de champ d'horodatage.
Cliquez sur Créer .
La console revient à la page Durée de vie . Si l'opération démarre avec succès, la page ajoute une entrée au tableau des stratégies TTL. En cas d'échec, la page affiche un message d'erreur.
gcloud
Utilisez la commande firestore fields ttls update
pour configurer une politique TTL. Ajoutez l'indicateur --async
pour empêcher l'interface de ligne de commande 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 politiques TTL
Suivez les étapes ci-dessous pour afficher les stratégies TTL et leurs statuts.
Google Cloud Console
Accédez à la page Cloud Firestore Time-to-live dans la console Google Cloud Platform.
La console répertorie les stratégies TTL pour votre base de données et inclut l'état de chaque stratégie.
gcloud
Utilisez la commande firestore fields ttls list
pour configurer une stratégie TTL. La commande suivante répertorie toutes les stratégies TTL.
gcloud firestore fields ttls list
Pour répertorier les stratégies TTL sous un groupe de collecte spécifique, utilisez ce qui suit :
gcloud firestore fields ttls list --collection-group=collection_group_name
Afficher les détails de l'opération
Vous pouvez utiliser l'interface de ligne de commande gcloud pour afficher plus de détails sur une règle TTL à l'état CREATING
.
Utilisez la commande operations list
pour voir toutes les opérations en cours et récemment terminées :
gcloud firestore operations list
La réponse comprend une estimation de l'état d'avancement de l'opération.
Désactiver une stratégie TTL
Suivez les étapes ci-dessous pour désactiver une politique TTL.
Google Cloud Console
Accédez à la page Cloud Firestore Time-to-live dans la console Google Cloud Platform.
Dans le tableau des stratégies TTL, recherchez la ligne de la stratégie TTL. Dans cette ligne du tableau, cliquez sur le bouton Supprimer (corbeille).
Confirmez en cliquant sur Supprimer .
La console revient à la page Durée de vie . En cas de succès, Cloud Firestore supprime la stratégie TTL du tableau.
gcloud
1. Utilisez la commande firestore fields ttls update
pour configurer une politique TTL. Ajoutez l'indicateur --async
pour empêcher l'interface de ligne de commande 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 TTL
Vous pouvez utiliser Cloud Monitoring pour afficher des métriques sur les suppressions basées sur la durée de vie. Cloud Firestore fournit les métriques suivantes pour la durée de vie :
firestore.googleapis.com/document/ttl_deletion_count | Nombre de suppressions de durée de vie | Nombre total de documents supprimés par les politiques de durée de vie (TTL). |
firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Expiration de la durée de vie jusqu'aux délais de suppression | Temps écoulé entre le moment où un document a expiré en vertu d'une politique de durée de vie (TTL) et le moment où il a été effectivement supprimé. |
Pour configurer un tableau de bord avec des métriques Cloud Firestore, consultez gérer un tableau de bord personnalisé et ajouter des widgets de tableau de bord .