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 sich mit dem Firestore-Datenmodell vertraut machen.

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. Die 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.

Beschränkungen 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 Ausnahme für die Einzelfeldindexierung und eine TTL-Richtlinie für dasselbe Feld als eine Feldkonfiguration auf das Limit.
  • Für Kunden von Firestore im Datastore-Modus kann TTL nicht mit dem Gleichzeitigkeitsmodus Optimistic With Entity Groups (Optimistisch mit Entitätsgruppen) verwendet werden. Ändern Sie gegebenenfalls den Gleichzeitigkeitsmodus in den optimistischen Gleichzeitigkeitsmodus.

TTL-Löschung

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

  • Das Löschen über die TTL erfolgt nicht sofort. Abgelaufene Dokumente werden weiterhin in Abfragen und Suchanfragen angezeigt, bis sie vom TTL-Prozess tatsächlich gelöscht werden. TTL sorgt dafür, dass die Löschzeit und damit die Gesamtbetriebskosten für Löschvorgänge reduziert werden. Die Daten werden in der Regel innerhalb von 24 Stunden nach ihrem Ablaufdatum gelöscht.

  • Beim Löschen eines Dokuments über die TTL werden untergeordnete Sammlungen in 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 gelöscht. Beachten Sie, dass dieses Bulk-Löschen ebenfalls nicht sofort erfolgt und davon abhängt, 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 gelöscht und aktiviert.

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

  • 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öschungen mithilfe einer Clientbibliothek aus.

  • Firestore berücksichtigt immer das neueste 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. Löschvorgänge aufgrund der TTL werden mit einer niedrigeren Priorität behandelt. Es gibt noch weitere Strategien, um Trafficspitzen 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 sein. Da ein TTL-Feld jedoch ein Zeitstempel ist, kann sich die Indexierung des Felds auf die Leistung bei höheren Traffic-Raten auswirken. Das Indexieren eines Zeitstempelfelds kann zu Hotspots führen, was gegen die Best Practices verstößt. 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 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 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, 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 der TTL wird ein angegebenes 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 im Feld „TTL“ festlegen:

  • Der Wert im Feld „TTL“ kann ein Zeitpunkt in der Zukunft, jetzt oder in der Vergangenheit sein. Liegt der Wert in der Vergangenheit, kann das Dokument sofort gelöscht werden. 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 im Feld „TTL“ nicht festlegen, wird die TTL für das jeweilige 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. Klicke 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 wird, fügt die Seite der Tabelle mit den TTL-Richtlinien einen Eintrag hinzu. Wenn ein Fehler auftritt, 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 

Aktivierungsdauer der TTL-Richtlinie

Das Aktivieren einer TTL-Richtlinie kann auch bei einer leeren Datenbank zehn Minuten oder länger dauern. Sobald Sie einen Vorgang gestartet haben, wird der Vorgang durch Schließen des Terminals nicht abgebrochen.

TTL-Richtlinien ansehen

So rufen Sie TTL-Richtlinien und deren 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. Klicke im Navigationsmenü auf Gültigkeitsdauer.

In der Console werden TTL-Richtlinien für die Datenbank und der Status jeder Richtlinie 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. Der folgende Befehl listet alle TTL-Richtlinien auf.

    gcloud firestore fields ttls list
    

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

    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. Klicke im Navigationsmenü auf Gültigkeitsdauer.

  4. Suchen Sie in der TTL-Richtlinientabelle 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. Im Erfolgsfall 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öschvorgänge überwachen

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

Messwerttyp Messwertname Beschreibung des Messwerts
firestore.googleapis.com/document/ttl_deletion_count Anzahl der Löschvorgänge für die Gültigkeitsdauer

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

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Gültigkeitsdauer bis zur Löschverzögerung

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

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