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 (TTL) konfigurieren. Bevor Sie diese Seite lesen, sollten Sie sich mit dem Datenmodell im Datastore-Modus vertraut machen.

Übersicht über die Gültigkeitsdauer

Mit TTL-Richtlinien können Sie veraltete Daten automatisch aus Ihren Datenbanken entfernen. Eine TTL-Richtlinie legt ein bestimmtes Attribut als Ablaufzeit für Entitäten in einer bestimmten Art 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 die 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.

Beschränkungen und Beschränkungen

  • Nur eine Property pro Art kann als TTL-Property gekennzeichnet werden.
  • Insgesamt sind 200 TTL-Richtlinien zulässig.

TTL gelöscht

Beachten Sie die folgenden wichtigen Verhaltensweisen beim TTL-gesteuerten Löschen:

  • Das Löschen über TTL erfolgt nicht sofort. Abgelaufene Entitäten werden weiterhin in Abfragen und Lookup-Anfragen angezeigt, bis sie vom TTL-Prozess tatsächlich gelöscht werden. Bei TTL werden Löschfristen zugunsten der geringeren Gesamtbetriebskosten für Löschvorgänge eingetauscht. Daten werden in der Regel innerhalb von 24 Stunden nach ihrem Ablaufdatum gelöscht.

  • Durch das Löschen einer Entität über TTL werden die untergeordneten Entitäten der 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, im Bulk-Verfahren gelöscht. Beachten Sie, dass diese Bulk-Löschung nicht sofort erfolgt und davon abhängt, wie viele Daten für diese Art vorhanden sind.

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

  • TTL löscht Entitäten nicht unbedingt in der gleichen Reihenfolge wie ihre Ablaufzeitstempel.

  • Löschungen erfolgen nicht transaktional. Entitäten mit derselben Ablaufzeit werden nicht unbedingt gleichzeitig gelöscht. Wenn dies erforderlich ist, führen Sie die Löschvorgänge mit einer Clientbibliothek aus.

  • Im Datastore-Modus wird immer das neueste TTL-Feld berücksichtigt, um den Ablauf zu bestimmen. Wenn das TTL-Feld einer abgelaufenen, aber noch nicht gelöschten Entität beispielsweise auf ein späteres Datum aktualisiert wird, ist die Entität nicht abgelaufen und das neue Datum wird verwendet.

  • Im Datastore-Modus läuft ein Dokument nur ab, wenn das Feld „TTL“ auf den Typ Timestamp gesetzt ist. Wenn das Feld fehlt oder auf einen Wert wie null festgelegt ist, können Ablaufzeiten pro Dokument deaktiviert werden.

  • TTL soll die Auswirkungen auf andere Datenbankaktivitäten minimieren. Über die TTL ausgelöste Löschvorgänge werden mit einer niedrigeren Priorität behandelt. Es gibt auch andere Strategien, um Trafficspitzen bei TTL-gesteuerten Löschvorgängen auszugleichen.

TTL-Attribute und -Indexe

Ein TTL-Attribut kann indexiert oder nicht indexiert werden. Da ein TTL-Attribut jedoch ein Zeitstempel ist, kann die Indexierung des Attributs die Leistung bei höheren Trafficraten beeinträchtigen. Das Indexieren eines Zeitstempelattributs verstößt gegen die Best Practices und kann Hotspots erzeugen. Hotspots sind hohe Lese-, Schreib- und Löschraten bis in einen engen Schlüsselbereich.

Standardmäßig erstellt Datastore einen integrierten Index für alle Properties. Sie können ein Attribut aus Indexen ausschließen, um Indexe für ein TTL-Attribut 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 der TTL-Richtlinien ist die Berechtigung datastore.indexes.update erforderlich.
  • Für die Überprüfung 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 Identity and Access Management-Rollen in Datastore.

Hinweise

Bevor Sie TTL-Richtlinien über die gcloud CLI verwalten, 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 Entitätsattribut als Ablaufzeit für Entitäten in einer Art fest. Die TTL-Richtlinie gilt für die angegebene Art in allen Namespaces.

Bei der TTL wird eine bestimmte Property verwendet, um Entitäten zu identifizieren, die gelöscht werden können. Dieses TTL-Attribut muss vom Typ Date and time sein. Sie können eine Property auswählen, die bereits vorhanden ist, oder eine Property festlegen, die Sie später hinzufügen möchten.

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

  • Der Wert des TTL-Attributs kann in der Zukunft, jetzt oder in der Vergangenheit liegen. Wenn der Wert in der Vergangenheit liegt, kann die Entität sofort gelöscht werden. Sie können beispielsweise eine TTL-Richtlinie mit dem Attribut expireAt erstellen, das 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 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 Typnamen und einen Zeitstempelattributnamen ein.

  6. Klicken Sie auf Erstellen.

Die Konsole kehrt zur Seite Gültigkeitsdauer zurück. Wenn der Vorgang erfolgreich gestartet wurde, wird auf der Seite ein Eintrag zur Tabelle mit den TTL-Richtlinien hinzugefügt. 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 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.

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

Auch bei einer leeren Datenbank kann das Aktivieren einer TTL-Richtlinie zehn Minuten oder länger dauern. Nachdem Sie einen Vorgang gestartet haben, wird der Vorgang durch Schließen des Terminals nicht abgebrochen.

TTL-Richtlinien ansehen

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

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 sowie der Status der einzelnen Richtlinien 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 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.

  2. 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 folgenden Code, um TTL-Richtlinien unter einer bestimmten Art aufzulisten:

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

Vorgangsdetails ansehen

Mit der gcloud CLI können Sie weitere Details zu einer TTL-Richtlinie mit dem Status CREATING aufrufen.

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

gcloud firestore operations list

Die Antwort enthält eine Schätzung des Vorgangsfortschritts.

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 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 die Schaltfläche Löschen (Papierkorb).

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

Die Konsole 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 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.

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

Sie können Cloud Monitoring verwenden, um Messwerte zu TTL-gesteuerten Löschungen anzusehen. Datastore bietet die folgenden Messwerte für die TTL:

datastore.googleapis.com/entity/ttl_deletion_count Anzahl der TTL-Löschungen

Gesamtzahl der Entitäten, die durch TTL-Richtlinien gelöscht wurden.

datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays Verzögerungen bei Ablauf der TTL bis zum Löschen

Verstrichene Zeit zwischen dem Ablauf einer Entität gemäß einer TTL-Richtlinie und dem Zeitpunkt, zu dem sie tatsächlich gelöscht wurde.

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