Gestisci la conservazione dei dati con le policy TTL

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

Panoramica del tempo di vita

Utilizza le policy TTL (time-to-live) per rimuovere automaticamente i dati non più aggiornati dai tuoi database. Una policy TTL designa un determinato campo come data di scadenza per i documenti in un determinato gruppo di raccolte. Con TTL puoi ridurre i costi di archiviazione eliminando i dati obsoleti. I dati vengono generalmente eliminati entro 24 ore dalla data di scadenza.

Prezzi

Le operazioni di eliminazione TTL vengono conteggiate nei costi di eliminazione dei documenti. Per i prezzi delle operazioni di eliminazione, consulta i prezzi di Cloud Firestore .

Limiti e vincoli

  • È possibile contrassegnare come campo TTL un solo campo per gruppo di raccolta.
  • 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 dall'indicizzazione di un campo singolo e una policy TTL sullo stesso campo contano come una configurazione di campo ai fini del limite.
  • Per i clienti Firestore in modalità Datastore, TTL non può essere utilizzato con una modalità di concorrenza Ottimistica con gruppi di entità . Valuta la possibilità di modificare la modalità di concorrenza in seguito a questo .

Cancellazione TTL

Tieni presenti i seguenti comportamenti chiave dell'eliminazione basata su TTL:

  • La cancellazione 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 sfrutta la tempestività dell'eliminazione a vantaggio di un costo totale di proprietà ridotto per le eliminazioni. I dati vengono generalmente eliminati entro 24 ore dalla data di scadenza.

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

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

  • Se un documento ha una data di scadenza passata e aggiungi una nuova policy ttl alla raccolta, il documento verrà eliminato entro 24 ore dal completamento della configurazione della policy ttl e dalla sua attivazione.

  • TTL non elimina necessariamente i documenti nello stesso ordine della data di scadenza.

  • Le eliminazioni non vengono effettuate a livello 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 il campo TTL di un documento scaduto ma non ancora eliminato è aggiornato a una data successiva, il documento non scadrà e verrà utilizzata la nuova data.

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

  • L'eliminazione tramite TTL chiama tutti i listener di snapshot attivi e attiva i trigger 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 , il che è contrario alle migliori pratiche. Gli hotspot hanno velocità di lettura, scrittura ed eliminazione elevate su un intervallo ristretto di documenti.

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

Autorizzazioni

L'entità che configura una policy TTL richiede la seguente autorizzazione nel progetto:

  • La visualizzazione delle policy 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 gestione delle identità e degli accessi di Cloud Firestore .

Prima di iniziare

Prima di utilizzare la CLI gcloud per gestire le policy TTL, utilizza il comando gcloud components update per aggiornare i componenti all'ultima versione disponibile:

gcloud components update

Creare una politica TTL

Quando crei una policy TTL, designi un campo documento come data di scadenza per i documenti in un gruppo di raccolte.

TTL utilizza un campo specificato per identificare i documenti idonei per l'eliminazione. Questo campo TTL deve essere di tipo Date and time . È possibile selezionare un campo già esistente oppure designare un campo che si intende 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, adesso o nel passato. Se il valore è un'ora passata, il documento è immediatamente idoneo per l'eliminazione. Ad esempio, potresti creare una policy TTL con il campo expireAt , che poi aggiungerai 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 una policy TTL:

Console Google Cloud

  1. Nella console di Google Cloud Platform, vai alla pagina Database .

    Vai a Database

  2. Selezionare il database richiesto dall'elenco dei database.

  3. Nel menu di navigazione, fai clic su Time-to-live .

  4. Fare clic su Crea policy .

  5. Inserisci il nome del gruppo di raccolta e il nome del campo timestamp.

  6. Fare clic su Crea .

La console ritorna alla pagina Time-to-live . Se l'operazione viene avviata correttamente, la pagina aggiunge una voce alla tabella delle politiche TTL. In caso di errore, la pagina visualizza un messaggio di errore.

gcloud

Utilizza il comando firestore fields ttls update per configurare una policy TTL. Aggiungi il flag --async per impedire alla CLI 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 minuti o più per abilitare un criterio TTL. Una volta avviata un'operazione, la chiusura del terminale non annulla l'operazione.

Visualizza le politiche TTL

Seguire i passaggi seguenti per visualizzare le politiche TTL e i relativi stati.

Console Google Cloud

  1. Nella console di Google Cloud Platform, vai alla pagina Database .

    Vai a Database

  2. Selezionare il database richiesto dall'elenco dei database.

  3. Nel menu di navigazione, fai clic su Time-to-live .

La console elenca le policy TTL per il tuo database e include lo stato di ciascuna policy.

gcloud

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 policy 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 la CLI gcloud per visualizzare ulteriori dettagli su una policy TTL che si trova 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 dello stato di avanzamento dell'operazione.

Disabilitare una policy TTL

Seguire i passaggi seguenti per disabilitare un criterio TTL.

Console Google Cloud

  1. Nella console di Google Cloud Platform, vai alla pagina Database .

    Vai a Database

  2. Selezionare il database richiesto dall'elenco dei database.

  3. Nel menu di navigazione, fai clic su Time-to-live .

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

  5. Conferma facendo clic su Elimina .

La console ritorna alla pagina Time-to-live . In caso di successo, Cloud Firestore rimuove la policy TTL dalla tabella.

gcloud

1. Utilizzare il comando firestore fields ttls update per configurare una politica TTL. Aggiungi il flag --async per impedire alla CLI gcloud 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 sulle eliminazioni basate su TTL. Cloud Firestore fornisce i seguenti parametri per TTL:

firestore.googleapis.com/document/ttl_deletion_count Conteggio delle eliminazioni di durata

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

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Scadenza temporale per ritardi di eliminazione

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

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