Datenaufbewahrung mit TTL-Richtlinien verwalten

Auf dieser Seite wird beschrieben, wie Sie mit der Google Cloud Console und der Google Cloud CLI Richtlinien für die Gültigkeitsdauer (TTL) konfigurieren. Bevor Sie diese Seite lesen, sollten Sie mit dem Firestore-Datenmodell vertraut sein.

Gültigkeitsdauer – Übersicht

Mit TTL-Richtlinien können Sie veraltete Daten automatisch aus Ihren Datenbanken 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.

Preise

TTL-Löschvorgänge werden auf die 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

  • 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. Beispielsweise zählen eine Einzelfeldindexierungsausnahme und eine TTL-Richtlinie für dasselbe Feld als eine Feldkonfiguration auf das Limit.
  • Für Firestore-Kunden im Datastore-Modus kann die TTL nicht mit dem Nebenläufigkeitsmodus Optimistic With Entity Groups verwendet werden. Ändern Sie gegebenenfalls den Nebenläufigkeitsmodus in den optimistischen Nebenläufigkeitsmodus.

TTL löschen

Beachten Sie die folgenden wichtigen Verhaltensweisen beim TTL-gesteuerten Löschen:

  • Das Löschen über TTL erfolgt nicht sofort. Abgelaufene Dokumente werden weiterhin in Abfragen und Lookup-Anfragen angezeigt, bis sie vom TTL-Prozess gelöscht werden. TTL tauscht Löschfristen zugunsten niedrigerer Gesamtbetriebskosten für Löschvorgänge aus. Daten werden in der Regel innerhalb von 24 Stunden nach ihrem Ablaufdatum gelöscht.

  • Wenn Sie ein Dokument über TTL löschen, werden die untergeordneten Sammlungen dieses Dokuments 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. Diese Bulk-Löschung erfolgt außerdem 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 gelöscht, nachdem die Einrichtung der TTL-Richtlinie abgeschlossen ist und aktiviert wird.

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

  • Löschungen erfolgen nicht transaktional. Dokumente mit derselben Ablaufzeit werden nicht unbedingt gleichzeitig gelöscht. Wenn dies erforderlich ist, führen Sie die Löschungen mithilfe einer Clientbibliothek aus.

  • Firestore berücksichtigt immer das letzte TTL-Feld, um den Ablauf zu bestimmen. Wenn beispielsweise das TTL-Feld eines abgelaufenen, 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. Über die TTL gesteuerte Löschvorgänge werden mit einer niedrigeren Priorität behandelt. Es gibt noch weitere Strategien, um Traffic-Spitzen aus TTL-gesteuerten Löschvorgängen auszugleichen.

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

TTL-Felder und -Indexe

Ein TTL-Feld kann indexiert oder nicht indexiert werden. Da es sich bei einem TTL-Feld um einen Zeitstempel handelt, kann sich die Indexierung des Felds bei höheren Traffic-Raten auf die Leistung auswirken. Das Indexieren eines Zeitstempelfelds kann zu Hotspots führen, was einen Verstoß gegen Best Practices darstellt. Hotspots haben hohe Lese-, Schreib- und Löschraten für einen kleinen Dokumentbereich.

Standardmäßig erstellt 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 Ansehen 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 Überprüfung des Status von TTL-Vorgängen sind datastore.operations.list und datastore.operations.get erforderlich.

Informationen zu Rollen mit diesen Berechtigungen finden Sie unter Firestore Identity and Access Management-Rollen.

Hinweise

Bevor Sie die gcloud CLI zum Verwalten von TTL-Richtlinien verwenden, verwenden Sie den Befehl gcloud components update, 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.

Bei der 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 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 des Felds TTL festlegen:

  • Der Wert im Feld „TTL“ kann eine Zeit in der Zukunft, jetzt oder in der Vergangenheit sein. Wenn der Wert in der Vergangenheit liegt, kann das Dokument sofort gelöscht werden. Sie können beispielsweise eine TTL-Richtlinie mit dem Feld expireAt erstellen, die Sie dann in vorhandene Dokumente einfügen.

  • Wenn Sie einen anderen Datentyp verwenden oder den Wert im Feld „TTL“ 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 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 Konsole kehrt zur Seite Gültigkeitsdauer zurück. Wenn der Vorgang erfolgreich gestartet wurde, wird auf der Seite ein Eintrag zur Tabelle der TTL-Richtlinien hinzugefügt. Bei einem Fehler wird auf der Seite eine Fehlermeldung angezeigt.

gcloud

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung 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 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 

Dauer der Aktivierung der TTL-Richtlinie

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

TTL-Richtlinien ansehen

So rufen Sie TTL-Richtlinien und ihren 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 Gültigkeitsdauer.

In der Konsole sind die TTL-Richtlinien für Ihre Datenbank und der Status der einzelnen Richtlinien aufgeführt.

gcloud

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung 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 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 listen Sie TTL-Richtlinien unter einer bestimmten Sammlungsgruppe auf:

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

View operation details

You can use the gcloud CLI to view more details about a TTL policy that is in the CREATING state.

Use the operations list command to see all running and recently completed operations:

gcloud firestore operations list

Die Antwort enthält eine Schätzung des Vorgangsfortschritts.

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 Gültigkeitsdauer.

  4. Suchen Sie in der Tabelle „TTL-Richtlinie“ nach der 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 Konsole kehrt zur Seite Gültigkeitsdauer zurück. Bei Erfolg entfernt Firestore die TTL-Richtlinie aus der Tabelle.

gcloud

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung 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 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
    

TTL-Löschungen überwachen

Sie können Cloud Monitoring verwenden, um Messwerte zu TTL-gesteuerten Löschungen anzusehen. Firestore bietet die folgenden Messwerte für die TTL:

Messwerttyp Messwertname Messwertbeschreibung
firestore.googleapis.com/document/ttl_deletion_count Anzahl der Löschungen der Gültigkeitsdauer

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

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

Verstrichene Zeit zwischen dem Ablauf eines Dokuments gemäß einer TTL-Richtlinie und dem eigentlichen Löschen.

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