Puoi utilizzare il Cloud Firestoreservizio di eliminazione collettiva gestita per eliminare i dati dal tuo database. Questa funzionalità supporta l'eliminazione in base a uno o più gruppi di raccolte.
Questa pagina descrive come eliminare più documenti Cloud Firestore contemporaneamente utilizzando il servizio di eliminazione collettiva gestito. Il servizio di eliminazione collettiva gestito da Cloud Firestore è disponibile tramite lo strumento a riga di comando gcloud
e l'API Cloud Firestore (REST, RPC).
Prima di iniziare
Prima di poter utilizzare il servizio di eliminazione collettiva gestita, devi completare le seguenti attività:
- Attiva la fatturazione per il tuo progetto Google Cloud. Solo i progetti Google Cloud con la fatturazione abilitata possono utilizzare la funzionalità di eliminazione collettiva.
-
Assicurati che il tuo account disponga delle autorizzazioni necessarie per Cloud Firestore. 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 Cloud Firestore:
Owner
,Cloud Datastore Owner
oCloud Datastore Bulk Admin
- Ruoli Cloud Firestore:
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:
Accedi a
gcloud
dalla console Google Cloud utilizzando Cloud Shell.Assicurati che
gcloud
sia configurato per il progetto corretto:gcloud config set project [PROJECT_ID]
Eliminare collettivamente i dati
Un'operazione di eliminazione collettiva trova prima tutti i documenti applicabili nel database ed eliminali in batch. Puoi comunque eseguire query o leggere questi documenti, anche se i risultati possono variare in base ai progressi compiuti. L'eliminazione collettiva non eliminerà i documenti aggiunti o modificati dopo l'avvio dell'operazione.
Eliminare collettivamente gruppi di raccolte specifici
gcloud
Per eliminare collettivamente gruppi di raccolte specifici, utilizza il flag
--collection-ids
. L'operazione elimina solo i gruppi di raccolte con gli ID specificati. Un gruppo di raccolte include tutti i documenti e i documenti nidificati (in qualsiasi percorso) con i gruppi di raccolte 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, Cloud Firestore 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
. Ogni metrica viene restituita sia in termini di numero di byte che di numero di documenti:
workEstimated
mostra il numero totale stimato di byte e documenti che verrà elaborato da un'operazione. Cloud Firestore potrebbe omettere questa metrica se non riesce a effettuare una stima.workCompleted
mostra il numero di byte e documenti eliminati finora. Al termine dell'operazione, il valore mostra il numero totale di byte e documenti effettivamente elaborati, che potrebbe essere superiore al valore diworkEstimated
.
Dividi workCompleted
per workEstimated
per una stima approssimativa dell'avanzamento. 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 i documenti eliminati.
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 dei documenti alle tariffe indicate nella pagina Prezzi di Cloud Firestore. Le operazioni di eliminazione collettiva comportano una lettura della voce dell'indice per ogni documento trovato e un'operazione di eliminazione per ogni documento eliminato. 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 documenti, ti verranno addebitate 2 letture di documenti ed 1500 eliminazioni di documenti.
Tieni presente che Cloud Firestore addebita il lavoro effettivamente svolto. Se l'operazione viene annullata o non va a buon fine a causa di un errore dell'utente, ti verrà addebitato l'avanzamento. Cloud Firestore non addebiterà la lettura o l'eliminazione per i documenti che non vengono eliminati (ad esempio i documenti modificati 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 Google Cloudbudget finché non saranno completate. Analogamente, le letture e le eliminazioni eseguite durante un'operazione di eliminazione collettiva vengono applicate alla quota/all'utilizzo senza costi 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.