In questa pagina viene descritto come utilizzare la console Google Cloud e lGoogle Cloud CLI per configurare i criteri di durata (TTL). Prima di leggere questa pagina, devi comprendere il modello dei dati in modalità Datastore.
Panoramica della durata
Utilizza i criteri TTL per rimuovere automaticamente i dati inattivi dai tuoi database. Un criterio TTL designa una determinata proprietà come data di scadenza per le entità in un determinato tipo. 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 per i costi di eliminazione delle entità. Per i prezzi delle operazioni di eliminazione, vedi Prezzi di Firestore in modalità Datastore.
Limiti e vincoli
- È possibile contrassegnare come proprietà TTL una sola proprietà per tipo.
- Sono consentiti un totale di 200 criteri TTL.
Eliminazione TTL
Tieni presente i seguenti comportamenti chiave dell'eliminazione basata su TTL:
L'eliminazione tramite TTL non è un processo istantaneo. Le entità scadute continuano a essere visualizzate nelle query e nelle richieste di ricerca finché il processo TTL non le elimina effettivamente. TTL permuta la tempestività delle eliminazioni a 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'eliminazione di un'entità tramite TTL non elimina le entità discendenti di tale entità.
L'applicazione di un criterio TTL a un tipo esistente determina l'eliminazione collettiva di tutti i dati scaduti in base al nuovo criterio TTL. Tieni presente che l'eliminazione collettiva non è istantanea e dipende dalla quantità di dati esistente per quel tipo.
Se un'entità ha una data di scadenza nel passato e aggiungi un nuovo criterio ttl al tipo, l'entità verrà eliminata entro 24 ore dal completamento della configurazione del criterio ttl e diventerà attiva.
TTL non elimina necessariamente le entità nello stesso ordine dei timestamp di scadenza.
Le eliminazioni non vengono effettuate a livello di transazione. Le entità con la stessa data di scadenza non vengono necessariamente eliminate contemporaneamente. Se questo comportamento è obbligatorio, esegui le eliminazioni utilizzando una libreria client.
La modalità Datastore rispetta sempre il campo TTL più recente per determinare la scadenza. Ad esempio, se un'entità scaduta ma non ancora eliminata ha un campo TTL aggiornato in una data successiva, l'entità non sarà scaduta e verrà utilizzata la nuova data.
La modalità Datastore scadrà un documento solo quando il campo TTL è impostato su un tipo
Timestamp
. Se lasci il campo assente o imposti un valore comenull
, le scadenze vengono disattivate in base al documento.Il TTL è progettato per ridurre al minimo l'impatto su altre attività del database. Le eliminazioni eseguite da TTL vengono trattate con una priorità inferiore. Sono inoltre in atto altre strategie per ridurre i picchi di traffico dovuti alle eliminazioni basate su TTL.
Proprietà e indici TTL
Una proprietà TTL può essere indicizzata o non indicizzata. Tuttavia, poiché una proprietà TTL è un timestamp, l'indicizzazione della proprietà può influire sul rendimento alle frequenze di traffico più elevate. L'indicizzazione di una proprietà del timestamp è una best practice e può creare hotspot. Gli hotspot hanno frequenze di lettura, scrittura ed eliminazione elevate per un intervallo di chiavi ristretto.
Per impostazione predefinita, Datastore crea un indice integrato per tutte le proprietà. Puoi escludere una proprietà dagli indici per disattivare gli indici su una proprietà TTL.
Autorizzazioni
L'entità 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
. - Il controllo dello stato delle operazioni TTL richiede
datastore.operations.list
edatastore.operations.get
.
Per i ruoli che assegnano queste autorizzazioni, vedi Ruoli di Identity and Access Management per Datastore.
Prima di iniziare
Prima di utilizzare l'interfaccia alla gcloud CLI per gestire i criteri TTL, utilizzate il comando gcloud components update
per aggiornare i componenti all'ultima versione disponibile:
gcloud components update
Crea un criterio TTL
Quando crei un criterio TTL, designi una proprietà dell'entità come data di scadenza per le entità in un tipo. Il criterio TTL si applica al tipo specificato in tutti gli spazi dei nomi.
TTL utilizza una proprietà specificata per identificare le entità idonee per l'eliminazione. Questa proprietà TTL deve essere di tipo Date and time
. Puoi selezionare una proprietà già esistente
o scegliere una proprietà che prevedi di aggiungere in seguito.
Prima di impostare il valore della proprietà TTL, tieni presente quanto segue:
Il valore della proprietà TTL può essere un'ora nel futuro, ora o nel passato. Se il valore è un tempo passato, l'entità è immediatamente idonea per l'eliminazione. Ad esempio, potresti creare un criterio TTL con la proprietà
expireAt
, che poi aggiungi alle entità esistenti.L'utilizzo di qualsiasi altro tipo di dati o la mancata impostazione del valore della proprietà TTL disattiverà il TTL per la singola entità.
Per creare un criterio TTL, segui questi passaggi:
Console Google Cloud
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 per il tipo e il nome di una proprietà 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 errore, la pagina mostra un messaggio di errore.
gcloud
-
In Google Cloud Console, attiva Cloud Shell.
Nella parte inferiore di Google Cloud Console, viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il comando
firestore fields ttls update
per configurare un criterio TTL. Aggiungi il flag--async
per impedire all'interfaccia alla gcloud CLI di attendere il completamento dell'operazione.gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --enable-ttl
Anche in un database vuoto, l'attivazione di un criterio TTL può richiedere almeno dieci minuti. Dopo aver avviato un'operazione, la chiusura del terminale non annulla l'operazione.
Visualizza criteri TTL
Segui questi passaggi per visualizzare i criteri TTL e i relativi stati.
Console Google Cloud
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 console sono elencati i criteri TTL per il tuo database e include lo stato di ciascun criterio.
gcloud
-
In Google Cloud Console, attiva Cloud Shell.
Nella parte inferiore di Google Cloud Console, viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
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 un tipo specifico, utilizza quanto segue:
gcloud firestore fields ttls list --collection-group=collection_group_name
Visualizzare i dettagli dell'operazione
Puoi utilizzare l'interfaccia alla gcloud CLI per visualizzare maggiori dettagli su un criterio TTL nello stato CREATING
.
Utilizza il comando operations list
per visualizzare tutte le operazioni in esecuzione e completate di recente:
gcloud firestore operations list
La risposta include una stima dell'avanzamento dell'operazione.
Disabilitazione di un criterio TTL
Segui i passaggi riportati di seguito per disattivare un criterio TTL.
Console Google Cloud
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 dei criteri TTL, individua la riga relativa al 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 Durata. In caso di esito positivo, Datastore rimuove il criterio TTL dalla tabella.
gcloud
-
In Google Cloud Console, attiva Cloud Shell.
Nella parte inferiore di Google Cloud Console, viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il comando
firestore fields ttls update
per configurare un criterio TTL. Aggiungi il flag--async
per impedire all'interfaccia alla 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 sulle eliminazioni basate su TTL. Datastore fornisce le seguenti metriche per TTL:
datastore.googleapis.com/entity/ttl_deletion_count | Numero di eliminazione TTL |
Conteggio totale delle entità eliminate dai criteri TTL. |
datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays | Scadenza TTL ai ritardi nell'eliminazione |
Tempo trascorso tra la scadenza di un'entità ai sensi di un criterio TTL e la sua effettiva eliminazione. |
Per configurare una dashboard con metriche Datastore, consulta la pagina Gestire le dashboard personalizzate e Aggiungere widget delle dashboard.