Questa pagina descrive come utilizzare la console Google Cloud e Google Cloud CLI per configurare le policy Time To Live (TTL). Prima di leggere questa pagina, devi comprendere il modello di dati della modalità Datastore.
Panoramica del TTL
Utilizza le policy TTL per rimuovere automaticamente i dati inattivi dai tuoi database. Un criterio TTL designa una determinata proprietà come ora di scadenza per le entità di 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
Il numero di operazioni di eliminazione TTL viene conteggiato ai fini dei costi di eliminazione delle entità. Per i prezzi delle operazioni di eliminazione, consulta Prezzi di Firestore in modalità Datastore.
Limiti e vincoli
- Puoi contrassegnare una sola proprietà per tipo come proprietà TTL.
- Puoi avere un massimo di 1000 criteri TTL.
Eliminazione TTL
Tieni presente i seguenti comportamenti chiave dell'eliminazione basata sul 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. L'eliminazione TTL privilegia la tempestività dell'eliminazione 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 il TTL non comporta l'eliminazione delle entità discendenti.
L'applicazione di una policy TTL a un tipo 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 quel tipo.
Se un'entità ha un tempo di scadenza nel passato e aggiungi un nuovo criterio TTL al tipo, l'entità verrà eliminata entro 24 ore dalla fine della configurazione e dall'attivazione del criterio TTL.
Il TTL non elimina necessariamente le entità nello stesso ordine dei relativi timestamp di scadenza.
Le eliminazioni non vengono eseguite in modo transazionale. Le entità con la stessa ora di scadenza non vengono necessariamente eliminate contemporaneamente. Se hai bisogno di questo comportamento, esegui le eliminazioni utilizzando una libreria client.
La modalità Datastore rispetterà sempre il campo TTL più recente per determinare la scadenza. Ad esempio, se il campo TTL di un'entità scaduta ma non ancora eliminata viene aggiornato a una data successiva, l'entità non scadrà e verrà utilizzata la nuova data.
La modalità Datastore farà scadere un documento solo quando il campo TTL è impostato su un tipo
Timestamp. 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 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.
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 a tassi di traffico più elevati. L'indicizzazione di una proprietà timestamp non è una best practice e può creare hotspot. Gli hotspot sono tassi elevati di lettura, scrittura ed eliminazione in 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 una policy TTL richiede la seguente autorizzazione nel progetto:
- Per visualizzare le policy TTL sono necessarie le autorizzazioni
datastore.indexes.listedatastore.indexes.get. - La modifica dei criteri TTL richiede l'autorizzazione
datastore.indexes.update. - Il controllo dello stato delle operazioni TTL richiede
datastore.operations.listedatastore.operations.get.
Per i ruoli che assegnano queste autorizzazioni, consulta Ruoli Identity and Access Management di Datastore.
Crea una policy TTL
Quando crei un criterio TTL, designi una proprietà dell'entità come ora di scadenza per le entità di un tipo. La policy TTL si applica al tipo specificato in tutti gli spazi dei nomi.
TTL utilizza una proprietà specificata per identificare le entità idonee all'eliminazione. Questa proprietà TTL deve essere di tipo Date and time. Puoi selezionare una proprietà già esistente
o designarne una che prevedi di aggiungere in un secondo momento.
Prima di impostare il valore della proprietà TTL, tieni presente quanto segue:
Il valore della proprietà TTL può essere un orario futuro, attuale o passato. Se il valore è un'ora nel passato, l'entità è immediatamente idonea all'eliminazione. Ad esempio, puoi creare una policy 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 una policy 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 Time to live.
Fai clic su Crea criterio.
Inserisci un nome di tipo e un nome di proprietà timestamp.
(Facoltativo) Configura un offset di scadenza. Inserisci un valore e seleziona un'unità (giorni, ore, minuti o secondi). Per impostazione predefinita, l'offset è 0.
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, la pagina mostra un messaggio di errore.
gcloud
-
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud 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à installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il comando
firestore fields ttls updateper configurare una policy TTL. Aggiungi il flag--asyncper impedire a gcloud CLI di attendere il completamento dell'operazione.gcloud firestore fields ttls update \ ttl_field \ --collection-group=collection_group_name \ --enable-ttl
Per attivare il TTL con un offset di scadenza, aggiungi il flag
--expiration-offset:gcloud firestore fields ttls update \ ttl_field \ --collection-group=collection_group_name \ --enable-ttl \ --expiration-offset=expiration_offset
Sostituisci expiration_offset con una durata, ad esempio
7dper 7 giorni o24hper 24 ore. Se ometti questo flag, l'offset di scadenza è 0 per impostazione predefinita.
L'abilitazione di una policy TTL può richiedere un minimo di 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:
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 Time to live.
La console Google Cloud elenca le norme TTL per il tuo database e include lo stato di ogni norma.
gcloud
-
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud 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à installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il comando
firestore fields ttls listper visualizzare una policy TTL. Il comando seguente elenca tutte le policy TTL.gcloud firestore fields ttls list
Per elencare le norme TTL in base a un tipo specifico, utilizza quanto segue:
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
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:
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 Time to live.
Nella tabella delle policy TTL, individua la riga della policy TTL. All'interno di questa riga della tabella, fai clic sul pulsante Elimina (cestino).
Conferma facendo clic su Elimina.
La console Google Cloud torna alla pagina Time to live. In caso di esito positivo, Datastore rimuove la policy TTL dalla tabella.
gcloud
-
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud 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à installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il comando
firestore fields ttls updateper configurare una policy TTL. Aggiungi il flag--asyncper impedire a gcloud CLI di attendere il completamento dell'operazione.gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
Monitorare le eliminazioni TTL
Puoi utilizzare Cloud Monitoring per visualizzare le metriche relative alle eliminazioni basate sul TTL. Datastore fornisce le seguenti metriche per il TTL:
| datastore.googleapis.com/entity/ttl_deletion_count | Conteggio eliminazioni TTL |
Il conteggio totale delle entità eliminate dalle norme TTL. |
| datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays | Scadenza TTL ai ritardi di eliminazione |
Tempo trascorso tra la scadenza di un'entità in base a un criterio TTL e la sua effettiva eliminazione. |
Per configurare una dashboard con le metriche Datastore, consulta Gestisci dashboard personalizzate e Aggiungi widget alla dashboard.