Verwalten Sie die Datenaufbewahrung mit TTL-Richtlinien

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

Übersicht über die Lebensdauer

Verwenden Sie Time-to-Live-Richtlinien (TTL), um veraltete Daten automatisch aus Ihren Datenbanken zu entfernen. Eine TTL-Richtlinie legt ein bestimmtes Feld als Ablaufzeit für Dokumente in einer bestimmten Sammlungsgruppe fest. 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.

Preisgestaltung

TTL-Löschvorgänge werden auf Ihre Dokumentlöschkosten angerechnet. Informationen zu den Preisen für Löschvorgänge finden Sie unter Cloud Firestore-Preise .

Grenzen und Zwänge

  • Es kann nur ein Feld pro Sammlungsgruppe als TTL-Feld markiert werden.
  • Insgesamt sind 200 Konfigurationen auf Feldebene zulässig. Eine Feldkonfiguration kann mehrere Konfigurationen für dasselbe Feld enthalten. Beispielsweise zählen eine Ausnahme von der Einzelfeldindizierung und eine TTL-Richtlinie für dasselbe Feld als eine Feldkonfiguration für den Grenzwert.
  • Für Firestore-Kunden im Datastore-Modus kann TTL nicht mit dem Parallelitätsmodus Optimistic With Entity Groups verwendet werden. Erwägen Sie, den Parallelitätsmodus im Anschluss daran zu ändern.

TTL-Löschung

Beachten Sie die folgenden Hauptverhaltensweisen des TTL-gesteuerten Löschens:

  • Das Löschen durch TTL ist kein sofortiger Vorgang. Abgelaufene Dokumente werden weiterhin in Abfragen und Suchanforderungen angezeigt, bis sie durch den TTL-Prozess tatsächlich gelöscht werden. TTL achtet auf die Pünktlichkeit der Löschung zugunsten reduzierter Gesamtbetriebskosten für Löschungen. Daten werden in der Regel innerhalb von 24 Stunden nach ihrem Ablaufdatum gelöscht.

  • Durch das Löschen eines Dokuments über TTL werden keine Untersammlungen unter diesem Dokument gelöscht.

  • Das Anwenden einer TTL-Richtlinie auf eine vorhandene Sammlungsgruppe führt zu einer Massenlöschung aller Daten, die gemäß der neuen TTL-Richtlinie abgelaufen sind. Beachten Sie, dass diese Massenlöschung ebenfalls nicht sofort erfolgt und davon abhängt, wie viele Daten für diese Sammlungsgruppe vorhanden sind.

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

  • TTL löscht Dokumente nicht unbedingt in der gleichen Reihenfolge wie ihre Ablaufzeitstempel.

  • Löschungen erfolgen nicht transaktional. Dokumente mit derselben Ablaufzeit werden nicht unbedingt gleichzeitig gelöscht. Wenn Sie dieses Verhalten benötigen, führen Sie die Löschvorgänge mithilfe einer Clientbibliothek durch.

  • Cloud Firestore berücksichtigt immer das neueste TTL-Feld, um den Ablauf 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 ist darauf ausgelegt, die Auswirkungen auf andere Datenbankaktivitäten zu minimieren. Durch TTL gesteuerte Löschungen werden mit einer niedrigeren Priorität behandelt. Es gibt auch andere Strategien, um Verkehrsspitzen durch TTL-gesteuerte Löschvorgänge auszugleichen.

  • Das Löschen über TTL ruft alle aktiven Snapshot-Listener auf und löst Cloud Functions Cloud Firestore-Trigger aus.

TTL-Felder und Indizes

Ein TTL-Feld kann indiziert oder nicht indiziert sein. Da es sich bei einem TTL-Feld jedoch um einen Zeitstempel handelt, kann die Indizierung des Felds die Leistung bei höheren Datenverkehrsraten beeinträchtigen. Durch die Indizierung eines Zeitstempelfelds können Hotspots entstehen, was den Best Practices widerspricht. Hotspots sind hohe Lese-, Schreib- und Löschraten für einen engen Dokumentenbereich.

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

Berechtigungen

Der Prinzipal, der eine TTL-Richtlinie konfiguriert, benötigt die folgende Berechtigung im Projekt:

  • Zum Anzeigen 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.
  • Zum Überprüfen des Status von TTL-Vorgängen sind datastore.operations.list und datastore.operations.get erforderlich.

Informationen zu Rollen, die diese Berechtigungen zuweisen, finden Sie unter Cloud Firestore Identity and Access Management-Rollen .

Bevor Sie beginnen

Bevor Sie die gcloud-CLI zum Verwalten von TTL-Richtlinien verwenden, gcloud components update Update auf die neueste verfügbare Version:

gcloud components update

Erstellen Sie eine TTL-Richtlinie

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

TTL verwendet ein bestimmtes Feld, 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.

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

  • Der TTL-Feldwert kann eine Zeit in der Zukunft, jetzt oder in der Vergangenheit sein. Liegt der Wert in der Vergangenheit, kann das Dokument sofort gelöscht werden. Beispielsweise könnten Sie eine TTL-Richtlinie mit dem Feld expireAt erstellen, die Sie dann zu vorhandenen Dokumenten hinzufügen.

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

Führen Sie die folgenden Schritte aus, um eine TTL-Richtlinie zu erstellen:

Google Cloud Console

  1. Gehen Sie in der Google Cloud Platform Console zur Seite „Datenbanken“ .

    Gehen Sie zu Datenbanken

  2. Wählen Sie aus der Liste der Datenbanken die gewünschte Datenbank aus.

  3. Klicken Sie im Navigationsmenü auf „Time-to-live“ .

  4. Klicken Sie auf Richtlinie erstellen .

  5. Geben Sie einen Sammlungsgruppennamen und einen Zeitstempelfeldnamen ein.

  6. Klicken Sie auf Erstellen .

Die Konsole kehrt zur Seite „Lebensdauer“ zurück. Wenn der Vorgang erfolgreich gestartet wird, fügt die Seite einen Eintrag zur TTL-Richtlinientabelle 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-CLI auf den Abschluss des Vorgangs wartet.

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

Selbst bei einer leeren Datenbank kann die Aktivierung einer TTL-Richtlinie zehn Minuten oder länger dauern. Sobald Sie einen Vorgang starten, wird der Vorgang durch Schließen des Terminals nicht abgebrochen.

TTL-Richtlinien anzeigen

Führen Sie die folgenden Schritte aus, um TTL-Richtlinien und deren Status anzuzeigen.

Google Cloud Console

  1. Gehen Sie in der Google Cloud Platform Console zur Seite „Datenbanken“ .

    Gehen Sie zu Datenbanken

  2. Wählen Sie aus der Liste der Datenbanken die gewünschte Datenbank aus.

  3. Klicken Sie im Navigationsmenü auf „Time-to-live“ .

Die Konsole listet TTL-Richtlinien für Ihre Datenbank auf und enthält den Status jeder Richtlinie.

gcloud

Verwenden Sie den Befehl firestore fields ttls list , um eine TTL-Richtlinie zu konfigurieren. Der folgende Befehl listet alle TTL-Richtlinien auf.

   gcloud firestore fields ttls list
   

Um TTL-Richtlinien unter einer bestimmten Sammlungsgruppe aufzulisten, verwenden Sie Folgendes:

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

Betriebsdetails anzeigen

Mit der gcloud-CLI können Sie weitere Details zu einer TTL-Richtlinie anzeigen, die sich im Status CREATING befindet.

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

gcloud firestore operations list

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

Deaktivieren Sie eine TTL-Richtlinie

Führen Sie die folgenden Schritte aus, um eine TTL-Richtlinie zu deaktivieren.

Google Cloud Console

  1. Gehen Sie in der Google Cloud Platform Console zur Seite „Datenbanken“ .

    Gehen Sie zu Datenbanken

  2. Wählen Sie aus der Liste der Datenbanken die gewünschte Datenbank aus.

  3. Klicken Sie im Navigationsmenü auf „Time-to-live“ .

  4. Suchen Sie in der TTL-Richtlinientabelle die Zeile für die TTL-Richtlinie. Klicken Sie in dieser Tabellenzeile auf die Schaltfläche „Löschen“ (Papierkorb).

  5. Bestätigen Sie mit einem Klick auf Löschen .

Die Konsole 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-CLI auf den Abschluss des Vorgangs wartet.

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

Überwachen Sie TTL-Löschungen

Mit Cloud Monitoring können Sie Metriken zu TTL-gesteuerten Löschungen anzeigen. Cloud Firestore stellt die folgenden Metriken für TTL bereit:

firestore.googleapis.com/document/ttl_deletion_count Anzahl der Löschungen über die Gültigkeitsdauer

Gesamtzahl der Dokumente, die durch Time-to-Live-Richtlinien (TTL) gelöscht wurden.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Verzögerungen beim Ablauf der Gültigkeitsdauer bis hin zum Löschen

Zeit, die zwischen dem Ablauf eines Dokuments gemäß einer Time-to-Live-Richtlinie (TTL) und dem tatsächlichen Löschen verstrichen ist.

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