Questa pagina descrive come utilizzare la console Google Cloud e Google Cloud CLI per configurare le policy di durata (TTL). Prima di leggere questa pagina, devi comprendere il Cloud Firestore modello di dati.
Panoramica della durata
Utilizza le policy TTL per rimuovere automaticamente i dati inattivi dai tuoi database. Una policy TTL designa un determinato campo come tempo di scadenza per i documenti in 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
- Puoi contrassegnare un solo campo per gruppo di raccolte come campo TTL.
- È consentito un massimo di 500 configurazioni a livello di campo. Una configurazione di campo può contenere più configurazioni per lo stesso campo. Ad esempio, un'esenzione dall'indicizzazione a campo singolo e una policy TTL sullo stesso campo vengono conteggiate come una configurazione di campo ai fini del limite.
- Per i clienti di Firestore in modalità Datastore, TTL non può essere utilizzato con una modalità di concorrenza di tipo Ottimistica con gruppi di entità. Valuta la possibilità di modificare la modalità di concorrenza in modalità di concorrenza ottimistica.
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 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 documento tramite TTL non comporta l'eliminazione delle sottoraccolte del documento.
L'applicazione di una policy TTL a un gruppo di raccolte esistente comporta l'eliminazione collettiva di tutti i dati scaduti in base alla nuova policy TTL. Tieni presente che anche questa eliminazione collettiva non è istantanea e dipende dalla quantità di dati esistenti per il gruppo di raccolte.
Se un documento ha un tempo di scadenza nel passato e aggiungi una nuova policy TTL alla raccolta, il documento verrà eliminato entro 24 ore dal completamento della configurazione e dall'attivazione della policy TTL.
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 lo stesso tempo di scadenza non vengono necessariamente eliminati contemporaneamente. Se hai bisogno di questo comportamento, esegui le eliminazioni utilizzando una libreria client.
Cloud Firestore rispetterà sempre l'ultimo campo TTL per determinare la scadenza. Ad esempio, se il campo TTL di un documento scaduto ma non ancora eliminato viene aggiornato a una data successiva, il documento non scadrà e verrà utilizzata la nuova data.
Cloud Firestore fa scadere un documento solo quando il campo TTL è impostato su tipi di valori specifici. Per i database Standard Edition, il campo deve essere impostato su un valore
Date and time. Per i database Enterprise Edition, il campo deve essere impostato su un valoreDate and timeo su un valoreArraycontenente un valoreDate and time. Se il campo non è presente o è impostato su un valore comenull, le scadenze possono essere disattivate per ogni documento.TTL è progettato per ridurre al minimo l'impatto sulle altre attività del database. Le eliminazioni basate su TTL vengono trattate con una priorità inferiore. Sono in vigore anche altre strategie per attenuare i picchi di traffico dovuti alle eliminazioni basate su TTL.
L'eliminazione tramite TTL chiama tutti i listener snapshot attivi e attiva i trigger 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, il che non è una best practice. Gli hotspot sono velocità di lettura, scrittura ed eliminazione elevate in un intervallo di documenti ristretto.
Per impostazione predefinita, Cloud Firestore Standard Edition crea un indice a campo singolo per tutti i campi. Puoi creare un'esenzione dall'indice a campo singolo per disattivare gli indici in un campo TTL.
Autorizzazioni
L'entità che configura una policy TTL richiede la seguente autorizzazione nel progetto:
- Per visualizzare le policy TTL sono necessarie le autorizzazioni
datastore.indexes.listedatastore.indexes.get. - Per modificare le policy TTL è necessaria l'autorizzazione
datastore.indexes.update. - Per controllare lo stato delle operazioni TTL sono necessarie le autorizzazioni
datastore.operations.listedatastore.operations.get.
Per i ruoli che assegnano queste autorizzazioni, consulta Cloud Firestore Ruoli di Identity and Access Management.
Prima di iniziare
Prima di utilizzare gcloud CLI per gestire le policy TTL, utilizza il
gcloud components update
comando per aggiornare i componenti all'ultima versione disponibile:
gcloud components update
Crea una policy TTL
Quando crei una policy TTL, designi un campo del documento come tempo di scadenza per i documenti in un gruppo di raccolte.
TTL utilizza un campo specificato per identificare i documenti idonei all'eliminazione.
Per i database Standard Edition, il campo TTL deve essere impostato su un valore Date and time.
Per i database Enterprise Edition, deve essere impostato su un valore Date and time o su un valore Array contenente un valore 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, tieni presente quanto segue:
Il valore del campo TTL può essere un'ora futura, attuale o passata. Se il valore è un'ora passata, il documento è immediatamente idoneo all'eliminazione. Ad esempio, puoi creare una policy 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 disattiverà il TTL per il singolo documento.
Per creare una policy TTL:
Google Cloud Console
Nella console Google Cloud, vai alla pagina Database.
Seleziona il database richiesto dall'elenco dei database.
Nel menu di navigazione, fai clic su Durata.
Fai clic su Crea criterio.
Inserisci un nome del gruppo di raccolte e un nome del campo timestamp.
Fai clic su Crea.
La console torna alla pagina Durata. Se l'operazione viene avviata correttamente, la pagina aggiunge una voce alla tabella delle policy TTL. In caso di errore, la pagina mostra un messaggio di errore.
gcloud
Utilizza il firestore fields ttls
update
comando per configurare una policy TTL. Aggiungi il --async flag 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 della policy TTL
Anche su un database vuoto, l'attivazione di una policy TTL può richiedere almeno dieci minuti. Una volta avviata un'operazione, la chiusura del terminale non la annulla.
Visualizza le policy TTL
Per visualizzare le policy TTL e i relativi stati:
Google Cloud Console
Nella console Google Cloud, vai alla pagina Database.
Seleziona il database richiesto dall'elenco dei database.
Nel menu di navigazione, fai clic su Durata.
La console elenca le policy TTL per il tuo database e include lo stato di ogni policy.
gcloud
Utilizza il
firestore fields ttls list
comando per configurare una policy TTL. Il seguente comando elenca tutte le policy TTL
policy.
gcloud firestore fields ttls list
Per elencare le policy TTL in un gruppo di raccolte specifico:
gcloud firestore fields ttls list --collection-group=collection_group_name
Visualizza dettagli operazione
Puoi utilizzare gcloud CLI per visualizzare maggiori dettagli su una policy TTL 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.
Disattiva una policy TTL
Per disattivare una policy TTL:
Google Cloud Console
Nella console Google Cloud, vai alla pagina Database.
Seleziona il database richiesto dall'elenco dei database.
Nel menu di navigazione, fai clic su Durata.
Nella tabella delle policy TTL, trova la riga della policy TTL. All'interno di questa riga della tabella, fai clic sul pulsante Elimina (cestino).
Fai clic su Elimina per confermare.
La console torna alla pagina Durata. Se l'operazione va a buon fine, Cloud Firestore rimuove la policy TTL dalla tabella.
gcloud
1. Utilizza il
firestore fields ttls update
comando per configurare una policy 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 TTL:
| Tipo di metrica | Nome metrica | Descrizione metrica |
|---|---|---|
| firestore.googleapis.com/document/ttl_deletion_count | Conteggio eliminazioni durata |
Conteggio totale dei documenti eliminati dalle policy TTL. |
| firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Ritardi tra scadenza e eliminazione della durata |
Tempo trascorso tra la scadenza di un documento in base a una policy TTL e la sua eliminazione effettiva. |
Per configurare una dashboard con le metriche Cloud Firestore, consulta Gestisci dashboard personalizzate e Aggiungi widget alla dashboard.