Questa pagina descrive come utilizzare la Google Cloud console e Google Cloud CLI per configurare le policy di durata (TTL). Prima di leggere questa pagina, devi comprendere il modello di dati della modalità Datastore.
Panoramica della durata
Utilizza le policy TTL per rimuovere automaticamente i dati inattivi dai tuoi database. Una policy TTL designa una determinata proprietà come tempo di scadenza per le entità di un determinato tipo. Con la durata, 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 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 500 policy TTL.
Eliminazione TTL
Tieni presente i seguenti comportamenti chiave dell'eliminazione basata sulla 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 di TTL non le 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'entità tramite TTL non comporta l'eliminazione delle entità discendenti di questa entità.
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 una nuova policy TTL al tipo, l'entità verrà eliminata entro 24 ore dal completamento della configurazione e dall'attivazione della policy TTL.
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 lo stesso tempo 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 l'ultimo campo di TTL per determinare la scadenza. Ad esempio, se il campo di 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 di 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 è progettata per ridurre al minimo l'impatto sulle altre attività del database. Le eliminazioni basate sulla durata vengono trattate con una priorità inferiore. Sono in vigore anche altre strategie per attenuare i picchi di traffico dovuti alle eliminazioni basate sulla TTL.
Proprietà e indici di TTL
Una proprietà di TTL può essere indicizzata o non indicizzata. Tuttavia, poiché una proprietà di TTL è un timestamp, l'indicizzazione della proprietà può influire sul rendimento a tassi di traffico più elevati. L'indicizzazione di una proprietà timestamp è contraria alle best practice e può creare hotspot. Gli hotspot sono tassi di lettura, scrittura ed eliminazione elevati 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. - 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 Ruoli di Identity and Access Management di Datastore.
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 una proprietà dell'entità come tempo 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à di TTL deve essere di tipo Date and time. Puoi selezionare una proprietà già esistente o designare una proprietà che prevedi di aggiungere in un secondo momento.
Prima di impostare il valore della proprietà di TTL, tieni presente quanto segue:
Il valore della proprietà di durata può essere un'ora nel futuro, ora o nel 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:
Google Cloud Console
Nella Google Cloud console, vai alla pagina Database.
Seleziona il database richiesto dall'elenco dei database.
Nel menu di navigazione, fai clic su Durata.
Fai clic su Crea policy.
Inserisci un nome di tipo e un nome di proprietà 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 visualizza un messaggio di errore.
gcloud
-
Nella Google Cloud console, attiva Cloud Shell.
Nella parte inferiore della 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à inclusa e installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il
firestore fields ttls updatecomando per 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
Anche su un database vuoto, l'attivazione di una policy TTL può richiedere almeno dieci minuti. Dopo aver avviato 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 Google Cloud console, vai alla pagina Database.
Seleziona il database richiesto dall'elenco dei database.
Nel menu di navigazione, fai clic su Durata.
La Google Cloud console elenca le policy TTL per il tuo database e include lo stato di ogni policy.
gcloud
-
Nella Google Cloud console, attiva Cloud Shell.
Nella parte inferiore della 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à inclusa e installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il
firestore fields ttls listcomando per visualizzare una policy TTL. Il seguente comando elenca tutte le policy TTL.gcloud firestore fields ttls list
Per elencare le policy TTL in un tipo specifico:
gcloud firestore fields ttls list --collection-group=collection_group_name
Visualizza dettagli operazione
Puoi utilizzare gcloud CLI per visualizzare ulteriori 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 Google Cloud console, 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, individua 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 Google Cloud console torna alla pagina Durata. Se l'operazione va a buon fine, Datastore rimuove la policy TTL dalla tabella.
gcloud
-
Nella Google Cloud console, attiva Cloud Shell.
Nella parte inferiore della 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à inclusa e installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il
firestore fields ttls updatecomando per 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
Monitora le eliminazioni TTL
Puoi utilizzare Cloud Monitoring per visualizzare le metriche relative alle eliminazioni basate sulla TTL. Datastore fornisce le seguenti metriche per TTL:
| datastore.googleapis.com/entity/ttl_deletion_count | Conteggio eliminazioni TTL |
Conteggio totale delle entità eliminate dalle policy 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 una policy TTL e la sua eliminazione effettiva. |
Per configurare una dashboard con le metriche di Datastore, consulta Gestisci dashboard personalizzate e aggiungi widget della dashboard.