Auf dieser Seite wird beschrieben, wie Sie mit der Google Cloud Console und der Google Cloud CLI TTL-Richtlinien (Time-to-Live) konfigurieren. Bevor Sie diese Seite lesen, sollten Sie sich mit dem Cloud Firestore-Datenmodell vertraut machen.
Übersicht über die Gültigkeitsdauer
Mit Richtlinien zur Gültigkeitsdauer (TTL) 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 Cloud Firestore-Preise.
Limits und Einschränkungen
- Sie können nur ein Feld pro Sammlungsgruppe als TTL-Feld markieren.
- Sie können maximal 1.000 Konfigurationen auf Feldebene haben. Eine Feldkonfiguration kann mehrere Konfigurationen für dasselbe Feld enthalten. Eine Einzelfeldindex-Ausnahme und eine TTL-Richtlinie für dasselbe Feld zählen beispielsweise als eine Feldkonfiguration für das Limit.
- Für Kunden mit Firestore im Datastore-Modus kann TTL nicht mit dem Gleichzeitigkeitsmodus Optimistic With Entity Groups verwendet werden. Sie sollten den Gleichzeitigkeitsmodus in den optimistischen Gleichzeitigkeitsmodus ändern.
TTL-Löschvorgang
Beachten Sie die folgenden wichtigen Verhaltensweisen beim TTL-basierten Löschen:
Das Löschen über TTL erfolgt nicht sofort. Abgelaufene Dokumente werden weiterhin in Abfragen und Suchanfragen angezeigt, bis sie durch den TTL-Prozess tatsächlich gelöscht werden. Bei TTL wird die Aktualität des Löschens zugunsten geringerer Gesamtbetriebskosten für Löschvorgänge geopfert. Daten werden in der Regel innerhalb von 24 Stunden nach ihrem Ablaufdatum gelöscht.
Wenn Sie ein Dokument über die 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. Das Löschen von Daten in großen Mengen erfolgt nicht sofort, sondern hängt davon ab, wie viele Daten für die 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 und Aktivierung der TTL-Richtlinie gelöscht.
Dokumente werden durch TTL nicht unbedingt in derselben Reihenfolge wie ihre Ablauf-Zeitstempel gelöscht.
Löschvorgänge 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 mit einer Clientbibliothek aus.
Bei Cloud Firestore wird immer das neueste TTL-Feld verwendet, um das Ablaufdatum 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.
Cloud Firestore läuft nur ab, wenn das TTL-Feld auf bestimmte Werttypen festgelegt ist. Bei Datenbanken der Standard Edition muss das Feld auf einen
Date and time-Wert festgelegt werden. Bei Enterprise-Datenbanken muss das Feld entweder auf einenDate and time-Wert oder auf einenArray-Wert mit einemDate and time-Wert festgelegt werden. Wenn Sie das Feld nicht angeben oder auf einen Wert wienullfestlegen, können Sie Abläufe für einzelne Dokumente deaktivieren.TTL soll die Auswirkungen auf andere Datenbankaktivitäten minimieren. Löschungen, die durch die TTL ausgelöst werden, haben eine niedrigere Priorität. Es gibt auch andere Strategien, um Traffic-Spitzen durch TTL-gesteuerte Löschvorgänge zu glätten.
Beim Löschen über TTL werden alle aktiven Snapshot-Listener aufgerufen und Cloud Functions-Cloud 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 bei höheren Traffic-Raten auf die Leistung auswirken. Wenn Sie ein Zeitstempelfeld indexieren, können Hotspots entstehen, was gegen die Best Practices verstößt. Hotspots sind hohe Lese-, Schreib- und Löschraten für einen kleinen Dokumentbereich.
Standardmäßig wird in Cloud Firestore Standard Edition ein Einzelfeldindex für alle Felder erstellt. Sie können eine Einzelfeldindex-Ausnahme 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.listunddatastore.indexes.geterforderlich. - Zum Ändern von TTL-Richtlinien ist die Berechtigung
datastore.indexes.updateerforderlich. - Zum Prüfen des Status von TTL-Vorgängen sind
datastore.operations.listunddatastore.operations.geterforderlich.
Informationen zu Rollen, denen diese Berechtigungen zugewiesen sind, finden Sie unter Cloud Firestore IAM-Rollen.
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 angegebenes Feld, um Dokumente zu identifizieren, die gelöscht werden können.
Bei Standard Edition-Datenbanken muss das TTL-Feld auf einen Date and time-Wert festgelegt werden.
Bei Datenbanken der Enterprise-Version muss der Wert entweder Date and time oder Array mit einem Date and time-Wert sein. Sie können ein vorhandenes Feld auswählen oder ein Feld angeben, das Sie später hinzufügen möchten.
Beachten Sie Folgendes, bevor Sie den Wert des TTL-Felds festlegen:
Der Wert des TTL-Felds kann eine Zeit in der Zukunft, jetzt oder in der Vergangenheit sein. Wenn der Wert eine Zeit in der Vergangenheit ist, kann das Dokument sofort gelöscht werden. Sie können beispielsweise eine TTL-Richtlinie mit dem Feld
expireAterstellen, das Sie dann 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.
So erstellen Sie eine TTL-Richtlinie:
Google Cloud Console
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
Klicken Sie im Navigationsmenü auf Time-to-Live.
Klicken Sie auf Richtlinie erstellen.
Geben Sie einen Namen für die Sammlungsgruppe und einen Namen für das Zeitstempelfeld ein.
Optional: Konfigurieren Sie einen Ablauf-Offset. Geben Sie einen Wert ein und wählen Sie eine Einheit aus (Tage, Stunden, Minuten oder Sekunden). Der Standardwert für den Offset ist 0.
Klicken Sie auf Erstellen.
Die Console kehrt zur Seite Time-to-live zurück. Wenn der Vorgang erfolgreich gestartet wird, wird der Tabelle „TTL-Richtlinien“ ein Eintrag hinzugefügt. 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, damit die gcloud CLI nicht auf den Abschluss des Vorgangs wartet.
gcloud firestore fields ttls update
ttl_field
--collection-group=collection_group_name
--enable-ttl
Wenn Sie die TTL mit einem Ablauf-Offset aktivieren möchten, fügen Sie das Flag --expiration-offset hinzu:
gcloud firestore fields ttls update
ttl_field
--collection-group=collection_group_name
--enable-ttl
--expiration-offset=expiration_offset
Ersetzen Sie expiration_offset durch einen Zeitraum, z. B. 7d für 7 Tage oder 24h für 24 Stunden. Wenn Sie dieses Flag weglassen, ist der Standardwert für den Ablauf-Offset 0.
Dauer der Aktivierung der TTL-Richtlinie
Es kann mindestens zehn Minuten oder länger dauern, bis eine TTL-Richtlinie aktiviert wird. Wenn Sie einen Vorgang starten, wird er durch Schließen des Terminals nicht abgebrochen.
TTL-Richtlinien ansehen
So rufen Sie TTL-Richtlinien und ihre Status auf:
Google Cloud Console
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
Klicken Sie im Navigationsmenü auf Time-to-Live.
In der Konsole werden die TTL-Richtlinien für Ihre Datenbank mit dem Status der einzelnen Richtlinien aufgeführt.
gcloud
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
Verwenden Sie Folgendes, um TTL-Richtlinien für eine bestimmte 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 Befehl operations list 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
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
Klicken Sie im Navigationsmenü auf Time-to-Live.
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).
Klicken Sie zur Bestätigung auf Löschen.
Die Console kehrt zur Seite Time-to-live zurück. Bei Erfolg wird die TTL-Richtlinie von Cloud Firestore aus der Tabelle entfernt.
gcloud
1. Verwenden Sie den Befehl firestore fields ttls update, um eine TTL-Richtlinie zu konfigurieren. Fügen Sie das Flag --async hinzu, damit die gcloud CLI nicht 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-basierten Löschvorgängen aufrufen. Cloud Firestore bietet die folgenden Messwerte für die TTL:
| Messwerttyp | Messwertname | Messwertbeschreibung |
|---|---|---|
| firestore.googleapis.com/document/ttl_deletion_count | Anzahl der Löschungen aufgrund der Gültigkeitsdauer |
Die Gesamtzahl der Dokumente, die durch TTL-Richtlinien gelöscht wurden. |
| firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Verzögerungen beim Löschen nach Ablauf der Gültigkeitsdauer |
Die 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 Cloud Firestore-Messwerten finden Sie unter Benutzerdefinierte Dashboards verwalten und Dashboard-Widgets hinzufügen.