Datenaufbewahrung mit TTL-Richtlinien verwalten

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 TTL-Richtlinien werden veraltete Daten automatisch aus Ihren Datenbanken entfernt. Eine TTL-Richtlinie legt ein bestimmtes Feld als Ablaufzeit für Dokumente in einer bestimmten Sammlungsgruppe fest. Mit der 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 die 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. Beispiel: Eine Einzelfeldindex-Ausnahme und eine TTL-Richtlinie für dasselbe Feld zählen als eine Feldkonfiguration für das Limit.
  • Für Kunden von Firestore im Datastore-Modus kann TTL nicht mit dem Nebenläufigkeitsmodus Optimistisch mit Entitätengruppen verwendet werden. Sie können den Nebenläufigkeitsmodus in den optimistischen Nebenläufigkeitsmodus ändern.

TTL-Löschung

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

  • Das Löschen über TTL erfolgt nicht sofort. Abgelaufene Dokumente werden weiterhin in Abfragen und Suchanfragen angezeigt, bis sie vom TTL-Prozess tatsächlich gelöscht werden. Bei TTL wird die Aktualität des Löschens gegen die geringeren Gesamtbetriebskosten für Löschvorgänge eingetauscht. Daten werden in der Regel innerhalb von 24 Stunden nach ihrem Ablaufdatum gelöscht.

  • Wenn ein Dokument über TTL gelöscht wird, werden die Unterkollektionen 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 im Bulk gelöscht. Beachten Sie, dass dieses Bulk-Löschen auch 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 und Aktivierung der TTL-Richtlinie gelöscht.

  • Die TTL löscht Dokumente nicht unbedingt in der Reihenfolge ihrer Ablaufzeitstempel.

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

  • 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, läuft das Dokument nicht ab und das neue Datum wird verwendet.

  • Cloud Firestore lässt ein Dokument nur dann ablaufen, 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 Datenbanken der Enterprise-Version muss das Feld entweder auf einen Date and time-Wert oder einen Array-Wert mit einem Date and time-Wert gesetzt werden. Wenn Sie das Feld weglassen oder auf einen Wert wie null setzen, können Ablauffristen pro Dokument deaktiviert werden.

  • TTL soll die Auswirkungen auf andere Datenbankaktivitäten minimieren. Löschvorgänge, die durch die TTL ausgelöst werden, werden mit einer niedrigeren Priorität behandelt. 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. Das Indexieren eines Zeitstempelfelds kann zu Hotspots führen, was gegen Best Practices verstößt. Hotspots sind hohe Lese-, Schreib- und Löschraten für einen kleinen Dokumentbereich.

Standardmäßig erstellt die Cloud Firestore Standard-Edition 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, die diese Berechtigungen zuweisen, finden Sie unter Cloud Firestore Identity and Access Management-Rollen.

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. Bei Datenbanken der Standard-Edition muss das TTL-Feld auf einen Date and time-Wert festgelegt werden. Bei Datenbanken der Enterprise-Version muss er entweder auf einen Date and time-Wert oder einen Array-Wert mit einem Date and time-Wert festgelegt werden. Sie können ein bereits vorhandenes Feld auswählen oder ein Feld festlegen, 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, in der Gegenwart oder 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, das Sie dann vorhandenen Dokumenten hinzufügen.

  • Wenn Sie einen anderen Datentyp verwenden oder den Wert des TTL-Felds 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. 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 ist 0.

  7. Klicken Sie auf Erstellen.

In der Console wird wieder die Seite Gültigkeitsdauer angezeigt. Wenn der Vorgang erfolgreich gestartet wird, wird der Tabelle mit den 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, 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

Wenn Sie 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 eine Dauer, z. B. 7d für 7 Tage oder 24h für 24 Stunden. Wenn Sie dieses Flag weglassen, wird der Ablauf-Offset standardmäßig auf 0 gesetzt.

Dauer der Aktivierung der TTL-Richtlinie

Das Aktivieren einer TTL-Richtlinie kann zehn Minuten oder länger dauern. Wenn Sie einen Vorgang starten, wird er 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 Console werden die TTL-Richtlinien für Ihre Datenbank und der 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
   

So listen Sie TTL-Richtlinien unter einer bestimmten Sammlungsgruppe auf:

   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.

Verwenden Sie den Befehl operations list, um alle laufenden und kürzlich abgeschlossenen Vorgänge aufzurufen:

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

  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 mit den TTL-Richtlinien die Zeile für die TTL-Richtlinie. Klicken Sie in dieser Tabellenzeile auf den Button Löschen (Papierkorb).

  5. Klicken Sie zur Bestätigung auf Löschen.

In der Console wird wieder die Seite Gültigkeitsdauer angezeigt. 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
   

TTL-Löschvorgänge überwachen

Mit Cloud Monitoring können Sie Messwerte zu TTL-gesteuerten Löschvorgängen aufrufen. Cloud Firestore bietet die folgenden Messwerte für TTL:

Messwerttyp Messwertname Messwertbeschreibung
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 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 verstrichen ist.

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