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
unddatastore.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
unddatastore.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
Gehen Sie in der Google Cloud Platform Console zur Seite „Datenbanken“ .
Wählen Sie aus der Liste der Datenbanken die gewünschte Datenbank aus.
Klicken Sie im Navigationsmenü auf „Time-to-live“ .
Klicken Sie auf Richtlinie erstellen .
Geben Sie einen Sammlungsgruppennamen und einen Zeitstempelfeldnamen ein.
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
Gehen Sie in der Google Cloud Platform Console zur Seite „Datenbanken“ .
Wählen Sie aus der Liste der Datenbanken die gewünschte Datenbank aus.
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
Gehen Sie in der Google Cloud Platform Console zur Seite „Datenbanken“ .
Wählen Sie aus der Liste der Datenbanken die gewünschte Datenbank aus.
Klicken Sie im Navigationsmenü auf „Time-to-live“ .
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).
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 .