Datenaufbewahrung mit TTL-Richtlinien verwalten

Auf dieser Seite wird beschrieben, wie Sie mit der Google Cloud console und der Google Cloud CLI Richtlinien zur Gültigkeitsdauer (Time-to-Live, TTL) konfigurieren. Bevor Sie diese Seite lesen, sollten Sie das Datastore-Modell kennen.

Übersicht über die Gültigkeitsdauer

Mit TTL-Richtlinien werden veraltete Daten automatisch aus Ihren Datenbanken entfernt. Eine TTL-Richtlinie legt eine bestimmte Eigenschaft als Ablaufzeit für Entitäten eines bestimmten Typs fest. 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 Entitäten angerechnet. Informationen zu den Preisen für Löschvorgänge finden Sie unter Preise für Firestore im Datastore-Modus.

Limits und Einschränkungen

  • Sie können nur eine Eigenschaft pro Typ als TTL-Eigenschaft markieren.
  • Sie können maximal 500 TTL-Richtlinien haben.

TTL-Löschvorgänge

Beachten Sie die folgenden wichtigen Verhaltensweisen bei TTL-gesteuerten Löschvorgängen:

  • Das Löschen über TTL erfolgt nicht sofort. Abgelaufene Entitäten werden weiterhin in Abfragen und Suchanfragen angezeigt, bis sie tatsächlich durch den TTL-Prozess gelöscht werden. Bei TTL wird die Pünktlichkeit des Löschvorgangs 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 einen vorhandenen Typ anwenden, werden alle Daten, die gemäß der neuen TTL-Richtlinie abgelaufen sind, in einem Bulk-Vorgang gelöscht. Auch dieser Bulk-Löschvorgang erfolgt nicht sofort und hängt davon ab, wie viele Daten für diesen Typ vorhanden sind.

  • Wenn eine Entität eine Ablaufzeit in der Vergangenheit hat und Sie dem Typ eine neue TTL-Richtlinie hinzufügen, wird die Entität innerhalb von 24 Stunden nach Abschluss der Einrichtung der TTL-Richtlinie und deren Aktivierung gelöscht.

  • Entitäten werden nicht unbedingt in der Reihenfolge ihrer Ablaufzeitstempel gelöscht.

  • Löschvorgänge werden nicht transaktional ausgeführt. 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 neueste TTL-Feld verwendet, um den Ablauf 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 Timestamp festgelegt ist. Wenn Sie das Feld leer lassen oder auf einen Wert wie null setzen, können Sie Abläufe pro Dokument deaktivieren.

  • TTL soll die Auswirkungen auf andere Datenbankaktivitäten minimieren. Löschvorgänge, die durch TTL ausgelöst werden, haben eine niedrigere Priorität. Es gibt auch andere Strategien, um Trafficspitzen durch TTL-gesteuerte Löschvorgänge zu vermeiden.

TTL-Eigenschaften und -Indexe

Eine TTL-Eigenschaft kann indexiert oder nicht indexiert sein. Da eine TTL-Eigenschaft jedoch ein Zeitstempel ist, kann die Indexierung der Eigenschaft die Leistung bei höheren Trafficraten beeinträchtigen. Das Indexieren einer Zeitstempel-Eigenschaft entspricht nicht den Best Practices und kann Hotspotsverursachen. Hotspots sind hohe Lese-, Schreib- und Löschraten für einen kleinen Schlüsselbereich.

Standardmäßig erstellt Datastore einen integrierten Index für alle Eigenschaften. Sie können eine Eigenschaft aus Indexen ausschließen , um Indexe für eine TTL-Eigenschaft 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.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, mit denen diese Berechtigungen zugewiesen werden, finden Sie unter Rollen von Identity and Access Management für Datastore.

Hinweis

Bevor Sie die gcloud CLI zum Verwalten von TTL-Richtlinien verwenden, verwenden Sie den gcloud components update Befehl, um die Komponenten auf die neueste verfügbare Version zu aktualisieren:

gcloud components update

TTL-Richtlinie erstellen

Wenn Sie eine TTL-Richtlinie erstellen, legen Sie eine Entitätseigenschaft als Ablaufzeit für Entitäten eines Typs fest. Die TTL-Richtlinie gilt für den angegebenen Typ in allen Namespaces.

TTL verwendet eine bestimmte Eigenschaft, um Entitäten zu identifizieren, die für das Löschen infrage kommen. Diese TTL-Eigenschaft muss vom Typ Date and time sein. Sie können eine bereits vorhandene Eigenschaft auswählen oder eine Eigenschaft festlegen, die Sie später hinzufügen möchten.

Beachten Sie Folgendes, bevor Sie den Wert der TTL-Eigenschaft festlegen:

  • Der Wert der TTL-Eigenschaft kann eine Zeit in der Zukunft, jetzt oder in der Vergangenheit sein. Wenn der Wert eine Zeit in der Vergangenheit ist, kommt die Entität sofort für das Löschen infrage. Sie können beispielsweise eine TTL-Richtlinie mit der Eigenschaft expireAt erstellen, die Sie dann vorhandenen Entitäten hinzufügen.

  • Wenn Sie einen anderen Datentyp verwenden oder den Wert der TTL-Eigenschaft nicht festlegen, wird die TTL für die einzelne Entität deaktiviert.

So erstellen Sie eine TTL-Richtlinie:

Google Cloud Console

  1. Rufen Sie in der Google Cloud console die Datenbanken Seite 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 Typnamen und einen Namen für die Zeitstempel-Eigenschaft ein.

  6. Klicken Sie auf Erstellen.

Die Console kehrt zur Seite Gültigkeitsdauer 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

  1. Aktivieren Sie Cloud Shell in der Google Cloud console.

    Cloud Shell aktivieren

    Unten in der Google Cloud console wird eine Cloud Shell Sitzung gestartet und eine Befehlszeilenaufforderung 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.

  2. Verwenden Sie den firestore fields ttls update Befehl, 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
    

Auch bei einer leeren Datenbank kann es zehn Minuten oder länger dauern, eine TTL-Richtlinie zu aktivieren. Wenn Sie einen Vorgang starten, wird er durch Schließen des Terminals nicht abgebrochen.

TTL-Richtlinien ansehen

Führen Sie die folgenden Schritte aus, um TTL-Richtlinien und deren Status anzusehen.

Google Cloud Console

  1. Rufen Sie in der Google Cloud console die Datenbanken Seite 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 Google Cloud console werden die TTL-Richtlinien für Ihre Datenbank und der Status jeder Richtlinie aufgeführt.

gcloud

  1. Aktivieren Sie Cloud Shell in der Google Cloud console.

    Cloud Shell aktivieren

    Unten in der Google Cloud console wird eine Cloud Shell Sitzung gestartet und eine Befehlszeilenaufforderung 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.

  2. Verwenden Sie den firestore fields ttls list Befehl, um eine TTL-Richtlinie anzusehen. Mit dem folgenden Befehl werden alle TTL-Richtlinien aufgelistet.

    gcloud firestore fields ttls list
    

    Verwenden Sie Folgendes, um TTL-Richtlinien unter einem bestimmten Typ 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.

Verwenden Sie den operations list Befehl, 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

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

Google Cloud Console

  1. Rufen Sie in der Google Cloud console die Datenbanken Seite 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 „TTL-Richtlinien“ die Zeile für die TTL-Richtlinie. Klicken Sie in dieser Tabellenzeile auf die Schaltfläche Löschen (Papierkorb).

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

Die Google Cloud console kehrt zur Seite Gültigkeitsdauer zurück. Bei Erfolg entfernt Datastore die TTL-Richtlinie aus der Tabelle.

gcloud

  1. Aktivieren Sie Cloud Shell in der Google Cloud console.

    Cloud Shell aktivieren

    Unten in der Google Cloud console wird eine Cloud Shell Sitzung gestartet und eine Befehlszeilenaufforderung 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.

  2. Verwenden Sie den firestore fields ttls update Befehl, 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. 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 zwischen TTL-Ablauf und Löschvorgang

Zeit zwischen dem Ablauf einer Entität gemäß einer TTL Richtlinie und dem tatsächlichen Löschen.

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