Firebase 将于 5 月 10 日重返 Google I/O 大会!立即报名

Gestisci la conservazione dei dati con le politiche TTL

Questa pagina descrive come utilizzare la console di Google Cloud Platform e l'interfaccia a riga di comando di Google Cloud per configurare i criteri TTL (time-to-live). Prima di leggere questa pagina, dovresti comprendere il modello di dati di Cloud Firestore .

Panoramica time-to-live

Usa i criteri di time-to-live (TTL) per rimuovere automaticamente i dati obsoleti dai tuoi database. Un criterio TTL designa un determinato campo come data di scadenza per i documenti in un determinato gruppo di raccolta. Con TTL, puoi ridurre i costi di archiviazione eliminando i dati obsoleti. I dati vengono in genere eliminati entro 72 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

  • Solo un campo per gruppo di raccolta può essere contrassegnato come campo TTL.
  • Sono consentite un totale di 200 configurazioni a livello di campo. Una configurazione di campo può contenere più configurazioni per lo stesso campo. Ad esempio, un'esenzione per l'indicizzazione di un campo singolo e un criterio TTL sullo stesso campo vengono conteggiati come configurazione di un campo ai fini del limite.

Cancellazione TTL

Nota i seguenti comportamenti chiave dell'eliminazione guidata da TTL:

  • L'eliminazione tramite TTL non è un processo istantaneo. I documenti scaduti continuano a essere visualizzati nelle query e nelle richieste di ricerca fino a quando il processo TTL non li elimina effettivamente. TTL scambia la tempestività dell'eliminazione a vantaggio di un costo totale di proprietà ridotto per le eliminazioni. I dati vengono in genere eliminati entro 72 ore dalla data di scadenza.

  • L'eliminazione di un documento tramite TTL non elimina le sottoraccolte in quel documento.

  • L'applicazione di un criterio TTL a un gruppo di raccolta esistente comporta l'eliminazione in blocco di tutti i dati scaduti in base al nuovo criterio TTL. Tieni presente che anche questa eliminazione in blocco non è istantanea e dipende dalla quantità di dati esistenti per quel gruppo di raccolta.

  • TTL non elimina necessariamente i documenti nello stesso ordine dei loro timestamp di scadenza.

  • Le eliminazioni non vengono eseguite in modo transazionale. I documenti con la stessa data di scadenza non vengono necessariamente eliminati contemporaneamente. Se è necessario questo comportamento, eseguire le eliminazioni utilizzando una libreria client.

  • Cloud Firestore 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 farà scadere un documento solo quando il campo TTL è impostato su un tipo Timestamp . Lasciare il campo assente o impostato su un valore come null consente di disabilitare le scadenze in base al documento.

  • TTL è progettato per ridurre al minimo l'impatto su altre attività del database. Le eliminazioni guidate da TTL sono trattate con una priorità inferiore. Sono in atto anche altre strategie per appianare i picchi di traffico dovuti alle eliminazioni guidate da TTL.

  • L'eliminazione tramite TTL invia notifiche push per gli snapshot listener attivi e attiva i trigger di 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 contrari alle migliori pratiche. Gli hotspot sono velocità di lettura, scrittura ed eliminazione elevate in un intervallo di documenti ristretto.

Per impostazione predefinita, Cloud Firestore crea un indice a campo singolo per tutti i campi. Puoi creare un'esenzione dall'indice a campo singolo per disabilitare gli indici su un campo TTL.

Autorizzazioni

L'entità che configura un criterio TTL richiede la seguente autorizzazione nel progetto:

  • La visualizzazione dei criteri TTL richiede le autorizzazioni datastore.indexes.list e datastore.indexes.get .
  • La modifica dei criteri TTL richiede l'autorizzazione datastore.indexes.update .
  • Il controllo dello stato delle operazioni TTL richiede datastore.operations.list e datastore.operations.get .

Per i ruoli che assegnano queste autorizzazioni, consulta Ruoli di Cloud Firestore Identity and Access Management .

Prima di iniziare

Prima di utilizzare l'interfaccia a riga di comando di gcloud per gestire i criteri TTL, utilizza il comando gcloud components update per aggiornare i componenti all'ultima versione disponibile:

gcloud components update

Crea un criterio TTL

Quando si crea un criterio TTL, si designa un campo documento come data di scadenza per i documenti in un gruppo di raccolta.

TTL utilizza un campo specifico per identificare i documenti che possono essere eliminati. Questo campo TTL deve essere di tipo Date and time . È possibile selezionare un campo già esistente oppure designare un campo che si prevede di aggiungere in seguito.

Considera quanto segue prima di impostare il valore del campo TTL:

  • Il valore del campo TTL può essere un momento nel futuro, ora o nel passato. Se il valore è un tempo nel passato, il documento è immediatamente idoneo per l'eliminazione. Ad esempio, potresti 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 disabiliterà il TTL per il singolo documento.

Seguire i passaggi seguenti per creare un criterio TTL:

Google Cloud Console

  1. Vai alla pagina Time-to-live di Cloud Firestore nella console di Google Cloud Platform.

    Vai alla pagina Time-to-live

  2. Fai clic su Crea criterio .

  3. Inserisci un nome per il gruppo di raccolta e un nome per il campo timestamp.

  4. 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 dei criteri TTL. In caso di errore, la pagina visualizza un messaggio di errore.

gcloud

Utilizza il comando firestore fields ttls update per configurare un criterio TTL. Aggiungi il flag --async per impedire all'interfaccia a riga di comando di gcloud 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, possono essere necessari dieci o più minuti per abilitare un criterio TTL. Una volta avviata un'operazione, la chiusura del terminale non annulla l'operazione.

Visualizza i criteri TTL

Segui i passaggi seguenti per visualizzare i criteri TTL e i relativi stati.

Google Cloud Console

Vai alla pagina Time-to-live di Cloud Firestore nella console di Google Cloud Platform.

Vai alla pagina Time-to-live

La console elenca i criteri TTL per il database e include lo stato di ogni criterio.

gcloud

Utilizzare 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 gruppo di raccolta specifico, utilizzare quanto segue:

gcloud firestore fields ttls list  --collection-group=collection_group_name

Visualizza i dettagli dell'operazione

Puoi utilizzare l'interfaccia a riga di comando di gcloud per visualizzare maggiori dettagli su un criterio TTL che si trova nello stato CREATING .

Utilizzare il comando operations list per visualizzare tutte le operazioni in esecuzione e completate di recente:

gcloud firestore operations list

La risposta include una stima dello stato di avanzamento dell'operazione.

Disabilita un criterio TTL

Seguire i passaggi seguenti per disabilitare un criterio TTL.

Google Cloud Console

  1. Vai alla pagina Time-to-live di Cloud Firestore nella console di Google Cloud Platform.

    Vai alla pagina Time-to-live

  2. Nella tabella dei criteri TTL, trova la riga per il criterio TTL. All'interno di questa riga della tabella, fai clic sul pulsante Elimina (cestino).

  3. Conferma facendo clic su Elimina .

La console torna alla pagina Time-to-live . In caso di successo, Cloud Firestore rimuove il criterio TTL dalla tabella.

gcloud

Utilizza il comando firestore fields ttls update per configurare un criterio TTL. Aggiungi il flag --async per impedire all'interfaccia a riga di comando di gcloud 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 guidate da TTL. Cloud Firestore fornisce le seguenti metriche per TTL:

Conteggio delle eliminazioni Time-to-live

Conteggio totale dei documenti eliminati dai criteri Time-to-live (TTL).

Scadenza time-to-live per ritardi di eliminazione

Tempo trascorso tra il momento in cui un documento è scaduto in base a un criterio Time-to-live (TTL) e il momento in cui è stato effettivamente eliminato.

Per configurare una dashboard con i parametri di Cloud Firestore, consulta gestire la dashboard personalizzata e aggiungere i widget della dashboard .