Auf dieser Seite wird beschrieben, wie Sie mit der Google Cloud -Konsole und der Google Cloud CLI TTL-Richtlinien (Time-to-Live) konfigurieren. Bevor Sie diese Seite lesen, sollten Sie sich mit dem Datenmodell für den Datastore-Modus 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 eine bestimmte Eigenschaft als Ablaufzeit für Entitäten eines bestimmten Typs 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 Einheiten angerechnet. Informationen zu den Preisen für Löschvorgänge finden Sie unter Firestore im Datastore-Modus – Preise.
Limits und Einschränkungen
- Sie können nur eine Property pro Art als TTL-Property kennzeichnen.
- Sie können maximal 1.000 TTL-Richtlinien haben.
TTL-Löschvorgang
Beachten Sie die folgenden wichtigen Verhaltensweisen beim TTL-basierten Löschen:
Das Löschen über TTL erfolgt nicht sofort. Abgelaufene Entitäten 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 eine Entität über TTL löschen, werden die untergeordneten Entitäten dieser Entität nicht gelöscht.
Wenn Sie eine TTL-Richtlinie auf eine vorhandene Art anwenden, werden alle Daten, die gemäß der neuen TTL-Richtlinie abgelaufen sind, 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 jeweilige Art vorhanden sind.
Wenn für eine Entität ein Ablaufdatum in der Vergangenheit festgelegt ist und Sie dem Typ eine neue TTL-Richtlinie hinzufügen, wird die Entität innerhalb von 24 Stunden nach Abschluss der Einrichtung und Aktivierung der TTL-Richtlinie gelöscht.
Entitäten werden durch TTL nicht unbedingt in derselben Reihenfolge wie ihre Ablauf-Zeitstempel gelöscht.
Löschvorgänge erfolgen nicht transaktional. Entitäten 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.
Im Datastore-Modus wird immer das aktuelle TTL-Feld verwendet, um das Ablaufdatum zu bestimmen. Wenn beispielsweise das TTL-Feld einer abgelaufenen, aber noch nicht gelöschten Entität auf ein späteres Datum aktualisiert wird, läuft die Entität nicht ab und das neue Datum wird verwendet.
Im Datastore-Modus läuft ein Dokument nur ab, wenn das TTL-Feld auf den Typ
Timestampfestgelegt ist. 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.
TTL-Attribute und ‑Indexe
Eine TTL-Property kann indexiert oder nicht indexiert sein. Da eine TTL-Property jedoch ein Zeitstempel ist, kann sich die Indexierung der Property bei höheren Traffic-Raten auf die Leistung auswirken. Das Indexieren eines Zeitstempelattributs entspricht nicht den Best Practices und kann Hotspots verursachen. Hotspots sind hohe Lese-, Schreib- und Löschraten für einen kleinen Schlüsselbereich.
Standardmäßig wird in Datastore ein integrierter Index für alle Attribute erstellt. Sie können ein Attribut aus Indexen ausschließen, um Indexe für ein TTL-Attribut 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, die diese Berechtigungen zuweisen, finden Sie unter IAM-Identity and Access Management Datenspeicher.
TTL-Richtlinie erstellen
Wenn Sie eine TTL-Richtlinie erstellen, legen Sie eine Entitätseigenschaft als Ablaufzeit für Entitäten einer Art fest. Die TTL-Richtlinie gilt für die angegebene Art in allen Namespaces.
Bei TTL wird eine bestimmte Property verwendet, um Entitäten zu identifizieren, die für das Löschen infrage kommen. Diese TTL-Property muss vom Typ Date and time sein. Sie können eine bereits vorhandene Property auswählen oder eine Property angeben, die Sie später hinzufügen möchten.
Beachten Sie Folgendes, bevor Sie den TTL-Eigenschaftswert festlegen:
Der TTL-Attributwert kann eine Zeit in der Zukunft, die aktuelle Zeit oder eine Zeit in der Vergangenheit sein. Wenn der Wert eine Zeit in der Vergangenheit ist, kann die Entität sofort gelöscht werden. Sie können beispielsweise eine TTL-Richtlinie mit der Eigenschaft
expireAterstellen, die Sie dann vorhandenen Einheiten hinzufügen.Wenn Sie einen anderen Datentyp verwenden oder den TTL-Attributwert nicht festlegen, wird die TTL für die einzelne Entität 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 Art und einen Namen für das Zeitstempelattribut 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
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Verwenden Sie den Befehl
firestore fields ttls update, um eine TTL-Richtlinie zu konfigurieren. Fügen Sie das Flag--asynchinzu, 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-offsethinzu: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.
7dfür 7 Tage oder24hfür 24 Stunden. Wenn Sie dieses Flag weglassen, wird der Ablauf-Offset standardmäßig auf 0 gesetzt.
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 Google Cloud Console werden TTL-Richtlinien für Ihre Datenbank aufgeführt. Außerdem wird der Status jeder Richtlinie angezeigt.
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Verwenden Sie den Befehl
firestore fields ttls list, um eine TTL-Richtlinie aufzurufen. Mit dem folgenden Befehl werden alle TTL-Richtlinien aufgelistet.gcloud firestore fields ttls list
Verwenden Sie Folgendes, um TTL-Richtlinien für eine bestimmte Art 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 Google Cloud Console kehrt zur Seite Time-to-live zurück. Bei Erfolg wird die TTL-Richtlinie aus der Tabelle entfernt.
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Verwenden Sie den Befehl
firestore fields ttls update, um eine TTL-Richtlinie zu konfigurieren. Fügen Sie das Flag--asynchinzu, 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-gesteuerten Löschvorgängen ansehen. Datastore bietet die folgenden Messwerte für TTL:
| datastore.googleapis.com/entity/ttl_deletion_count | Anzahl der TTL-Löschvorgänge |
Gesamtzahl der Entitäten, die durch TTL-Richtlinien gelöscht wurden. |
| datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays | Verzögerungen beim Löschen nach TTL-Ablauf |
Die Zeit, die zwischen dem Ablauf einer Entität gemäß einer TTL-Richtlinie und dem tatsächlichen Löschen der Entität vergangen ist. |
Informationen zum Einrichten eines Dashboards mit Datastore-Messwerten finden Sie unter Benutzerdefinierte Dashboards verwalten und Dashboard-Widgets hinzufügen.