Gestire la conservazione dei dati con i criteri 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, dovresti conoscere Modello dei dati Cloud Firestore.

Panoramica della durata

Utilizza i criteri TTL per rimuovere automaticamente i dati inattivi dai tuoi database. Un criterio TTL designa un determinato campo come la scadenza dei documenti di un determinato gruppo di raccolte. Con 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 dei documenti. Per i prezzi delle operazioni di eliminazione, consulta i prezzi di Cloud 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. Una configurazione di 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 la configurazione di un campo per raggiungere il limite.
  • Per i clienti di Firestore in modalità Datastore, il TTL non può essere utilizzato con una modalità di contemporaneità di Ottimista con i gruppi di entità. Valuta la possibilità di impostare la modalità di concorrenza ottimistica.

Eliminazione TTL

Nota 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. 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 documento tramite TTL non comporta l'eliminazione delle sottoraccolte al suo interno.

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

  • Se un documento ha una data di scadenza passata e aggiungi un nuovo criterio TTL alla raccolta, il documento verrà eliminato entro 24 ore dal completamento della configurazione del criterio TTL e dalla sua attivazione.

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

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

  • Cloud Firestore rispetta sempre il campo TTL più recente per determinare il la scadenza del periodo di conservazione. Ad esempio, se un documento scaduto ma non ancora eliminato presenta la sua campo TTL 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à inferiore. Altre strategie sono per attenuare i picchi di traffico causati dalle eliminazioni basate su TTL.

  • Eliminazione tramite chiamate TTL tutte attive listener e trigger di snapshot Cloud Functions Cloud Firestore attivatori.

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, che vanno contro le best practice. Gli hotspot sono caratterizzati da un elevato tasso di letture, scritture ed eliminazioni in un intervallo ristretto di documenti.

Per impostazione predefinita, Cloud Firestore crea un indice a campo singolo per tutti i campi. Puoi creare un'esenzione dell'indice a campo singolo per disattivare gli indici in un campo TTL.

Autorizzazioni

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

  • La visualizzazione dei criteri TTL richiede datastore.indexes.list e datastore.indexes.get autorizzazioni.
  • 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, vedi Cloud Firestore Ruoli di Identity and Access Management.

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 un campo del documento come data e ora di scadenza per i 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 esiste già o puoi 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 un'ora nel futuro, nel presente o nel passato. Se il valore è un'ora In passato, il documento risultava immediatamente idoneo per l'eliminazione. Ad esempio, potrebbe creare un criterio TTL con il campo expireAt, che in seguito aggiungerai documenti esistenti.

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

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 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 avviato correttamente, la pagina aggiunge una voce alla tabella dei criteri TTL. In caso di fallimento, nella pagina viene visualizzato un messaggio di errore.

gcloud

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 

Durata dell'attivazione del criterio TTL

Anche in un database vuoto, l'attivazione di un criterio TTL può richiedere almeno dieci minuti. Una volta avviata un'operazione, la chiusura del terminale non la annulla.

Visualizza criteri TTL

Per visualizzare i criteri TTL e il relativo stato:

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.

La console elenca i criteri TTL per il database e include lo stato di ciascun criterio.

gcloud

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

   gcloud firestore fields ttls list
   

Per elencare i criteri TTL all'interno di un gruppo di raccolte 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 vedere tutti i file in esecuzione operazioni completate di recente:

gcloud firestore operations list

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

Disabilita un criterio TTL

Per disattivare 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. 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. In caso di esito positivo, Cloud Firestore rimuove il criterio TTL dalla tabella.

gcloud

1. 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 relative alle eliminazioni basate su TTL. Cloud Firestore fornisce le seguenti metriche per il TTL:

Tipo di metrica Nome metrica Descrizione metrica
firestore.googleapis.com/document/ttl_deletion_count Conteggio delle eliminazioni per Durata (TTL)

Conteggio totale dei documenti eliminati dai criteri TTL.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Ritardi dall'eliminazione alla scadenza del TTL

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

Per configurare una dashboard con le metriche di Cloud Firestore, consulta gestire dashboard personalizzate e aggiungi widget alla dashboard.