Questa pagina descrive come utilizzare la console di Google Cloud Platform e l'interfaccia a riga di comando di Google Cloud per configurare i criteri TTL (time-to-live). Prima di leggere questa pagina, dovresti comprendere il modello di dati di Cloud Firestore .
Panoramica time-to-live
Usa i criteri di time-to-live (TTL) per rimuovere automaticamente i dati obsoleti dai tuoi database. Un criterio TTL designa un determinato campo come data di scadenza per i documenti in un determinato gruppo di raccolta. Con TTL, puoi ridurre i costi di archiviazione eliminando i dati obsoleti. I dati vengono in genere eliminati entro 72 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
- Solo un campo per gruppo di raccolta può essere contrassegnato come campo TTL.
- Sono consentite un totale di 200 configurazioni a livello di campo. Una configurazione di campo può contenere più configurazioni per lo stesso campo. Ad esempio, un'esenzione per l'indicizzazione di un campo singolo e un criterio TTL sullo stesso campo vengono conteggiati come configurazione di un campo ai fini del limite.
Cancellazione TTL
Nota i seguenti comportamenti chiave dell'eliminazione guidata da TTL:
L'eliminazione tramite TTL non è un processo istantaneo. I documenti scaduti continuano a essere visualizzati nelle query e nelle richieste di ricerca fino a quando il processo TTL non li elimina effettivamente. TTL scambia la tempestività dell'eliminazione a vantaggio di un costo totale di proprietà ridotto per le eliminazioni. I dati vengono in genere eliminati entro 72 ore dalla data di scadenza.
L'eliminazione di un documento tramite TTL non elimina le sottoraccolte in quel documento.
L'applicazione di un criterio TTL a un gruppo di raccolta esistente comporta l'eliminazione in blocco di tutti i dati scaduti in base al nuovo criterio TTL. Tieni presente che anche questa eliminazione in blocco non è istantanea e dipende dalla quantità di dati esistenti per quel gruppo di raccolta.
TTL non elimina necessariamente i documenti nello stesso ordine dei loro 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 è necessario questo comportamento, eseguire le eliminazioni utilizzando una libreria client.
Cloud Firestore rispetterà sempre l'ultimo campo TTL per determinare la scadenza. Ad esempio, se un documento scaduto ma non ancora eliminato ha il campo TTL aggiornato a una data successiva, il documento non scadrà e verrà utilizzata la nuova data.
Cloud Firestore farà scadere un documento solo quando il campo TTL è impostato su un tipo
Timestamp
. Lasciare il campo assente o impostato su un valore comenull
consente di disabilitare le scadenze in base al documento.TTL è progettato per ridurre al minimo l'impatto su altre attività del database. Le eliminazioni guidate da TTL sono trattate con una priorità inferiore. Sono in atto anche altre strategie per appianare i picchi di traffico dovuti alle eliminazioni guidate da TTL.
L'eliminazione tramite TTL invia notifiche push per gli snapshot listener attivi e attiva i trigger di Cloud Functions Cloud Firestore.
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 velocità di traffico più elevate. L'indicizzazione di un campo timestamp può creare hotspot contrari alle migliori pratiche. Gli hotspot sono velocità di lettura, scrittura ed eliminazione elevate in un intervallo di documenti ristretto.
Per impostazione predefinita, Cloud Firestore crea un indice a campo singolo per tutti i campi. Puoi creare un'esenzione dall'indice a campo singolo per disabilitare gli indici su un campo TTL.
Autorizzazioni
L'entità che configura un criterio TTL richiede la seguente autorizzazione nel progetto:
- La visualizzazione dei criteri TTL richiede le autorizzazioni
datastore.indexes.list
edatastore.indexes.get
. - La modifica dei criteri TTL richiede l'autorizzazione
datastore.indexes.update
. - Il controllo dello stato delle operazioni TTL richiede
datastore.operations.list
edatastore.operations.get
.
Per i ruoli che assegnano queste autorizzazioni, consulta Ruoli di Cloud Firestore Identity and Access Management .
Prima di iniziare
Prima di utilizzare l'interfaccia a riga di comando di gcloud 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 si crea un criterio TTL, si designa un campo documento come data di scadenza per i documenti in un gruppo di raccolta.
TTL utilizza un campo specifico per identificare i documenti che possono essere eliminati. Questo campo TTL deve essere di tipo Date and time
. È possibile selezionare un campo già esistente oppure designare un campo che si prevede di aggiungere in seguito.
Considera quanto segue prima di impostare il valore del campo TTL:
Il valore del campo TTL può essere un momento nel futuro, ora o nel passato. Se il valore è un tempo nel passato, il documento è immediatamente idoneo per l'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 disabiliterà il TTL per il singolo documento.
Seguire i passaggi seguenti per creare un criterio TTL:
Google Cloud Console
Vai alla pagina Time-to-live di Cloud Firestore nella console di Google Cloud Platform.
Fai clic su Crea criterio .
Inserisci un nome per il gruppo di raccolta e un nome per il campo timestamp.
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, la pagina visualizza un messaggio di errore.
gcloud
Utilizza il comando firestore fields ttls update
per configurare un criterio TTL. Aggiungi il flag --async
per impedire all'interfaccia a riga di comando di gcloud di attendere il completamento dell'operazione.
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --enable-ttl
Anche su un database vuoto, possono essere necessari dieci o più minuti per abilitare un criterio TTL. Una volta avviata un'operazione, la chiusura del terminale non annulla l'operazione.
Visualizza i criteri TTL
Segui i passaggi seguenti per visualizzare i criteri TTL e i relativi stati.
Google Cloud Console
Vai alla pagina Time-to-live di Cloud Firestore nella console di Google Cloud Platform.
La console elenca i criteri TTL per il database e include lo stato di ogni criterio.
gcloud
Utilizzare 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 raccolta specifico, utilizzare quanto segue:
gcloud firestore fields ttls list --collection-group=collection_group_name
Visualizza i dettagli dell'operazione
Puoi utilizzare l'interfaccia a riga di comando di gcloud per visualizzare maggiori dettagli su un criterio TTL che si trova nello stato CREATING
.
Utilizzare il comando operations list
per visualizzare tutte le operazioni in esecuzione e completate di recente:
gcloud firestore operations list
La risposta include una stima dello stato di avanzamento dell'operazione.
Disabilita un criterio TTL
Seguire i passaggi seguenti per disabilitare un criterio TTL.
Google Cloud Console
Vai alla pagina Time-to-live di Cloud Firestore nella console di Google Cloud Platform.
Nella tabella dei criteri TTL, trova la riga per il criterio TTL. All'interno di questa riga della tabella, fai clic sul pulsante Elimina (cestino).
Conferma facendo clic su Elimina .
La console torna alla pagina Time-to-live . In caso di successo, Cloud Firestore rimuove il criterio TTL dalla tabella.
gcloud
Utilizza il comando firestore fields ttls update
per configurare un criterio TTL. Aggiungi il flag --async
per impedire all'interfaccia a riga di comando di 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 sulle eliminazioni guidate da TTL. Cloud Firestore fornisce le seguenti metriche per TTL:
Conteggio delle eliminazioni Time-to-live | Conteggio totale dei documenti eliminati dai criteri Time-to-live (TTL). |
Scadenza time-to-live per ritardi di eliminazione | Tempo trascorso tra il momento in cui un documento è scaduto in base a un criterio Time-to-live (TTL) e il momento in cui è stato effettivamente eliminato. |
Per configurare una dashboard con i parametri di Cloud Firestore, consulta gestire la dashboard personalizzata e aggiungere i widget della dashboard .