Datenaufbewahrung mit TTL-Richtlinien verwalten

Auf dieser Seite wird beschrieben, wie Sie mit der Google Cloud Console und der Google Cloud CLI TTL-Richtlinien (Time to Live) konfigurieren. Bevor Sie diese Seite lesen, sollten Sie sich mit dem Cloud Firestore-Datenmodell vertraut machen.

Gültigkeitsdauer – Übersicht

Mit TTL-Richtlinien werden veraltete Daten automatisch aus Ihren Datenbanken entfernt. In einer TTL-Richtlinie wird ein bestimmtes Feld als Ablaufzeit für Dokumente in einer bestimmten Sammlungsgruppe festgelegt. Mit TTL können Sie die Speicherkosten senken, indem Sie veraltete Daten bereinigen. Daten werden in der Regel innerhalb von 24 Stunden nach ihrem Ablaufdatum gelöscht.

Preise

TTL-Löschvorgänge werden auf die Kosten für das Löschen von Dokumenten angerechnet. Preise für Löschvorgänge finden Sie unter Preise für Cloud Firestore.

Limits und Einschränkungen

  • Pro Sammlungsgruppe kann nur ein Feld als TTL-Feld markiert werden.
  • Insgesamt sind 200 Konfigurationen auf Feldebene zulässig. Eine Feldkonfiguration kann mehrere Konfigurationen für dasselbe Feld enthalten. Das ist beispielsweise der Fall, wenn eine Ausnahme für die Einzelfeldindexierung und eine TTL-Richtlinie für dasselbe Feld gelten wie bei einer Feldkonfiguration, die das Limit überschreitet.
  • Für Kunden von Firestore im Datastore-Modus kann TTL nicht mit dem Gleichzeitigkeitsmodus Optimistisch mit Entitätsgruppen verwendet werden. Sie können den Gleichzeitigkeitsmodus in den optimistischen Gleichzeitigkeitsmodus ändern.

TTL-Löschung

Beachten Sie die folgenden wichtigen Verhaltensweisen bei der TTL-basierten Löschung:

  • Das Löschen über die TTL erfolgt nicht sofort. Abgelaufene Dokumente werden weiterhin in Abfragen und Suchanfragen angezeigt, bis sie durch den TTL-Prozess tatsächlich gelöscht werden. Bei TTL wird die Aktualität des Löschens gegen geringere Gesamtbetriebskosten für das Löschen eingetauscht. Daten werden in der Regel innerhalb von 24 Stunden nach ihrem Ablaufdatum gelöscht.

  • Wenn Sie ein Dokument über die TTL löschen, werden die untergeordneten Sammlungen unter diesem Dokument nicht gelöscht.

  • Wenn Sie eine TTL-Richtlinie auf eine vorhandene Sammlungsgruppe anwenden, werden alle abgelaufenen Daten gemäß der neuen TTL-Richtlinie im Bulk-Verfahren gelöscht. Beachten Sie, dass auch dieses Löschen im Bulk nicht sofort erfolgt und davon abhängt, wie viele Daten für diese Sammlungsgruppe vorhanden sind.

  • Wenn für ein Dokument ein Ablaufdatum in der Vergangenheit festgelegt ist und Sie der Sammlung eine neue TTL-Richtlinie hinzufügen, wird das Dokument innerhalb von 24 Stunden nach Abschluss der Einrichtung der TTL-Richtlinie gelöscht.

  • Dokumente werden nicht unbedingt in der Reihenfolge gelöscht, in der ihre Ablaufzeitstempel ablaufen.

  • Das Löschen erfolgt nicht transaktional. Dokumente mit demselben Ablaufdatum werden nicht unbedingt gleichzeitig gelöscht. Wenn Sie dieses Verhalten benötigen, führen Sie die Löschungen mit einer Clientbibliothek aus.

  • Cloud Firestore berücksichtigt immer das aktuelle TTL-Feld, um das Ablaufdatum zu bestimmen. Wenn beispielsweise das TTL-Feld eines abgelaufenen, aber noch nicht gelöschten Dokuments auf ein späteres Datum aktualisiert wird, ist das Dokument nicht abgelaufen und das neue Datum wird verwendet.

  • TTL soll die Auswirkungen auf andere Datenbankaktivitäten minimieren. Löschungen aufgrund der TTL werden mit niedrigerer Priorität behandelt. Es gibt auch andere Strategien, um Traffic-Spitzen durch TTL-basiertes Löschen zu glätten.

  • Beim Löschen über TTL werden alle aktiven Snapshot-Listener aufgerufen und Cloud Functions-Cloud Firestore-Trigger ausgelöst.

TTL-Felder und ‑Indexe

Ein TTL-Feld kann indexiert oder nicht indexiert sein. Da ein TTL-Feld jedoch ein Zeitstempel ist, kann die Indexierung des Felds bei höheren Zugriffsraten die Leistung beeinträchtigen. Die Indexierung eines Zeitstempelfelds kann Hotspots verursachen, was gegen die Best Practices verstößt. Hotspots sind hohe Lese-, Schreib- und Löschraten für einen kleinen Dokumentbereich.

Standardmäßig erstellt Cloud Firestore einen Einzelfeldindex für alle Felder. Sie können eine Einzelfeldindex-Ausnahme erstellen, um Indexe für ein TTL-Feld zu deaktivieren.

Berechtigungen

Das Hauptkonto, das eine TTL-Richtlinie konfiguriert, benötigt die folgende Berechtigung im Projekt:

  • Zum Aufrufen von TTL-Richtlinien sind die Berechtigungen datastore.indexes.list und datastore.indexes.get erforderlich.
  • Zum Ändern von TTL-Richtlinien ist die Berechtigung datastore.indexes.update erforderlich.
  • Für die Prüfung des Status von TTL-Vorgängen sind datastore.operations.list und datastore.operations.get erforderlich.

Informationen zu Rollen, denen diese Berechtigungen zugewiesen sind, finden Sie unter Cloud Firestore Rollen von Identity and Access Management.

Hinweis

Bevor Sie die gcloud CLI zum Verwalten von TTL-Richtlinien verwenden, aktualisieren Sie die Komponenten mit dem Befehl gcloud components update auf die neueste verfügbare Version:

gcloud components update

TTL-Richtlinie erstellen

Wenn Sie eine TTL-Richtlinie erstellen, legen Sie ein Dokumentfeld als Ablaufzeit für Dokumente in einer Sammlungsgruppe fest.

Bei TTL wird ein bestimmtes Feld verwendet, um Dokumente zu identifizieren, die gelöscht werden können. Dieses TTL-Feld muss vom Typ Date and time sein. Sie können ein bereits vorhandenes Feld auswählen oder ein Feld festlegen, das Sie später hinzufügen möchten.

Beachten Sie Folgendes, bevor Sie den TTL-Feldwert festlegen:

  • Der Wert des TTL-Felds kann eine Zeit in der Zukunft, in der Gegenwart oder in der Vergangenheit sein. Wenn der Wert eine Zeit in der Vergangenheit ist, kann das Dokument sofort gelöscht werden. Sie können beispielsweise eine TTL-Richtlinie mit dem Feld expireAt erstellen und sie dann vorhandenen Dokumenten hinzufügen.

  • Wenn Sie einen anderen Datentyp verwenden oder den Wert des TTL-Felds nicht festlegen, wird die TTL für das einzelne Dokument deaktiviert.

So erstellen Sie eine TTL-Richtlinie:

Google Cloud Console

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.

  3. Klicken Sie im Navigationsmenü auf Lebensdauer.

  4. Klicken Sie auf Richtlinie erstellen.

  5. Geben Sie einen Namen für die Sammlungsgruppe und einen Namen für das Zeitstempelfeld ein.

  6. Klicken Sie auf Erstellen.

Die Console kehrt zur Seite Lebensdauer zurück. Wenn der Vorgang erfolgreich gestartet wird, fügt die Seite der Tabelle mit den TTL-Richtlinien einen Eintrag hinzu. Bei einem Fehler wird auf der Seite eine Fehlermeldung angezeigt.

gcloud

Verwenden Sie den Befehl firestore fields ttls update, um eine TTL-Richtlinie zu konfigurieren. Fügen Sie das Flag --async hinzu, um zu verhindern, dass die gcloud-Befehlszeile auf den Abschluss des Vorgangs wartet.

 gcloud firestore fields ttls update
  ttl_field --collection-group=collection_group_name
  --enable-ttl 

Dauer der Aktivierung der TTL-Richtlinie

Selbst bei einer leeren Datenbank kann es zehn Minuten oder länger dauern, bis eine TTL-Richtlinie aktiviert ist. Wenn Sie einen Vorgang gestartet haben, wird der Vorgang durch Schließen des Terminals nicht abgebrochen.

TTL-Richtlinien ansehen

So rufen Sie TTL-Richtlinien und ihre Status auf:

Google Cloud Console

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.

  3. Klicken Sie im Navigationsmenü auf Lebensdauer.

In der Console werden TTL-Richtlinien für Ihre Datenbank aufgelistet. Außerdem ist der Status jeder Richtlinie angegeben.

gcloud

Verwenden Sie den Befehl firestore fields ttls list, um eine TTL-Richtlinie zu konfigurieren. Mit dem folgenden Befehl werden alle TTL-Richtlinien aufgelistet.

   gcloud firestore fields ttls list
   

So rufen Sie TTL-Richtlinien für eine bestimmte Sammlungsgruppe auf:

   gcloud firestore fields ttls list  --collection-group=collection_group_name
   

Vorgangsdetails ansehen

Mit der gcloud CLI können Sie weitere Details zu einer TTL-Richtlinie mit dem Status CREATING aufrufen.

Verwenden Sie den Befehl operations list, um alle laufenden und kürzlich abgeschlossenen Vorgänge anzeigen zu lassen:

gcloud firestore operations list

Die Antwort enthält eine Schätzung des Fortschritts des Vorgangs.

TTL-Richtlinie deaktivieren

So deaktivieren Sie eine TTL-Richtlinie:

Google Cloud Console

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.

  3. Klicken Sie im Navigationsmenü auf Lebensdauer.

  4. Suchen Sie in der Tabelle mit TTL-Richtlinien nach der Zeile für die TTL-Richtlinie. Klicken Sie in dieser Tabellenzeile auf die Schaltfläche Löschen (Mülleimer).

  5. Klicken Sie zur Bestätigung auf Löschen.

Die Console kehrt zur Seite Lebensdauer zurück. Bei Erfolg entfernt Cloud Firestore die TTL-Richtlinie aus der Tabelle.

gcloud

1. Verwenden Sie den Befehl firestore fields ttls update, um eine TTL-Richtlinie zu konfigurieren. Fügen Sie das Flag --async hinzu, um zu verhindern, dass die gcloud-Befehlszeile auf den Abschluss des Vorgangs wartet.

   gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
   

TTL-Löschungen überwachen

Mit Cloud Monitoring können Sie sich Messwerte zu TTL-basierten Löschungen ansehen. Cloud Firestore bietet die folgenden Messwerte für die TTL:

Messwerttyp Messwertname Beschreibung des Messwerts
firestore.googleapis.com/document/ttl_deletion_count Anzahl der Löschungen aufgrund der Gültigkeitsdauer

Gesamtzahl der Dokumente, die aufgrund von TTL-Richtlinien gelöscht wurden.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Verzögerungen zwischen Ablauf der Gültigkeitsdauer und dem Löschen

Zeitspanne zwischen dem Ablauf eines Dokuments gemäß einer TTL-Richtlinie und dem tatsächlichen Löschen.

Informationen zum Einrichten eines Dashboards mit Cloud Firestore-Messwerten finden Sie unter Benutzerdefiniertes Dashboard verwalten und Dashboard-Widgets hinzufügen.