Pertinente solo per la versione Enterprise di Cloud Firestore. |
Questa pagina descrive come utilizzare la console Google Cloud e Google Cloud CLI per configurare le norme Time To Live (TTL).
Panoramica della durata
Utilizza le policy TTL per rimuovere automaticamente i dati inattivi dai tuoi database. Un criterio TTL designa un determinato campo come l'ora di scadenza dei documenti in una determinata raccolta. Con il 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, vedi i prezzi della versione Cloud Firestore Enterprise.
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 sul 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 una policy TTL a una raccolta esistente comporta l'eliminazione in blocco 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 la raccolta.
Se un documento ha un tempo di scadenza nel passato e aggiungi un nuovo criterio TTL alla raccolta, il documento verrà eliminato entro 24 ore dal completamento della configurazione e dall'attivazione del criterio TTL.
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 ora di scadenza non vengono necessariamente eliminati contemporaneamente. Se hai bisogno di questo comportamento, esegui le eliminazioni utilizzando una libreria client.
Cloud Firestore con compatibilità MongoDB 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 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 per ogni documento.Il TTL è progettato per ridurre al minimo l'impatto sulle altre attività del database. Le eliminazioni basate sul TTL vengono trattate con una priorità inferiore. Sono in atto anche altre strategie per attenuare i picchi di traffico dovuti alle eliminazioni basate sul 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 hotspot, il che è contrario alle best practice. Gli hotspot sono tassi elevati di lettura, scrittura ed eliminazione in un intervallo di documenti ristretto.
Autorizzazioni
Il principal che configura una policy TTL richiede la seguente autorizzazione nel progetto:
- Per visualizzare le policy TTL sono necessarie le autorizzazioni
datastore.indexes.list
edatastore.indexes.get
. - Per modificare i criteri TTL è necessaria 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, vedi Ruoli Identity and Access Management Cloud Firestore.
Prima di iniziare
Prima di utilizzare gcloud CLI per gestire le policy 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 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 Timestamp
o BSON Date
. Puoi selezionare un campo
già esistente o designare un campo che prevedi di aggiungere in un secondo momento.
Considera quanto segue prima di impostare il valore del campo TTL:
Il valore del campo TTL può essere un orario nel futuro, attuale o nel passato. Se il valore è un orario nel passato, il documento è immediatamente idoneo all'eliminazione. Ad esempio, puoi 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 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.
Nel menu di navigazione, fai clic su Time to live.
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 Time to live. Se l'operazione viene avviata correttamente, la pagina aggiunge una voce alla tabella delle norme TTL. In caso di errore, nella pagina viene visualizzato un messaggio di errore.
gcloud
Installa e inizializza la CLI gcloud CLI.
Utilizza il comando
firestore fields ttls update
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_name --enable-ttl
Durata dell'attivazione della policy TTL
Anche su un database vuoto, l'attivazione di una norma TTL può richiedere dieci minuti o più. Una volta avviata un'operazione, la chiusura del terminale non la annulla.
Visualizzare le policy TTL
Per visualizzare le norme TTL e i relativi stati:
Google Cloud Console
Nella console Google Cloud, vai alla pagina Database.
Seleziona il database richiesto dall'elenco.
Nel menu di navigazione, fai clic su Time to live.
La console elenca le norme TTL per il tuo database e include lo stato di ciascuna norma.
gcloud
Installa e inizializza la CLI gcloud CLI.
Utilizza il comando
firestore fields ttls list
per configurare una policy TTL. Il comando seguente elenca tutti i criteri TTL.gcloud firestore fields ttls list
Per elencare le norme TTL in una raccolta specifica, utilizza quanto segue:
gcloud firestore fields ttls list --collection-group=collection_name
Visualizzare i dettagli dell'operazione
Puoi utilizzare gcloud CLI per visualizzare maggiori dettagli su una norma 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 una norma TTL:
Google Cloud Console
Nella console Google Cloud, vai alla pagina Database.
Seleziona il database richiesto dall'elenco.
Nel menu di navigazione, fai clic su Time to live.
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 Time to live. In caso di esito positivo, Cloud Firestore con compatibilità MongoDB rimuove la norma TTL dalla tabella.
gcloud
Installa e inizializza la CLI gcloud CLI.
Utilizza il comando
firestore fields ttls update
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_name --disable-ttl
Monitorare le eliminazioni TTL
Puoi utilizzare Cloud Monitoring per visualizzare le metriche relative alle eliminazioni basate sul TTL. Cloud Firestore con compatibilità MongoDB fornisce le seguenti metriche per il TTL:
Tipo di metrica | Nome metrica | Descrizione metrica |
---|---|---|
firestore.googleapis.com/document/ttl_deletion_count | Conteggio eliminazioni in base alla durata |
Il conteggio totale dei documenti eliminati dai criteri TTL. |
firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Scadenza del time-to-live per i ritardi di eliminazione |
Tempo trascorso tra la scadenza di un documento in base a un criterio TTL e la sua effettiva eliminazione. |
Per configurare una dashboard con le metriche di Cloud Firestore con compatibilità MongoDB, consulta Gestisci dashboard personalizzate e Aggiungi widget alla dashboard.