Gültigkeitsdauer (TTL)

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Mit der Gültigkeitsdauer (TTL) können Sie Richtlinien festlegen, um Daten aus Cloud Spanner-Tabellen regelmäßig zu löschen. Nicht benötigte Daten entfernen:

  • Reduziert die Speicher- und Sicherungskosten.
  • Es verringert die Anzahl der Zeilen, die die Datenbank nach einigen Abfragen scannen muss, wodurch die Abfrageleistung potenziell erhöht wird.
  • Hilft dabei, Vorschriften oder Branchenrichtlinien einzuhalten, die die Aufbewahrungsdauer für bestimmte Datentypen beschränken.

TTL ist ideal für regelmäßige Bereinigungsaktivitäten. Sie wird kontinuierlich im Hintergrund ausgeführt und löscht zulässige Daten regelmäßig in Batches. Die Daten werden in der Regel innerhalb von 72 Stunden nach ihrem Ablaufdatum gelöscht. Durch eine TTL werden Daten nicht sofort entwertet oder für Abfragen ausgeblendet, wenn sie gelöscht werden können. TTL überprüft außerdem keine eingefügten Daten. Sie können daher keine Zeile mit einem abgelaufenen Zeitstempel einfügen.

TTL soll die Auswirkungen auf andere Datenbankaktivitäten minimieren. Es parallelisiert die Arbeit effizienter als Endnutzerabfragen und enthält eine Wiederholungslogik, um eine End-to-End-Bereinigung zu gewährleisten.

Ein anderer Prozess zur Hintergrundverdichtung gibt Speicherplatz aus gelöschten Zeilen zurück, in der Regel innerhalb von sieben Tagen.

Wie funktioniert TTL?

Sie können für Spanner-Tabellen eine TTL festlegen, indem Sie im Datenbankschema eine Löschrichtlinie für Zeilen festlegen, mit der Spanner nicht benötigte Daten regelmäßig löschen kann. Jede Tabelle kann eine eigene Richtlinie haben. Pro Tabelle kann nur eine TTL-Richtlinie angegeben werden. Sie richten die TTL unterschiedlich für Google-Standard-SQL-Datenbanken und PostgreSQL-Datenbanken ein.

TTL mit Google Standard-SQL

In Google SQL definieren Sie eine Richtlinie zum Löschen von Zeilen, indem Sie einen Zeitstempel und ein Intervall angeben, um zu bestimmen, wann eine Zeile gelöscht werden kann, z. B. das Datum der letzten Aktualisierung plus 30 Tage.

Ein Hintergrundsystemprozess prüft täglich nach zulässigen Zeilen. Sie parallelisiert die tatsächlichen Löschvorgänge in Batches, die in der Nähe der Speicherorte der Daten ausgeführt werden. Jeder Batch wird mit einem eigenen Zeitstempel in einer eigenen Transaktion ausgeführt. Daher werden die Zeilen in einem bestimmten Batch zusammen mit allen Indexen und verschränkten untergeordneten Elementen garantiert untrennbar gelöscht. Das Löschen über mehrere Batches hinweg erfolgt jedoch in verschiedenen Transaktionen.

Da dies ein asynchroner Hintergrundprozess ist, gibt es eine Verzögerung zwischen Berechtigung und Löschen. In der Regel beträgt die Verzögerung weniger als 72 Stunden. Daher können Zeilen bis zu drei Tage nach Ablauf ihrer TTL in der Tabelle verbleiben. Eine Tabelle mit einer Richtlinie zum Löschen von Zeilen, die Zeilen löscht, die älter als vier Tage sind, kann beispielsweise Zeilen enthalten, die bis zu sieben Tage alt sind, sowie ältere, nicht wählbare Zeilen.

Eine detaillierte Anleitung zum Erstellen einer Richtlinie zum Löschen von Zeilen in Google Standard-SQL finden Sie unter TTL-Richtlinie erstellen.

TTL mit PostgreSQL

Mit PostgreSQL kann ein Datenbankinhaber eine TTL INTERVAL-Klausel in der CREATE TABLE- oder ALTER TABLE-Anweisung verwenden, um eine Richtlinie zum Löschen von Zeilen zu definieren.

Zum Festlegen einer Richtlinie zum Löschen von Zeilen für eine PostgreSQL-Tabelle muss die Tabelle eine Spalte mit dem Datentyp TIMESTAMPTZ haben. Die TTL INTERVAL-Klausel verwendet diese Spalte, um eine Intervallspezifikation dafür festzulegen, wann eine Zeile gelöscht werden kann.

Die Klausel muss eine ganze Anzahl von Tagen ergeben. Beispiel: '3 DAYS' ist ebenso zulässig wie '4 DAYS 2 MINUTES - 2 MINUTES', aber '4 DAYS 3 MINUTES' ist nicht zulässig und es wird ein Fehler zurückgegeben. Negative Zahlen sind nicht zulässig.

Bei der automatischen Speicherbereinigung für die TTL werden aktive Zeilen kontinuierlich und im Hintergrund gelöscht. Da dies ein asynchroner Hintergrundprozess ist, gibt es eine Verzögerung zwischen der Eignung und dem Löschen. Die Tabelle enthält möglicherweise Zeilen, die zum Löschen der TTL berechtigt sind, aber noch nicht abgeschlossen sind. In der Regel beträgt die Verzögerung weniger als 72 Stunden.

Eine Anleitung zum Erstellen einer PostgreSQL-Zeilenlöschrichtlinie finden Sie unter TTL-Richtlinie erstellen.

Sicherungen und TTL

Sicherung wiederherstellen

Wenn Sie eine Datenbank aus einer Sicherung wiederherstellen, werden alle Richtlinien zum Löschen von Zeilen, die in der Quelldatenbank konfiguriert wurden, automatisch gelöscht. Dadurch wird verhindert, dass Spanner abgelaufene Daten löscht, sobald die Sicherung wiederhergestellt wurde. Sie müssen die TTL daher manuell neu konfigurieren.

Datenkonsistenz

Eine Sicherung ist ein konsistenter Snapshot Ihrer Daten zu einem bestimmten Zeitpunkt (version_time). Die Sicherung kann Zeilen enthalten, die möglicherweise für die TTL gelöscht werden, aber noch nicht abgeschlossen sind. Entsprechend lesen Dataflow-Exportjobs die gesamte Tabelle zu einem festen Zeitstempel.

Audit

Die TTL unterstützt das Prüfen der Löschvorgänge über Änderungsstreams. Bei Änderungsstreams von Datensätzen, die TTL-Änderungen an einer Datenbank verfolgen, ist das Feld transaction_tag auf RowDeletionPolicy und das Feld is_system_transaction auf true festgelegt. Änderungsstream-Leser können dann je nach Anwendungsfall alle TTL-Einträge oder alle Datensätze mit Ausnahme der TTL-Einträge filtern. Hier finden Sie ein Beispiel dafür, wie Sie Beam nach Transaktions-Tags filtern.