Eliminare più entità contemporaneamente

Puoi utilizzare il servizio di eliminazione collettiva gestito in modalità Datastore per eliminare i dati dal database. Questa funzionalità supporta l'eliminazione in base a uno o più tipi.

Questa pagina descrive come eliminare collettivamente le entità di Firestore in modalità Datastore utilizzando il servizio di eliminazione collettiva gestito. Il servizio di eliminazione collettiva gestito in modalità Datastore è disponibile tramite lo strumento a riga di comando gcloud e l'API della modalità Datastore (REST, RPC).

Prima di iniziare

Prima di poter utilizzare il servizio di eliminazione collettiva gestita, devi completare le seguenti attività:

  1. Abilita la fatturazione per il tuo progetto Google Cloud. Solo i progetti Google Cloud con la fatturazione abilitata possono utilizzare la funzionalità di eliminazione collettiva.
  2. Assicurati che il tuo account disponga delle autorizzazioni necessarie per la modalità Datastore. Se sei il proprietario del progetto, il tuo account dispone delle autorizzazioni richieste. In caso contrario, i seguenti ruoli grantano le autorizzazioni necessarie per le operazioni di eliminazione collettiva:

    • Ruoli in modalità Datastore: Owner, Cloud Datastore Owner o Cloud Datastore Bulk Admin

Configura gcloud per il tuo progetto

Puoi avviare operazioni di eliminazione collettiva tramite la console Google Cloud o lo strumento a riga di comando gcloud. Per utilizzare gcloud, configura lo strumento a riga di comando e connettiti al tuo progetto in uno dei seguenti modi:

Eliminare collettivamente i dati

Un'operazione di eliminazione collettiva trova prima tutte le entità applicabili nel database ed eliminale in batch. Puoi comunque eseguire query o leggere queste entità, anche se i risultati possono variare in base ai progressi compiuti. L'eliminazione collettiva non elimina le entità aggiunte o modificate dopo l'avvio dell'operazione.

Eliminare collettivamente tipi specifici

gcloud

Per eliminare collettivamente tipi specifici, utilizza il flag --collection-ids. Il flag utilizza la terminologia di Firestore, ma un ID gruppo di raccolte è uguale a un ID tipo. L'operazione elimina solo i tipi con gli ID specificati. Un tipo include tutte le entità e le entità nidificate (in qualsiasi percorso) con i tipi specificati.

gcloud beta firestore bulk-delete \
--collection-ids=[COLLECTION_GROUP_ID_1_OR_KIND_1],[COLLECTION_GROUP_ID_2_OR_KIND_2],[SUBCOLLECTION_GROUP_ID_1_OR_KIND_3] \
--database=[DATABASE]

Gestire le operazioni di eliminazione collettiva

Dopo aver avviato un'operazione di eliminazione collettiva, la modalità Datastore assegna all'operazione un nome univoco. Puoi utilizzare il nome dell'operazione per eliminarla, annullarla o verificarne lo stato.

I nomi delle operazioni sono preceduti da projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/, ad esempio:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Tuttavia, puoi omettere il prefisso quando specifichi un nome dell'operazione per i comandi describe, cancel e delete.

Elenca tutte le operazioni di eliminazione collettiva

gcloud

Utilizza il comando operations list per visualizzare tutte le operazioni in esecuzione e completate di recente, incluse le operazioni di eliminazione collettiva:

gcloud firestore operations list

Controllare lo stato dell'operazione

gcloud

Utilizza il comando operations describe per mostrare lo stato di un'operazione di eliminazione collettiva.

gcloud firestore operations describe [OPERATION_NAME]

Stima il tempo di completamento

Una richiesta relativa allo stato di un'operazione a lunga esecuzione restituisce le metriche workEstimated e workCompleted. Ognuna di queste metriche viene restituita sia in termini di numero di byte sia in termini di numero di entità:

  • workEstimated mostra il numero totale stimato di byte ed entità che verrà elaborato da un'operazione. La modalità Datastore potrebbe omettere questa metrica se non riesce a fare una stima.

  • workCompleted mostra il numero di byte ed entità eliminati fino a quel momento. Al termine dell'operazione, il valore mostra il numero totale di byte ed entità effettivamente elaborati, che potrebbe essere superiore al valore di workEstimated.

Dividi workCompleted per workEstimated per una stima approssimativa dei progressi. Questa stima potrebbe non essere precisa, in quanto dipende dalla raccolta delle statistiche con ritardo.

Annullare un'operazione

gcloud

Utilizza il comando operations cancel per interrompere un'operazione in corso:

gcloud firestore operations cancel [OPERATION_NAME]

L'annullamento di un'operazione in esecuzione non annulla l'operazione. Un'operazione di eliminazione collettiva annullata non recupera le entità eliminate.

Eliminare un'operazione

Utilizza il comando gcloud firestore operations delete per rimuovere un'operazione completata dall'elenco delle operazioni recenti. Per annullare un'operazione in esecuzione, utilizza l'operazione di annullamento precedente.

gcloud firestore operations delete [OPERATION_NAME]

Fatturazione e prezzi per le operazioni di eliminazione collettiva

Devi attivare la fatturazione per il tuo progetto Google Cloud prima di utilizzare il servizio di eliminazione collettiva gestita.

Per le operazioni di eliminazione collettiva vengono addebitate le letture e le eliminazioni delle entità alle tariffe indicate nella sezione Prezzi della modalità Datastore. Le operazioni di eliminazione collettiva comportano una lettura della voce dell'indice per ogni entità trovata e un'operazione di eliminazione per ogni entità eliminata. Ti viene addebitata un'operazione di lettura per un massimo di 1000 voci di indice lette. Ad esempio, per un'operazione di eliminazione collettiva che ha eliminato 1500 entità, ti verranno addebitate 2 letture di entità ed 1500 eliminazioni di entità.

Tieni presente che la modalità Datastore prevede l'addebito in base al lavoro effettivo svolto. Se l'operazione viene annullata o non va a buon fine a causa di un errore dell'utente, ti verrà addebitato l'avanzamento. La modalità Datastore non addebita le operazioni di lettura o eliminazione per le entità che non vengono eliminate (ad esempio, le entità modificate dopo l'avvio dell'operazione di eliminazione). Il costo verrà attribuito il giorno del completamento dell'operazione.

Le operazioni di eliminazione collettiva non attiveranno gli avvisi relativi al budget di Google Cloud fino al termine dell'operazione. Analogamente, le letture e le eliminazioni eseguite durante un'operazione di eliminazione collettiva vengono applicate alla quota/all'utilizzo gratuito al termine dell'operazione. Le operazioni di eliminazione collettiva non influiscono sull'utilizzo mostrato nella sezione relativa all'utilizzo della console.

Visualizzare i costi dell'eliminazione collettiva

Le operazioni di eliminazione collettiva applicano l'etichetta goog-firestoremanaged:bulkdelete alle operazioni fatturate. Nella pagina dei report di fatturazione Cloud, puoi utilizzare questa etichetta per visualizzare i costi relativi alle operazioni di eliminazione collettiva.

Best practice

Evita di saltare i dati eliminati, che potrebbero rallentare le query.

Altra opzione

Dataflow è un servizio gestito per lo sviluppo ed esecuzione di flussi di lavoro di elaborazione dei dati che possono anche eliminare i dati collettivamente. Dataflow fornisce un modello di eliminazione di Datastore che puoi utilizzare per eliminare le entità selezionate da una query GQL.

Per saperne di più, consulta la documentazione di Dataflow sull'esecuzione del modello di eliminazione collettiva di Datastore.

Se il tuo caso d'uso prevede la conservazione dei dati, consulta Gestire la conservazione dei dati con i criteri TTL.