Présentation de la valeur TTL (Time to Live)

La valeur TTL (Time to Live) vous permet de définir des règles pour supprimer régulièrement les 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.
  • Vous aide à adhérer aux réglementations ou aux directives du secteur qui limitent le 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. 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. TTL ne vérifie pas non plus les données lorsqu'elles sont insérées, et ne vous empêche donc pas de en insérant une ligne avec un horodatage arrivé à expiration.

La valeur TTL est conçue pour minimiser l'impact sur les autres activités de base de données. Elle parallélise le travail plus efficacement que des requêtes des utilisateurs finaux et inclut une logique de nouvelles tentatives pour garantir un nettoyage de bout en bout.

Un autre processus de compactage en arrière-plan récupère le stockage des lignes supprimées, généralement dans un délai de sept jours.

Comment fonctionne la valeur TTL ?

Vous pouvez définir une valeur TTL sur les tables Spanner en définissant une suppression de lignes dans le schéma de la base de données, ce qui permet à Spanner supprimer régulièrement les données inutiles. Chaque table peut avoir sa propre règle. Un seul La règle TTL peut être spécifiée pour chaque table. Vous configurez la valeur TTL différemment pour Bases de données de dialecte GoogleSQL et bases de données de dialecte PostgreSQL

Valeur TTL avec GoogleSQL

Avec GoogleSQL, vous définissez une règle de suppression de lignes en spécifiant Un code temporel et un intervalle permettant de déterminer quand une ligne peut être supprimée Par exemple, la date de la dernière mise à jour plus 30 jours.

Un processus système d'antécédents 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 assurés d'être supprimés de manière atomique. Toutefois, les suppressions sur plusieurs lots 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. En tant que les lignes peuvent rester dans votre table jusqu'à trois jours après que leur valeur TTL a été expirée ; Par exemple, une table avec une règle de suppression de lignes qui supprime les lignes les plus anciennes peut inclure les lignes datant de sept jours au maximum, ainsi que les lignes plus anciennes, de lignes impossibles à supprimer.

Pour obtenir des instructions détaillées sur la création d'une ligne GoogleSQL de suppression, consultez Créer une règle TTL.

Valeur 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 de lignes dans une table PostgreSQL, celle-ci doit : contient une colonne dont le type de données est TIMESTAMPTZ. La clause TTL INTERVAL utilise cette colonne afin de définir la spécification d'intervalle pour le moment où une ligne est éligible pour de suppression.

La clause doit correspondre à un nombre entier de jours. Par exemple, '3 DAYS' est autorisé, tout comme '4 DAYS 2 MINUTES - 2 MINUTES', mais '4 DAYS 3 MINUTES' n'est pas autorisé, et une erreur est renvoyée. Vous ne pouvez pas utiliser de valeur négative de chiffres.

La récupération de mémoire TTL supprime les lignes éligibles de manière continue et en arrière-plan. Comme il s'agit d'un processus asynchrone en arrière-plan, il existe un délai entre l'éligibilité et la suppression. La table peut contenir des lignes éligibles pour la valeur TTL mais pour laquelle la valeur TTL n'est pas encore terminée. En général, le délai est inférieur plus de 72 heures.

Pour savoir comment créer une règle de suppression de lignes PostgreSQL, consultez la section 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 permet d'éviter Spanner de supprimer potentiellement les données expirées dès que sauvegarde a été restaurée. Vous devez donc reconfigurer la valeur TTL manuellement.

Cohérence des données

Une sauvegarde est un instantané cohérent de vos données à un moment précis (version_time). La sauvegarde peut contenir des lignes qui peuvent être éligibles à la suppression des TTL, mais pour lesquelles elles ne sont pas encore terminées. De même, les jobs d'exportation Dataflow lisent l'intégralité de la table code temporel fixe.

Audits

La valeur TTL est compatible avec l'audit de ses suppressions via des flux de modifications. Les enregistrements de flux de modifications qui suivent les modifications TTL d'une base de données ont la Champ transaction_tag défini sur RowDeletionPolicy et Champ is_system_transaction défini sur true. Les lecteurs des flux de modifications sont alors capable de filtrer tous les enregistrements TTL, ou tous les enregistrements à l'exception de la valeur TTL selon leur cas d'utilisation. Voir un exemple d'utilisation de Beam pour filtrer par tags de transaction.