Gestire 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, devi comprendere il modello dei dati di Firestore.

Panoramica della durata

Utilizza i criteri TTL per rimuovere automaticamente i dati inattivi dai database. Un criterio TTL designa un determinato campo come ora di scadenza per i documenti in un determinato gruppo di raccolte. Con il TTL, puoi ridurre i costi di archiviazione eliminando i dati obsoleti. I dati vengono in genere eliminati entro 24 ore dalla data di scadenza.

Prezzi

Le operazioni di eliminazione TTL vengono conteggiate ai fini dei costi di eliminazione dei documenti. Per i prezzi delle operazioni di eliminazione, consulta i prezzi di Firestore.

Limiti e vincoli

  • È possibile contrassegnare come campo TTL un solo campo per gruppo di raccolte.
  • Sono consentite in totale 200 configurazioni a livello di campo. La configurazione di un campo può contenere più configurazioni per lo stesso campo. Ad esempio, un'esenzione dell'indicizzazione a campo singolo e un criterio TTL nello stesso campo vengono conteggiati come una configurazione di campo per il limite.
  • Per i clienti di Firestore in modalità Datastore, il TTL non può essere utilizzato con una modalità di contemporaneità ottimizzata con gruppi di entità. Valuta la possibilità di passare alla modalità di contemporaneità ottimale.

Eliminazione TTL

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

  • L'eliminazione tramite TTL non è un processo istantaneo. I documenti scaduti continuano a essere visualizzati nelle query e nelle richieste di ricerca finché il processo TTL non li elimina effettivamente. TTL scambia la tempestività di eliminazione a vantaggio di una 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 documento tramite TTL non elimina le sottoraccolte al di sotto di quel documento.

  • L'applicazione di un criterio TTL a un gruppo di raccolte 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 esistenti per quel gruppo di raccolte.

  • Se la data di scadenza di un documento è passata e aggiungi un nuovo criterio TTL alla raccolta, il documento verrà eliminato entro 24 ore dal termine della configurazione del criterio TTL e diventerà attivo.

  • Il TTL non elimina necessariamente i documenti nello stesso ordine dei relativi timestamp di scadenza.

  • Le eliminazioni non vengono effettuate a livello transazionale. I documenti con la stessa ora di scadenza non vengono necessariamente eliminati contemporaneamente. Se hai bisogno di questo comportamento, esegui le eliminazioni utilizzando una libreria client.

  • Firestore rispetterà sempre il campo TTL più recente per determinare la scadenza. Ad esempio, se il campo TTL di un documento scaduto ma non ancora eliminato è stato aggiornato a una data successiva, il documento non sarà scaduto e verrà utilizzata la nuova data.

  • Il TTL è progettato per ridurre al minimo l'impatto su altre attività del database. Le eliminazioni basate sul TTL vengono trattate con una priorità più bassa. Sono state adottate anche altre strategie per compensare i picchi di traffico delle eliminazioni basate su TTL.

  • L'eliminazione tramite TTL chiama tutti i listener di snapshot attivi e attiva i trigger di Cloud Functions Firestore.

Campi e indici TTL

Un campo TTL può essere indicizzato o meno. Tuttavia, poiché un campo TTL è un timestamp, l'indicizzazione del campo può influire sulle prestazioni con frequenze di traffico più elevate. L'indicizzazione di un campo timestamp può creare hotspot in contrasto con le best practice. Gli hotspot sono percentuali elevate di lettura, scrittura ed eliminazione in un intervallo di documenti ristretto.

Per impostazione predefinita, Firestore crea un indice a campo singolo per tutti i campi. Puoi creare un'esenzione per l'indice a campo singolo per disabilitare gli indici in un campo 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.
  • Per controllare lo stato delle operazioni TTL sono necessari datastore.operations.list e datastore.operations.get.

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

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 un campo documento come data di scadenza dei documenti di un gruppo di raccolte.

Il TTL utilizza un campo specificato per identificare i documenti idonei per l'eliminazione. Questo campo TTL deve essere di tipo Date and time. Puoi selezionare un campo già esistente o designare un campo che prevedi di aggiungere in un secondo momento.

Prima di impostare il valore del campo TTL, considera quanto segue:

  • Il valore del campo TTL può essere una data e un'ora nel futuro, adesso o nel passato. Se il valore è una data/ora nel passato, il documento è immediatamente idoneo per l'eliminazione. Ad esempio, potresti creare un criterio TTL con il campo expireAt, da aggiungere ai documenti esistenti.

  • Se utilizzi qualsiasi altro tipo di dati o non imposti il valore del campo TTL, questo disattiverà per il singolo documento.

Per creare un criterio TTL, segui questi passaggi:

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 per il gruppo di raccolte e un nome per il campo del timestamp.

  6. Fai clic su Crea.

La console torna alla pagina Durata. 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 evitare che gcloud CLI di attendere il completamento dell'operazione.

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

Durata di abilitazione dei criteri TTL

Anche se il 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 i criteri TTL

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 gruppo di raccolte specifico, utilizza quanto segue:

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

View operation details

You can use the gcloud CLI to view more details about a TTL policy that is in the CREATING state.

Use the operations list command to see all running and recently completed operations:

gcloud firestore operations list

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

Disattivare un criterio TTL

Per disattivare un criterio TTL, segui questi passaggi:

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 l'operazione facendo clic su Elimina.

La console torna alla pagina Durata. Se l'operazione riesce, Firestore 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 evitare che gcloud CLI di attendere il completamento dell'operazione.

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

Monitora eliminazioni TTL

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

Tipo di metrica Nome metrica Descrizione della metrica
firestore.googleapis.com/document/ttl_deletion_count Conteggio delle eliminazioni in tempo reale

Conteggio totale di documenti eliminati dai criteri TTL.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Scadenza della durata per i ritardi per l'eliminazione

Tempo trascorso tra la scadenza di un documento ai sensi di un criterio TTL e l'effettiva eliminazione.

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