Gérer la conservation des données avec des règles TTL
Cette page explique comment utiliser la console Google Cloud et Google Cloud CLI pour configurer des règles de valeur TTL (Time To Live).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 TTL désigne un champ donné comme heure d'expiration des documents d'une collection donnée. 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 les coûts de suppression de vos documents. Pour connaître le prix des opérations de suppression, consultez la page Tarifs de l'édition Enterprise de Firestore.
Limites et contraintes
- Vous ne pouvez marquer qu'un seul champ par collection comme champ TTL.
- Vous pouvez configurer jusqu'à 500 valeurs TTL au niveau des champs.
Suppression de la valeur TTL
Voici les principaux comportements de la suppression basée sur le TTL :
La suppression via le 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. Le TTL privilégie la réduction du coût total de possession pour les suppressions au détriment de la rapidité de suppression. Les données sont généralement supprimées dans les 24 heures suivant leur date d'expiration.
Si vous appliquez une règle TTL à une collection existante, toutes les données expirées seront supprimées en bloc selon 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 existantes pour cette collection.
Si un document a une heure d'expiration passée et que vous ajoutez une règle TTL à la collection, il sera supprimé 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 documents dans l'ordre de leur code temporel d'expiration.
Les suppressions ne sont pas effectuées de manière transactionnelle. Les documents ayant la même date 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.
Firestore compatible avec MongoDB respectera toujours le dernier champ TTL pour déterminer l'expiration. Par exemple, si le champ TTL d'un document expiré, mais pas encore supprimé, est mis à jour avec une date ultérieure, le document ne sera plus expiré et la nouvelle date sera utilisée.
Firestore compatible avec MongoDB n'expire un document que lorsque le champ TTL est défini sur un type
Date and time
ouBSON Date
. Laissez le champ vide ou définissez-le sur une valeur telle quenull
pour désactiver les expirations au niveau du 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 liés aux suppressions déclenchées par la valeur TTL.
Champs et index TTL
Un champ TTL peut être indexé ou non. Toutefois, étant donné qu'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 d'horodatage peut créer des points chauds, ce qui n'est pas recommandé. Les hotspots correspondent à des taux de lecture, d'écriture et de suppression élevés pour une plage de documents restreinte.
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.list
etdatastore.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.list
etdatastore.operations.get
.
Pour connaître les rôles qui attribuent ces autorisations, consultez Rôles Firestore Identity and Access Management.
Avant de commencer
Avant d'utiliser la gcloud CLI pour gérer les règles TTL, exécutez 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 un champ de document comme délai d'expiration pour les documents d'une collection.
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
ou BSON Date
. Vous pouvez sélectionner un champ existant ou en désigner un que vous prévoyez d'ajouter ultérieurement.
Avant de définir la valeur du champ "TTL", tenez compte des points suivants :
La valeur du champ TTL peut être une heure future, actuelle ou passée. Si la valeur est une heure passée, le document peut être supprimé immédiatement. Par exemple, vous pouvez créer une règle TTL avec le champ
expireAt
, que vous ajoutez ensuite aux documents existants.Si vous utilisez un autre type de données ou si vous ne définissez pas la valeur du champ TTL, le TTL sera désactivé pour le document concerné.
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 Durée de vie.
Cliquez sur Créer une règle.
Saisissez un nom de collection et un nom de champ d'horodatage.
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
-
In the Google Cloud console, 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.
Exécutez la commande
firestore fields ttls update
pour configurer une règle TTL. Ajoutez l'indicateur--async
pour empêcher gcloud CLI d'attendre la fin de l'opération.gcloud firestore fields ttls update ttl_field --collection-group=collection_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 règle TTL peut prendre 10 minutes ou plus. Lorsque vous lancez 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
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 liste les règles TTL de votre base de données et inclut l'état de chacune d'elles.
gcloud
-
In the Google Cloud console, 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.
Utilisez la commande
firestore fields ttls list
pour configurer une règle de TTL. La commande suivante liste toutes les règles TTL.gcloud firestore fields ttls list
Pour lister les règles TTL d'une collection spécifique, utilisez la commande suivante :
gcloud firestore fields ttls list --collection-group=collection_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 terminées récemment :
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 :
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 revient à la page Délai avant expiration. En cas de réussite, Firestore compatible avec MongoDB supprime la règle TTL de la table.
gcloud
-
In the Google Cloud console, 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.
Utilisez la commande
firestore fields ttls update
pour configurer une règle de TTL. Ajoutez l'indicateur--async
pour empêcher gcloud CLI d'attendre la fin de l'opération.gcloud firestore fields ttls update ttl_field --collection-group=collection_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 le TTL. Firestore compatible avec MongoDB fournit les métriques suivantes pour le 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élai entre l'expiration de la durée de vie et la suppression |
Temps écoulé entre le moment où un document a expiré en vertu d'une règle TTL et le moment où il a été réellement supprimé. |
Pour configurer un tableau de bord avec des métriques Firestore compatibles avec MongoDB, consultez Gérer les tableaux de bord personnalisés et Ajouter des widgets de tableau de bord.