Gestisci la conservazione dei dati con i criteri TTL

Questa pagina descrive come utilizzare la console Google Cloud e Google Cloud CLI per configurare i criteri di durata (TTL). Prima di leggere questa pagina, dovresti comprendere il modello dei dati in modalità Datastore.

Panoramica della durata

Utilizza i criteri TTL per rimuovere automaticamente i dati inattivi dai database. Un criterio TTL designa 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

  • È possibile contrassegnare come proprietà TTL una sola proprietà per tipo.
  • 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 stabilisce la tempestività delle operazioni di eliminazione a vantaggio della 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 le entità discendenti di tale entità.

  • L'applicazione di un criterio TTL a un tipo esistente comporta l'eliminazione collettiva 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 presenti per quel tipo.

  • Se un'entità ha una data di scadenza nel passato e aggiungi un nuovo criterio TTL al tipo, l'entità verrà eliminata entro 24 ore dal completamento della configurazione del criterio TTL e da quando diventa attivo.

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

  • Le eliminazioni non vengono effettuate a livello transazionale. Le entità con la stessa data di scadenza non vengono necessariamente eliminate contemporaneamente. Se hai bisogno di questo comportamento, 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 a una data successiva, l'entità non sarà scaduta e verrà utilizzata la nuova data.

  • La modalità Datastore farà scadere un documento solo quando il campo TTL è impostato su un tipo Timestamp. Se il campo non è presente o viene impostato su un valore come null, è possibile disattivare le scadenze in base al documento.

  • Il TTL è progettato per ridurre al minimo l'impatto su altre attività del database. Le eliminazioni basate su TTL vengono trattate con una priorità più bassa. Sono state adottate altre strategie per ridurre i picchi di traffico generati dalle 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 sulle prestazioni con tariffe di traffico più elevate. L'indicizzazione di una proprietà timestamp è contro le best practice e può creare hotspot. Gli hotspot sono frequenze di lettura, scrittura ed eliminazione elevate in un intervallo di chiavi ristretto.

Per impostazione predefinita, Datastore crea un indice integrato per tutte le proprietà. Puoi escludere una proprietà dagli indici per disabilitare gli indici su 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 i criteri datastore.operations.list e datastore.operations.get.

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

Prima di iniziare

Prima di utilizzare gcloud CLI per gestire i criteri TTL, utilizza il comando 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 di scadenza per le entità di un tipo. Il criterio TTL si applica al tipo specificato in tutti gli spazi dei nomi.

Il TTL utilizza una proprietà specificata per identificare le entità idonee per l'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.

Tieni presente quanto segue prima di impostare il valore della proprietà TTL:

  • Il valore della proprietà TTL può essere una data futura, attuale o passata. Se il valore è un'ora nel passato, l'entità è immediatamente idonea per l'eliminazione. Ad esempio, potresti creare un criterio TTL con la proprietà expireAt, che poi dovrai aggiungere alle 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:

Console Google Cloud

  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.

  4. Fai clic su Crea criterio.

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

  6. Fai clic su Crea.

La console torna alla pagina Time-to-live. Se l'operazione viene avviata 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. Nella console Google Cloud, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Utilizza il comando firestore fields ttls update per configurare un criterio TTL. Aggiungi il flag --async per impedire a gcloud CLI di attendere il completamento dell'operazione.

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

Anche con un database vuoto, l'abilitazione di un criterio TTL può richiedere dieci minuti o più. Dopo aver avviato un'operazione, la chiusura del terminale non ne comporta l'annullamento.

Visualizza criteri TTL

Segui i passaggi riportati di seguito per visualizzare i criteri TTL e i relativi stati.

Console Google Cloud

  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 lo stato di ogni criterio.

gcloud

  1. Nella console Google Cloud, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Utilizza il comando firestore fields ttls list per configurare un criterio TTL. Il seguente comando elenca tutti i criteri TTL.

    gcloud firestore fields ttls list
    

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

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

Visualizza dettagli operazione

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

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

gcloud firestore operations list

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

Disattivare un criterio TTL

Segui i passaggi riportati di seguito per disattivare un criterio TTL.

Console Google Cloud

  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.

  4. Nella tabella del criterio TTL, individua la riga relativa al criterio TTL. All'interno di questa riga della tabella, fai clic sul pulsante Elimina (cestino).

  5. Conferma facendo clic su Elimina.

La console torna alla pagina Time-to-live. In caso di esito positivo, Datastore rimuove il criterio TTL dalla tabella.

gcloud

  1. Nella console Google Cloud, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Utilizza il comando firestore fields ttls update per configurare un criterio TTL. Aggiungi il flag --async per impedire a gcloud CLI 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 sulle eliminazioni basate su TTL. Datastore fornisce le seguenti metriche per TTL:

datastore.googleapis.com/entity/ttl_deletion_count Numero di eliminazioni TTL

Conteggio totale di entità eliminate dai criteri TTL.

datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays Scadenza TTL per ritardi di eliminazione

Tempo trascorso tra la scadenza di un'entità in base a un criterio TTL e la data in cui è stata effettivamente eliminata.

Per configurare una dashboard con le metriche Datastore, consulta Gestire la dashboard personalizzata e aggiungere widget della dashboard.