La valeur TTL (Time To Live) vous permet de définir des règles visant à supprimer régulièrement des données des tables Spanner. Supprimer les données inutiles permet de :
- réduire les coûts de stockage et de sauvegarde ;
- réduire le nombre de lignes que la base de données doit analyser pour certaines requêtes, ce qui peut éventuellement améliorer les performances des requêtes.
- contribuer au respect des réglementations ou des directives du secteur qui limitent la durée de conservation de certains types de données.
La valeur TTL est idéale pour les activités de nettoyage régulières. Elle s'exécute en arrière-plan de manière continue, en supprimant périodiquement les données éligibles par lots. Les données sont généralement supprimées dans les 72 heures suivant leur date d'expiration. Chaque suppression nécessite une réplication de clé primaire sur les répliques de la base de données, ce qui entraîne des coûts de réplication. Pour en savoir plus, consultez la page Tarifs de la réplication des données. La valeur TTL n'invalide pas immédiatement les données et ne les masque pas des requêtes dès qu'elles peuvent être supprimées. La valeur TTL ne vérifie pas non plus les données lors de leur insertion. Elle ne vous empêche donc pas d'insérer une ligne avec un code temporel expiré.
La valeur TTL est conçue pour minimiser l'impact sur les autres charges de travail de la base de données. Le processus de suppression du TTL fonctionne en arrière-plan avec une priorité système faible. Elle répartit le travail dans le temps et les ressources d'instance disponibles plus efficacement que les requêtes des utilisateurs finaux, et inclut une logique de nouvelles tentatives pour garantir un nettoyage de bout en bout avec une surcharge de traitement minimale.
Un autre processus de compactage en arrière-plan récupère l'espace de stockage des lignes supprimées, généralement dans les sept jours.
Comment fonctionne la valeur TTL ?
Vous pouvez définir la valeur TTL des tables Spanner en définissant une règle de suppression des lignes dans le schéma de la base de données. Cette règle permet à Spanner de supprimer régulièrement les données inutiles. Les règles TTL présentent les caractéristiques suivantes :
- Chaque table peut avoir sa propre règle.
- Une seule règle TTL peut être spécifiée par table.
- La configuration du TTL est différente pour les bases de données utilisant le dialecte GoogleSQL et celles utilisant le dialecte PostgreSQL.
- La règle TTL ne supprime pas les lignes dont le code temporel est défini sur
NULL
. - Les données insérées avec des codes temporels expirés sont nettoyées lorsqu'elles sont détectées lors du prochain cycle de suppression TTL.
TTL avec GoogleSQL
Avec GoogleSQL, vous définissez une règle de suppression de lignes en spécifiant un horodatage et un intervalle qui déterminent à quel moment une ligne peut être supprimée, par exemple "date de la dernière mise à jour plus 30 jours".
Un processus système en arrière-plan vérifie quotidiennement les lignes éligibles. Elle parallélise les suppressions effectives dans des lots exécutés près de l'emplacement où les données sont stockées en interne. Chaque lot s'exécute dans sa propre transaction à un horodatage cohérent. Ainsi, les lignes d'un lot donné, ainsi que tous les index et enfants entrelacés, sont supprimés de manière atomique. Toutefois, les suppressions sur plusieurs lots se produisent dans différentes transactions.
Comme il s'agit d'un processus en arrière-plan asynchrone, il y a un délai entre l'éligibilité et la suppression. En règle générale, le délai est inférieur à 72 heures. Par conséquent, des lignes peuvent subsister dans votre table jusqu'à trois jours après l'expiration de leur valeur TTL. Par exemple, une table ayant une règle de suppression de lignes qui s'applique aux lignes datant de plus de quatre jours peut inclure les lignes datant de sept jours, ainsi que des lignes plus anciennes qui ne peuvent pas être supprimées.
Pour obtenir des instructions détaillées sur la création d'une règle de suppression de lignes GoogleSQL, consultez Créer une règle TTL.
TTL avec PostgreSQL
Avec PostgreSQL, un propriétaire de base de données peut utiliser une clause TTL INTERVAL
dans l'instruction CREATE TABLE
ou ALTER TABLE
pour définir une règle de suppression de lignes.
Pour définir une règle de suppression des lignes dans une table PostgreSQL, celle-ci doit comporter une colonne avec le type de données TIMESTAMPTZ
. La clause TTL INTERVAL
utilise cette colonne pour définir une spécification d'intervalle indiquant quand une ligne peut être supprimée.
La clause doit renvoyer un nombre entier de jours. Par exemple, '3
DAYS'
et '4 DAYS 2 MINUTES - 2 MINUTES'
sont autorisés, mais '4 DAYS 3
MINUTES'
ne l'est pas et une erreur est renvoyée. Vous ne pouvez pas utiliser de nombres négatifs.
La récupération de mémoire TTL supprime les lignes éligibles en continu et en arrière-plan. Comme il s'agit d'un processus en arrière-plan asynchrone, il y a un délai entre l'éligibilité et la suppression. La table peut contenir des lignes éligibles à la suppression basée sur la valeur TTL, mais pour lesquelles l'exécution de l'opération TTL n'est pas encore terminée. En règle générale, le délai est inférieur à 72 heures.
Pour savoir comment créer une règle de suppression de lignes PostgreSQL, consultez Créer une règle TTL.
Sauvegardes et valeur TTL
Restaurer une sauvegarde
Lorsque vous restaurez une base de données à partir d'une sauvegarde, toutes les règles de suppression de lignes configurées sur la base de données source sont automatiquement supprimées. Cela empêche Spanner de potentiellement supprimer des données ayant expiré dès que la sauvegarde a été restaurée. Vous devrez donc reconfigurer manuellement le TTL.
Cohérence des données
Une sauvegarde est un instantané cohérent de vos données à un moment précis (version_time
). Elle peut contenir des lignes éligibles à la suppression basée sur la valeur TTL, mais pour lesquelles l'exécution de l'opération TTL n'est pas encore terminée.
De même, les tâches d'exportation Dataflow lisent l'intégralité de la table à un horodatage fixe.
Audits
Le TTL est compatible avec l'audit de ses suppressions via les flux de modifications.
Les enregistrements de données des flux de modification qui suivent les modifications du TTL apportées à une base de données ont le champ transaction_tag
défini sur RowDeletionPolicy
et le champ is_system_transaction
défini sur true
. Les lecteurs de flux de modifications peuvent ensuite filtrer tous les enregistrements TTL ou tous les enregistrements, à l'exception de ceux TTL, en fonction de leur cas d'utilisation. Consultez un exemple d'utilisation de Beam pour filtrer par tags de transaction.
Étapes suivantes
- Découvrez comment gérer la conservation des données avec le TTL.
- En savoir plus sur les métriques et la surveillance du TTL