Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Verwalten Sie die Datenaufbewahrung mit TTL-Richtlinien

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Auf dieser Seite wird beschrieben, wie Sie mithilfe der Google Cloud Platform-Konsole und der Google Cloud-Befehlszeilenschnittstelle Time-to-Live (TTL)-Richtlinien konfigurieren. Bevor Sie diese Seite lesen, sollten Sie sich mit dem Datenmodell von Cloud Firestore vertraut machen .

Time-to-live-Übersicht

Verwenden Sie Time-to-Live (TTL)-Richtlinien, 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 löschen. Daten werden in der Regel innerhalb von 72 Stunden nach ihrem Ablaufdatum gelöscht.

Preisgestaltung

TTL-Löschvorgänge werden auf Ihre Kosten für das Löschen von Dokumenten angerechnet. Die Preise für Löschvorgänge finden Sie unter Cloud Firestore-Preise .

Grenzen und Einschränkungen

  • Nur ein Feld pro Sammlungsgruppe kann als TTL-Feld gekennzeichnet werden.
  • Insgesamt sind 200 Konfigurationen auf Feldebene zulässig. Eine Feldkonfiguration kann mehrere Konfigurationen für dasselbe Feld enthalten. Beispielsweise zählen eine Einzelfeld-Indizierungsausnahme und eine TTL-Richtlinie für dasselbe Feld als eine Feldkonfiguration zum Limit.

TTL-Löschung

Beachten Sie die folgenden Schlüsselverhalten des TTL-gesteuerten Löschens:

  • Das Löschen durch TTL ist kein sofortiger Vorgang. Abgelaufene Dokumente werden weiterhin in Abfragen und Nachschlageanforderungen angezeigt, bis der TTL-Prozess sie tatsächlich löscht. TTL tauscht die Aktualität des Löschens gegen reduzierte Gesamtbetriebskosten für das Löschen. Daten werden in der Regel innerhalb von 72 Stunden nach ihrem Ablaufdatum gelöscht.

  • Durch das Löschen eines Dokuments über TTL werden Untersammlungen unter diesem Dokument nicht 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 auch nicht sofort erfolgt und davon abhängt, wie viele Daten für diese Sammlungsgruppe vorhanden sind.

  • TTL löscht Dokumente nicht unbedingt in derselben 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öschungen mithilfe einer Client-Bibliothek durch.

  • Cloud Firestore berücksichtigt immer das neueste TTL-Feld, um den Ablauf zu bestimmen. Wenn beispielsweise ein abgelaufenes, aber noch nicht gelöschtes Dokument sein TTL-Feld auf ein späteres Datum aktualisiert hat, ist das Dokument nicht abgelaufen und das neue Datum wird verwendet.

  • TTL wurde entwickelt, um die Auswirkungen auf andere Datenbankaktivitäten zu minimieren. Von TTL getriebene Löschungen werden mit niedrigerer Priorität behandelt. Es gibt auch andere Strategien, um Verkehrsspitzen durch TTL-gesteuerte Löschungen auszugleichen.

  • Das Löschen über TTL sendet Push-Benachrichtigungen für aktive Snapshot-Listener 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. Das Indizieren eines Zeitstempelfelds kann Hotspots erzeugen, was gegen Best Practices verstößt. 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 Einzelfeld- Indexausnahme 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 datastore.indexes.list und datastore.indexes.get erforderlich.
  • Das Ändern von TTL-Richtlinien erfordert die datastore.indexes.update .
  • Das Überprüfen des Status von TTL-Vorgängen erfordert datastore.operations.list und datastore.operations.get .

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, verwenden Sie den Befehl gcloud components update , um Komponenten auf die neueste verfügbare Version zu aktualisieren:

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 . Sie können ein bereits vorhandenes Feld auswählen oder ein Feld angeben, das Sie später hinzufügen möchten. 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önnen Sie eine TTL-Richtlinie mit dem Feld expireAt " erstellen, die Sie dann zu vorhandenen Dokumenten hinzufügen.

Führen Sie die folgenden Schritte aus, um eine TTL-Richtlinie zu erstellen:

Google Cloud-Konsole

  1. Rufen Sie in der Google Cloud Platform-Konsole die Seite Cloud Firestore Time-to-live auf.

    Rufen Sie die Seite Time-to-live auf

  2. Klicken Sie auf Richtlinie erstellen .

  3. Geben Sie einen Sammlungsgruppennamen und einen Zeitstempelfeldnamen ein.

  4. Klicken Sie auf Erstellen .

Die Konsole kehrt zur Seite Time-to-live zurück. Wenn der Vorgang erfolgreich gestartet wird, fügt die Seite der TTL-Richtlinientabelle einen Eintrag hinzu. Bei einem Fehler zeigt die Seite eine Fehlermeldung an.

gcloud

Verwenden Sie den Befehl firestore fields ttls update , um eine TTL-Richtlinie zu konfigurieren. Fügen Sie das Flag --async , um zu verhindern, dass die gcloud-Befehlszeilenschnittstelle 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 es zehn Minuten oder länger dauern, eine TTL-Richtlinie zu aktivieren. Sobald Sie einen Vorgang gestartet haben, 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-Konsole

Rufen Sie in der Google Cloud Platform-Konsole die Seite Cloud Firestore Time-to-live auf.

Rufen Sie die Seite Time-to-live auf

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 

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

gcloud firestore fields ttls list  --collection-group=collection_group_name

Betriebsdetails anzeigen

Sie können die gcloud-Befehlszeilenschnittstelle verwenden, um weitere Details zu einer TTL-Richtlinie anzuzeigen, die sich im CREATING -Zustand befindet.

Verwenden Sie den Befehl operations list , um alle laufenden und kürzlich abgeschlossenen Operationen anzuzeigen:

gcloud firestore operations list

Die Antwort enthält eine Schätzung des Fortschritts der Operation.

Deaktivieren Sie eine TTL-Richtlinie

Führen Sie die folgenden Schritte aus, um eine TTL-Richtlinie zu deaktivieren.

Google Cloud-Konsole

  1. Rufen Sie in der Google Cloud Platform-Konsole die Seite Cloud Firestore Time-to-live auf.

    Rufen Sie die Seite Time-to-live auf

  2. Suchen Sie in der TTL-Richtlinientabelle die Zeile für die TTL-Richtlinie. Klicken Sie innerhalb dieser Tabellenzeile auf die Schaltfläche Löschen (Mülleimer).

  3. Bestätigen Sie mit einem Klick auf Löschen .

Die Konsole kehrt zur Seite Time-to-live zurück. Bei Erfolg entfernt Cloud Firestore die TTL-Richtlinie aus der Tabelle.

gcloud

Verwenden Sie den Befehl firestore fields ttls update , um eine TTL-Richtlinie zu konfigurieren. Fügen Sie das Flag --async , um zu verhindern, dass die gcloud-Befehlszeilenschnittstelle 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

Sie können Cloud Monitoring verwenden, um Messwerte zu TTL-gesteuerten Löschungen anzuzeigen. Cloud Firestore stellt die folgenden Messwerte für TTL bereit:

Zählung der Time-to-Live-Löschung

Gesamtzahl der Dokumente, die durch Time-to-Live (TTL)-Richtlinien gelöscht wurden.

Time-to-live-Ablauf bis zu Löschverzögerungen

Zeit, die zwischen dem Ablauf eines Dokuments gemäß einer Time-to-live (TTL)-Richtlinie 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 .