Gestisci la conservazione dei dati con le policy TTL

Questa pagina descrive come utilizzare la console Google Cloud e il client gcloud di Google Cloud per configurare i criteri TTL (time-to-live). Prima di leggere questa pagina, devi conoscere il modello di dati in modalità Datastore.

Panoramica della durata

Utilizza i criteri TTL per rimuovere automaticamente i dati inattivi dai tuoi database. Un criterio TTL indica una determinata proprietà come data di scadenza per le entità di un determinato tipo. Con il TTL, puoi ridurre i costi di archiviazione eliminando i dati obsoleti. In genere i dati vengono eliminati entro 24 ore dalla data di scadenza.

Prezzi

Le operazioni di eliminazione TTL vengono conteggiate ai fini dei costi di eliminazione delle entità. Per i prezzi delle operazioni di eliminazione, consulta Prezzi di Firestore in modalità Datastore.

Limiti e vincoli

  • Solo una proprietà per tipo può essere contrassegnata come proprietà TTL.
  • Sono consentiti in totale 200 criteri TTL.

Eliminazione TTL

Tieni presente i seguenti comportamenti chiave dell'eliminazione basata su TTL:

  • L'eliminazione tramite TTL non è un processo istantaneo. Le entità scadute continuano a essere visualizzate nelle query e nelle richieste di ricerca finché il processo TTL non le elimina effettivamente. Il TTL scambia la tempestività dell'eliminazione a vantaggio di riduzione del costo totale di proprietà per le eliminazioni. In genere i dati vengono eliminati entro 24 ore dalla data di scadenza.

  • L'eliminazione di un'entità tramite TTL non elimina il discendente di quell'entità le entità.

  • L'applicazione di un criterio TTL su un tipo esistente genera una raccolta collettiva Eliminazione di tutti i dati scaduti in base al nuovo criterio TTL. Tieni presente che anche questa eliminazione collettiva non è istantanea e dipende dalla quantità di dati esiste per quel tipo.

  • Se un'entità ha una data di scadenza passata e aggiungi un nuovo criterio TTL al tipo, l'entità verrà eliminata entro 24 ore dal completamento della configurazione del criterio TTL e dalla sua attivazione.

  • Il TTL non elimina necessariamente le entità nello stesso ordine dei relativi timestamp di scadenza.

  • Le eliminazioni non vengono eseguite a livello transazionale. Entità con la stessa scadenza non vengono necessariamente eliminati nello stesso momento. Per necessità esegui le eliminazioni utilizzando una libreria client.

  • La modalità Datastore rispetterà sempre il campo TTL più recente per determinare la scadenza. Ad esempio, se il campo TTL di un'entità scaduta, ma non ancora eliminata, viene aggiornato con una data successiva, l'entità non scadrà e verrà utilizzata la nuova data.

  • La modalità Datastore scadrà un documento solo quando è impostato il campo TTL a un tipo Timestamp. Lasciare il campo assente o essere impostato su un valore come null. consente di disabilitare le scadenze per ogni singolo documento.

  • Il TTL è progettato per ridurre al minimo l'impatto su altre attività del database. Le eliminazioni basate sul TTL vengono trattate con una priorità inferiore. Sono inoltre in atto altre strategie per attenuare i picchi di traffico dovuti alle eliminazioni basate su TTL.

Proprietà e indici TTL

Una proprietà TTL può essere indicizzata o meno. Tuttavia, poiché una proprietà TTL è un timestamp, l'indicizzazione della proprietà può influire sul rendimento a tassi di traffico più elevati. L'indicizzazione di una proprietà timestamp è contro le best practice e può creare hotspot. Gli hotspot sono percentuali di lettura, scrittura ed eliminazione elevate per una chiave stretta intervallo.

Per impostazione predefinita, Datastore crea un indice integrato per tutte le proprietà. Puoi escludere una proprietà dagli indici per disattivare gli indici in una proprietà TTL.

Autorizzazioni

L'entità che configura un criterio TTL richiede la seguente autorizzazione nel progetto:

  • Per visualizzare i criteri TTL sono necessarie le autorizzazioni datastore.indexes.list e datastore.indexes.get.
  • La modifica dei criteri TTL richiede l'autorizzazione datastore.indexes.update.
  • Il controllo dello stato delle operazioni TTL richiede datastore.operations.list e datastore.operations.get.

Per i ruoli che assegnano queste autorizzazioni, consulta Ruoli di Identity and Access Management Datastore.

Prima di iniziare

Prima di utilizzare gcloud CLI per gestire i criteri TTL, utilizza gcloud components update per aggiornare i componenti all'ultima versione disponibile:

gcloud components update

Crea un criterio TTL

Quando crei un criterio TTL, designi una proprietà dell'entità come data e ora di scadenza per le entità di un tipo. Il criterio TTL si applica al tipo specificato in per tutti gli spazi dei nomi.

TTL utilizza una proprietà specificata per identificare le entità idonee all'eliminazione. Questa proprietà TTL deve essere di tipo Date and time. Puoi selezionare una proprietà già esistente o designare una proprietà che prevedi di aggiungere in un secondo momento.

Prima di impostare il valore della proprietà TTL, considera quanto segue:

  • Il valore della proprietà TTL può essere un momento nel futuro, nel presente o nel passato. Se il valore è un'ora in passato, l'entità diventa immediatamente idonea per l'eliminazione. Ad esempio, potresti creare un criterio TTL con la proprietà expireAt, che poi aggiungi entità esistenti.

  • Se utilizzi qualsiasi altro tipo di dati o non imposti il valore della proprietà TTL, il TTL verrà disattivato per la singola entità.

Per creare un criterio TTL:

Google Cloud Console

  1. Nella console Google Cloud, vai alla pagina Database.

    Vai a Database

  2. Seleziona il database richiesto dall'elenco dei database.

  3. Nel menu di navigazione, fai clic su Tempo di vita.

  4. Fai clic su Crea criterio.

  5. Inserisci un nome di tipo e un nome di proprietà timestamp.

  6. Fai clic su Crea.

La console torna alla pagina Durata. Se l'operazione viene avviato correttamente, la pagina aggiunge una voce alla tabella dei criteri TTL. In caso di errore, nella pagina viene visualizzato un messaggio di errore.

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. Utilizza il comando firestore fields ttls update per configurare un criterio TTL. Aggiungi il flag --async per evitare che a gcloud CLI di non attendere il completamento dell'operazione.

    gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --enable-ttl
    

Anche in un database vuoto, l'attivazione di un criterio TTL può richiedere almeno dieci minuti. Dopo aver avviato un'operazione, la chiusura del terminale non annulla operativa.

Visualizzare i criteri TTL

Per visualizzare i criteri TTL e i relativi stati:

Google Cloud Console

  1. Nella console Google Cloud, vai alla pagina Database.

    Vai a Database

  2. Seleziona il database richiesto dall'elenco dei database.

  3. Nel menu di navigazione, fai clic su Durata.

La console elenca i criteri TTL per il tuo database e include i .

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. Utilizza il comando firestore fields ttls list per configurare un criterio TTL. Il seguente comando elenca tutte le norme TTL.

    gcloud firestore fields ttls list
    

    Per elencare i criteri TTL di un tipo specifico, utilizza quanto segue:

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

Visualizza i dettagli dell'operazione

Puoi utilizzare gcloud CLI per visualizzare ulteriori dettagli su un criterio TTL nello stato CREATING.

Utilizza il comando operations list per visualizzare tutte le operazioni in esecuzione e quelle completate di recente:

gcloud firestore operations list

La risposta include una stima dell'avanzamento dell'operazione.

Disattivare un criterio TTL

Per disattivare un criterio TTL, segui i passaggi riportati di seguito.

Google Cloud Console

  1. Nella console Google Cloud, vai alla pagina Database.

    Vai a Database

  2. Seleziona il database richiesto dall'elenco dei database.

  3. Nel menu di navigazione, fai clic su Tempo di vita.

  4. Nella tabella dei criteri TTL, individua la riga relativa al criterio TTL. In questa riga della tabella, fai clic sul pulsante Elimina (cestino).

  5. Conferma facendo clic su Elimina.

La console torna alla pagina Durata. Se il successo è successo, Datastore rimuove il criterio TTL dalla tabella.

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. Utilizza la firestore fields ttls update per configurare un criterio TTL. Aggiungi il flag --async per impedire alla CLI gcloud di attendere il completamento dell'operazione.

    gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
    

Monitora le eliminazioni TTL

Puoi utilizzare Cloud Monitoring per visualizzare le metriche relative alle eliminazioni basate su TTL. Datastore fornisce le seguenti metriche per il TTL:

datastore.googleapis.com/entity/ttl_deletion_count Conteggio eliminazioni TTL

Conteggio totale delle entità eliminate dai criteri TTL.

datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays Ritardi dalla scadenza TTL all'eliminazione

Tempo trascorso tra la scadenza di un'entità in base a un TTL e quando è stato effettivamente eliminato.

Per configurare una dashboard con metriche Datastore, consulta gestire dashboard personalizzate e aggiungere widget della dashboard.