Datenaufbewahrung mit TTL-Richtlinien verwalten
Auf dieser Seite wird beschrieben, wie Sie mit der Google Cloud -Konsole und der Google Cloud CLI Richtlinien für die Gültigkeitsdauer (Time-to-Live, TTL) konfigurieren. Bevor Sie diese Seite lesen, sollten Sie sich mit dem Firestore-Datenmodell vertraut machen.
Gültigkeitsdauer – Übersicht
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 löschen. 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. Eine Einzelfeldindex-Ausnahme und eine TTL-Richtlinie für dasselbe Feld werden beispielsweise als eine Feldkonfiguration auf das Limit angerechnet.
- Für Kunden von Firestore im Datastore-Modus kann TTL nicht mit dem Gleichzeitigkeitsmodus Optimistic With Entity Groups verwendet werden. Ändern Sie den Gleichzeitigkeitsmodus in den optimistischen Gleichzeitigkeitsmodus.
TTL-Löschung
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 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 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 Massenvorgang 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 jeweilige 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 der Reihenfolge ihrer 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 berücksichtigt immer das neueste TTL-Feld, 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.
In Firestore läuft ein Dokument nur ab, wenn das TTL-Feld auf den Typ
Date and time
festgelegt ist. Wenn Sie das Feld nicht angeben oder auf einen Wert wienull
setzen, 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 Trafficspitzen durch TTL-bedingte Löschungen 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 ‑Indizes
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 Traffic-Raten beeinträchtigen. 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 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
unddatastore.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
unddatastore.operations.get
erforderlich.
Rollen, mit denen diese Berechtigungen zugewiesen werden, finden Sie unter Firestore-Rollen für Identity and Access Management.
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.
TTL verwendet ein angegebenes 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 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, die aktuelle Zeit oder eine Zeit in der Vergangenheit sein. Wenn der Wert ein Zeitpunkt in der Vergangenheit ist, kann das Dokument sofort gelöscht werden. Sie können beispielsweise eine TTL-Richtlinie mit dem Feld
expireAt
erstellen, die 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.
Klicken Sie auf Erstellen.
Die Console kehrt zur Seite Time-to-live 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
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
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 von TTL-Richtlinien
Selbst bei einer leeren Datenbank kann es zehn Minuten oder länger dauern, eine TTL-Richtlinie zu aktivieren. Wenn Sie einen Vorgang gestartet haben, 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 TTL-Richtlinien für Ihre Datenbank aufgeführt, einschließlich des Status jeder Richtlinie.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
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
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 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 mit TTL-Richtlinien 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 Firestore aus der Tabelle entfernt.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
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
Mit Cloud Monitoring können Sie Messwerte zu TTL-gesteuerten Löschvorgängen ansehen. Firestore bietet die folgenden Messwerte für TTL:
Messwerttyp | Messwertname | Beschreibung des Messwerts |
---|---|---|
firestore.googleapis.com/document/ttl_deletion_count | Anzahl der Löschungen 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 der Gültigkeitsdauer und Löschung |
Die Zeit, die zwischen dem Ablauf eines Dokuments gemäß einer TTL-Richtlinie und dem tatsächlichen Löschen vergangen ist. |
Informationen zum Einrichten eines Dashboards mit Firestore-Messwerten finden Sie unter Benutzerdefinierte Dashboards verwalten und Dashboard-Widgets hinzufügen.