Gestire la conservazione dei dati con le norme TTL
Questa pagina descrive come utilizzare la Google Cloud console e Google Cloud CLI per configurare i criteri TTL (Time to Live).Panoramica della durata
Utilizza le policy TTL per rimuovere automaticamente i dati inattivi dai tuoi database. Un criterio TTL designa un determinato campo come la data e l'ora di scadenza dei documenti in una determinata raccolta. 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 Prezzi della versione Enterprise di Firestore.
Limiti e vincoli
- Puoi contrassegnare un solo campo per raccolta come campo TTL.
- Puoi avere un massimo di 500 configurazioni TTL a livello di campo.
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à dell'eliminazione con il vantaggio di un costo totale di proprietà ridotto per le eliminazioni. In genere i dati vengono eliminati entro 24 ore dalla data di scadenza.
L'applicazione di un criterio TTL a una raccolta 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 la raccolta.
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. I documenti con la stessa data di scadenza non vengono necessariamente eliminati contemporaneamente. Se hai bisogno di questo comportamento, esegui le eliminazioni utilizzando una libreria client.
Firestore con compatibilità MongoDB 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, viene aggiornato con una data successiva, il documento non scadrà e verrà utilizzata la nuova data.
Firestore con compatibilità MongoDB scade un documento solo quando il campo TTL è impostato su un tipo
Date and time
oBSON Date
. Lascia il campo vuoto o impostalo su un valore comenull
per disattivare le scadenze su base di 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.
Campi e indici TTL
Un campo TTL può essere indicizzato o non indicizzato. Tuttavia, poiché un campo TTL è un timestamp, l'indicizzazione del campo può influire sulle prestazioni a tassi di traffico più elevati. L'indicizzazione di un campo timestamp può creare hot spot, il che è contrario alle best practice. Gli hotspot sono caratterizzati da un elevato tasso di letture, scritture ed eliminazioni in un intervallo ristretto di documenti.
Autorizzazioni
Il principale che configura un criterio TTL richiede la seguente autorizzazione nel progetto:
- Per visualizzare i criteri TTL sono necessarie le autorizzazioni
datastore.indexes.list
edatastore.indexes.get
. - La modifica dei criteri TTL richiede l'autorizzazione
datastore.indexes.update
. - La verifica dello stato delle operazioni TTL richiede
datastore.operations.list
edatastore.operations.get
.
Per i ruoli che assegnano queste autorizzazioni, consulta la sezione Ruoli di Identity and Access Management di Firestore.
Prima di iniziare
Prima di utilizzare l'interfaccia a riga di comando gcloud per gestire i criteri TTL, utilizza il comando
gcloud components update
per aggiornare i componenti all'ultima versione disponibile:
gcloud components update
Crea una policy TTL
Quando crei un criterio TTL, designi un campo del documento come data e ora di scadenza per i documenti di una raccolta.
TTL utilizza un campo specificato per identificare i documenti idonei all'eliminazione.
Questo campo TTL deve essere di tipo Date and time
o BSON Date
. Puoi selezionare un campo già esistente o designare un campo che prevedi di aggiungere in un secondo momento.
Tieni presente quanto segue prima di impostare il valore del campo TTL:
Il valore del campo TTL può essere un'ora nel futuro, nel presente o nel passato. Se il valore è un'ora nel passato, il documento è immediatamente idoneo all'eliminazione. Ad esempio, potresti creare un criterio TTL con il campo
expireAt
, che poi aggiungi ai documenti esistenti.L'utilizzo di qualsiasi altro tipo di dati o la mancata impostazione del valore del campo TTL disattiva il TTL per il singolo documento.
Per creare un criterio TTL:
Google Cloud Console
Nella Google Cloud console, vai alla pagina Database.
Seleziona il database richiesto dall'elenco dei database.
Nel menu di navigazione, fai clic su Tempo di vita.
Fai clic su Crea criterio.
Inserisci un nome per la raccolta e un nome per il campo timestamp.
Fai clic su Crea.
La console torna alla pagina Durata. Se l'operazione inizia correttamente, la pagina aggiunge una voce alla tabella dei criteri TTL. In caso di fallimento, la pagina mostra un messaggio di errore.
gcloud
-
In the Google Cloud console, 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.
Utilizza il comando
firestore fields ttls update
per configurare un criterio TTL. Aggiungi il flag--async
per impedire all'interfaccia a riga di comando gcloud di attendere il completamento dell'operazione.gcloud firestore fields ttls update ttl_field --collection-group=collection_name --enable-ttl
Durata dell'abilitazione della policy 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.
Visualizzare le policy TTL
Per visualizzare i criteri TTL e i relativi stati:
Google Cloud Console
Nella Google Cloud console, vai alla pagina Database.
Seleziona il database richiesto dall'elenco dei database.
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
-
In the Google Cloud console, 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.
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 una raccolta specifica, utilizza quanto segue:
gcloud firestore fields ttls list --collection-group=collection_name
Visualizza i dettagli dell'operazione
Puoi utilizzare gcloud CLI per visualizzare ulteriori dettagli su un'impostazione TTL
che si trova 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 una policy TTL
Per disattivare un'impostazione TTL:
Google Cloud Console
Nella Google Cloud console, vai alla pagina Database.
Seleziona il database richiesto dall'elenco dei database.
Nel menu di navigazione, fai clic su Tempo di vita.
Nella tabella delle policy TTL, individua la riga relativa alla policy TTL. In questa riga della tabella, fai clic sul pulsante Elimina (cestino).
Conferma l'operazione facendo clic su Elimina.
La console torna alla pagina Durata. In caso di esito positivo, Firestore con compatibilità MongoDB rimuove il criterio TTL dalla tabella.
gcloud
-
In the Google Cloud console, 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.
Utilizza il comando
firestore fields ttls update
per configurare un criterio TTL. Aggiungi il flag--async
per impedire all'interfaccia a riga di comando gcloud di attendere il completamento dell'operazione.gcloud firestore fields ttls update ttl_field --collection-group=collection_name --disable-ttl
Monitorare le eliminazioni TTL
Puoi utilizzare Cloud Monitoring per visualizzare le metriche relative alle eliminazioni basate su TTL. Firestore con compatibilità MongoDB fornisce le seguenti metriche per TTL:
Tipo di metrica | Nome metrica | Descrizione della metrica |
---|---|---|
firestore.googleapis.com/document/ttl_deletion_count | Conteggio delle eliminazioni per durata |
Conteggio totale dei documenti eliminati dai criteri TTL. |
firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Ritardi di eliminazione dovuti alla scadenza del TTL |
Tempo trascorso tra la scadenza di un documento in base a un criterio TTL e il momento in cui è stato effettivamente eliminato. |
Per configurare una dashboard con le metriche di compatibilità di Firestore con MongoDB, consulta Gestire una dashboard personalizzata e Aggiungere widget della dashboard.