Datenaufbewahrung mit TTL-Richtlinien verwalten

Auf dieser Seite wird beschrieben, wie Sie in der Google Cloud console und mit der Google Cloud CLI Richtlinien zur Gültigkeitsdauer (Time to Live, TTL) konfigurieren. Bevor Sie diese Seite lesen, sollten Sie mit dem Firestore-Datenmodell vertraut sein.

Übersicht über die Gültigkeitsdauer

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 entfernen. Daten werden in der Regel innerhalb von 24 Stunden nach ihrem Ablaufdatum gelöscht.

Preise

TTL-Löschvorgänge werden auf Ihre Kosten für das Löschen von Dokumenten angerechnet. Informationen zu den Preisen für Löschvorgänge finden Sie unter Firestore-Preise.

Limits und Einschränkungen

  • Sie können nur ein Feld pro Sammlungsgruppe als TTL-Feld markieren.
  • Es sind maximal 500 Konfigurationen auf Feldebene zulässig. Eine Feldkonfiguration kann mehrere Konfigurationen für dasselbe Feld enthalten. Beispielsweise werden eine Ausnahme für die Einzelfeldindexierung und eine TTL-Richtlinie für dasselbe Feld als eine Feldkonfiguration auf das Limit angerechnet.
  • Für Firestore im Datastore-Modus kann TTL nicht mit dem Gleichzeitigkeitsmodus „Optimistisch mit Entitätsgruppen“ verwendet werden. Ändern Sie den Gleichzeitigkeitsmodus in den optimistischen Gleichzeitigkeitsmodus.

TTL-Löschvorgänge

Beachten Sie die folgenden wichtigen Verhaltensweisen bei TTL-gesteuerten Löschvorgängen:

  • Das Löschen über TTL ist kein sofortiger Vorgang. Abgelaufene Dokumente werden weiterhin in Abfragen und Suchanfragen angezeigt, bis sie tatsächlich durch den TTL-Prozess gelöscht werden. Bei TTL wird die Pünktlichkeit des Löschvorgangs gegen geringere Gesamtbetriebskosten für Löschvorgänge eingetauscht. Daten werden in der Regel innerhalb von 24 Stunden nach ihrem Ablaufdatum gelöscht.

  • Wenn Sie ein Dokument über TTL löschen, werden die Untersammlungen 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 in einem Bulk-Vorgang gelöscht. Auch dieser Bulk-Löschvorgang erfolgt nicht sofort und hängt davon ab, wie viele Daten für diese Sammlungsgruppe vorhanden sind.

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

  • Mit TTL werden Dokumente nicht unbedingt in derselben Reihenfolge wie ihre Ablaufzeitstempel gelöscht.

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

  • Firestore verwendet immer das neueste TTL-Feld, um die Ablaufzeit zu bestimmen. Wenn beispielsweise das TTL-Feld eines abgelaufenen, aber noch nicht gelöschten Dokuments auf ein späteres Datum aktualisiert wird, läuft das Dokument nicht ab und das neue Datum wird verwendet.

  • Firestore lässt ein Dokument nur ablaufen, wenn das TTL-Feld auf bestimmte Werttypen festgelegt ist. Bei Datenbanken der Standard Edition muss das Feld auf einen Wert vom Typ Date and time festgelegt sein. Bei Datenbanken der Enterprise Edition muss das Feld entweder auf einen Wert vom Typ Date and time oder auf einen Wert vom Typ Array festgelegt sein, der einen Wert vom Typ Date and time enthält. Wenn Sie das Feld nicht angeben oder auf einen Wert wie null festlegen, können Sie Abläufe pro Dokument deaktivieren.

  • TTL soll die Auswirkungen auf andere Datenbankaktivitäten minimieren. Löschvorgänge, die durch TTL ausgelöst werden, haben eine niedrigere Priorität. Es gibt auch andere Strategien, um Trafficspitzen durch TTL-gesteuerte Löschvorgänge zu vermeiden.

  • Beim Löschen über TTL werden alle aktiven Snapshot-Listener aufgerufen und Cloud Run-Funktionen sowie 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 die Leistung bei höheren Trafficraten 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 Firestore Standard Edition einen Einzelfeldindex für alle Felder. Sie können eine Ausnahme für die Einzelfeldindexierung erstellen um Indexe für ein TTL-Feld zu deaktivieren.

Berechtigungen

Der Principal, der 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.
  • Zum Prüfen des Status von TTL-Vorgängen sind die Berechtigungen datastore.operations.list und datastore.operations.get erforderlich.

Informationen zu Rollen, mit denen diese Berechtigungen zugewiesen werden, finden Sie unter Firestore-Rollen für Identity and Access Management.

Hinweis

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

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.

TTL verwendet ein bestimmtes Feld, um Dokumente zu identifizieren, die für das Löschen infrage kommen. Bei Datenbanken der Standard Edition muss das TTL-Feld auf einen Wert vom Typ Date and time festgelegt sein. Bei Datenbanken der Enterprise Edition muss es entweder auf einen Wert vom Typ Date and time oder auf einen Wert vom Typ Array festgelegt sein, der einen Wert vom Typ Date and time enthält. Sie können ein Feld auswählen, das bereits vorhanden ist, oder ein Feld festlegen, das Sie später hinzufügen möchten.

Beachten Sie Folgendes, bevor Sie den Wert für das TTL-Feld festlegen:

  • Der Wert für das TTL-Feld kann ein Zeitpunkt in der Zukunft, in der Gegenwart oder in der Vergangenheit sein. Wenn der Wert ein Zeitpunkt in der Vergangenheit ist, kommt das Dokument sofort für das Löschen infrage. Sie können beispielsweise eine TTL-Richtlinie mit dem Feld expireAt erstellen, das Sie dann vorhandenen Dokumenten hinzufügen.

  • Wenn Sie einen anderen Datentyp verwenden oder den Wert für das TTL-Feld nicht festlegen, wird 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 Datenbanken Seite auf.

    Zur Seite „Datenbanken“

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

  3. Klicken Sie im Navigationsmenü auf Gültigkeitsdauer.

  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 Gültigkeitsdauer zurück. Wenn der Vorgang erfolgreich gestartet wird, fügt die Seite der Tabelle „TTL-Richtlinien“ einen Eintrag hinzu. Bei einem Fehler wird auf der Seite eine Fehlermeldung angezeigt.

gcloud

  1. Aktivieren Sie in der Google Cloud console die Cloud Shell.

    Cloud Shell aktivieren

    Unten in der Google Cloud console wird eine Cloud Shell Sitzung gestartet und eine Befehlszeilenaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. Verwenden Sie den firestore fields ttls update Befehl, 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 

Dauer der Aktivierung der TTL-Richtlinie

Auch bei einer leeren Datenbank kann es zehn Minuten oder länger dauern, eine TTL-Richtlinie zu aktivieren. Wenn Sie einen Vorgang starten, wird er nicht abgebrochen, wenn Sie das Terminal schließen.

TTL-Richtlinien ansehen

So rufen Sie TTL-Richtlinien und deren Status auf:

Google Cloud Console

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

    Zur Seite „Datenbanken“

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

  3. Klicken Sie im Navigationsmenü auf Gültigkeitsdauer.

In der Console werden die TTL-Richtlinien für Ihre Datenbank mit dem Status der einzelnen Richtlinien aufgeführt.

gcloud

  1. Aktivieren Sie in der Google Cloud console die Cloud Shell.

    Cloud Shell aktivieren

    Unten in der Google Cloud console wird eine Cloud Shell Sitzung gestartet und eine Befehlszeilenaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

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

    gcloud firestore fields ttls list
    

    Verwenden Sie Folgendes, um TTL-Richtlinien unter einer bestimmten Sammlungsgruppe aufzulisten:

    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 im Status CREATING aufrufen.

Mit dem operations list Befehl können Sie alle laufenden und kürzlich abgeschlossenen Vorgänge aufrufen:

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 Datenbanken Seite auf.

    Zur Seite „Datenbanken“

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

  3. Klicken Sie im Navigationsmenü auf Gültigkeitsdauer.

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

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

Die Console kehrt zur Seite Gültigkeitsdauer zurück. Wenn der Vorgang erfolgreich ist, entfernt Firestore die TTL-Richtlinie aus der Tabelle.

gcloud

  1. Aktivieren Sie in der Google Cloud console die Cloud Shell.

    Cloud Shell aktivieren

    Unten in der Google Cloud console wird eine Cloud Shell Sitzung gestartet und eine Befehlszeilenaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. Verwenden Sie den firestore fields ttls update Befehl, 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
    

TTL-Löschvorgänge beobachten

Mit Cloud Monitoring können Sie Messwerte zu TTL-gesteuerten Löschvorgängen aufrufen. Firestore bietet die folgenden Messwerte für TTL:

Messwerttyp Messwertname Messwertbeschreibung
firestore.googleapis.com/document/ttl_deletion_count Anzahl der Löschvorgänge aufgrund der Gültigkeitsdauer

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

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

Zeit, die zwischen dem Ablauf eines Dokuments gemäß einer TTL Richtlinie und dem tatsächlichen Löschen des Dokuments vergangen ist.

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