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 das Datenmodell für den Datastore-Modus kennen.

Übersicht über die Gültigkeitsdauer

Mit TTL-Richtlinien werden veraltete Daten automatisch aus Ihren Datenbanken entfernt. In einer TTL-Richtlinie wird eine bestimmte Property als Ablaufzeit für Entitäten einer bestimmten Art festgelegt. Mit TTL können Sie die Speicherkosten senken, indem Sie veraltete Daten bereinigen. 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. Preise für Löschvorgänge finden Sie unter Preise für Firestore im Datastore-Modus.

Limits und Einschränkungen

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

TTL-Löschung

Beachten Sie die folgenden wichtigen Verhaltensweisen bei der TTL-basierten Löschung:

  • Das Löschen über die 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 gegen geringere Gesamtbetriebskosten für das Löschen eingetauscht. Daten werden in der Regel innerhalb von 24 Stunden nach ihrem Ablaufdatum gelöscht.

  • Wenn Sie eine Entität über die 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, im Bulk-Verfahren gelöscht. Beachten Sie, dass auch dieses Löschen nicht sofort erfolgt und davon abhängt, wie viele Daten für diese Art vorhanden sind.

  • Wenn für ein Entitätselement ein Ablaufdatum in der Vergangenheit festgelegt ist und Sie der Art eine neue ttl-Richtlinie hinzufügen, wird das Entitätselement innerhalb von 24 Stunden nach Abschluss der Einrichtung der ttl-Richtlinie gelöscht.

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

  • Das Löschen erfolgt nicht transaktional. Entitäten mit demselben Ablaufdatum werden nicht unbedingt gleichzeitig gelöscht. Wenn Sie dieses Verhalten benötigen, führen Sie die Löschungen mit einer Clientbibliothek aus.

  • Im Datastore-Modus wird immer das neueste 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, ist die Entität nicht abgelaufen und das neue Datum wird verwendet.

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

  • TTL soll die Auswirkungen auf andere Datenbankaktivitäten minimieren. Löschungen aufgrund der TTL werden mit niedrigerer Priorität behandelt. Es gibt auch andere Strategien, um Traffic-Spitzen durch TTL-basiertes Löschen zu glätten.

TTL-Attribute und ‑Indexe

Eine TTL-Property kann indexiert oder nicht indexiert sein. Da es sich bei einer TTL-Property jedoch um einen Zeitstempel handelt, kann die Indexierung der Property bei höheren Zugriffsraten die Leistung beeinträchtigen. Die Indexierung eines Zeitstempelattributs verstößt gegen Best Practices und kann Hotspots verursachen. Hotspots sind hohe Lese-, Schreib- und Löschraten für einen schmalen Schlüsselbereich.

Standardmäßig erstellt Datastore einen integrierten Index für alle Properties. Sie können eine Property aus Indexen ausschließen, um Indexe für eine TTL-Property 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.
  • Für die Prü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 Identity and Access Management-Rollen für Datenspeicher.

Hinweise

Bevor Sie die gcloud CLI zum Verwalten von TTL-Richtlinien verwenden, 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 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 der Gültigkeitsdauer wird eine bestimmte Property verwendet, um Entitäten zu identifizieren, die gelöscht werden können. Diese TTL-Property muss vom Typ Date and time sein. Sie können eine bereits vorhandene Property auswählen 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 der TTL-Eigenschaft 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 dem Attribut expireAt erstellen und dann vorhandenen Entitäten 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

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

  4. Klicken Sie auf Richtlinie erstellen.

  5. Geben Sie einen Artnamen und einen Zeitstempelattributnamen ein.

  6. Klicken Sie auf Erstellen.

Die Console kehrt zur Seite Lebensdauer zurück. Wenn der Vorgang erfolgreich gestartet wird, fügt die Seite der Tabelle mit den TTL-Richtlinien einen Eintrag hinzu. Bei einem Fehler wird auf der Seite eine Fehlermeldung angezeigt.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  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
    

Selbst bei einer leeren Datenbank kann es zehn Minuten oder länger dauern, bis eine TTL-Richtlinie aktiviert ist. Wenn 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 Lebensdauer.

In der Console werden TTL-Richtlinien für Ihre Datenbank aufgelistet. Außerdem ist der Status jeder Richtlinie angegeben.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  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
    

    So listen Sie TTL-Richtlinien einer bestimmten Art auf:

    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 anzeigen zu lassen:

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

  4. Suchen Sie in der Tabelle mit TTL-Richtlinien nach der Zeile für die TTL-Richtlinie. Klicken Sie in dieser Tabellenzeile auf die Schaltfläche Löschen (Mülleimer).

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

Die Console kehrt zur Seite Lebensdauer zurück. Im Erfolgsfall entfernt Datastore die TTL-Richtlinie aus der Tabelle.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  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

Mit Cloud Monitoring können Sie Messwerte zu TTL-basierten Löschungen aufrufen. 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 gemäß TTL-Richtlinien gelöscht wurden.

datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays TTL-Ablauf zu Löschverzögerungen

Die Zeitspanne 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 Benutzerdefinierte Dashboards verwalten und Dashboard-Widgets hinzufügen.