Operazioni di eliminazione
Questo documento descrive come eliminare i dati archiviati nelle tabelle Bigtable, spiega quando utilizzare ciascun approccio e fornisce esempi. Prima di leggere questa pagina, dovresti conoscere la panoramica di Bigtable e comprendere i concetti coinvolti nella progettazione degli schemi.
Per coerenza, le descrizioni in questa pagina fanno riferimento ai metodi API utilizzati per ogni tipo di richiesta. Tuttavia, ti consigliamo vivamente di utilizzare sempre una delle librerie client di Bigtable per accedere alle API Bigtable anziché utilizzare REST o RPC.
Gli esempi in questa pagina utilizzano dati di esempio simili a quelli che potresti archiviare in Bigtable.
Per conoscere il numero di volte al giorno in cui è possibile utilizzare le operazioni descritte in questa pagina, consulta Quote e limiti.
In che modo Bigtable elimina i dati
Quando invii una richiesta di eliminazione, le celle vengono contrassegnate per l'eliminazione e non possono essere lette. I dati vengono rimossi fino a una settimana dopo durante la compattazione, un processo in background che ottimizza continuamente la tabella. I metadati di eliminazione possono causare un aumento dello spazio nei dati (diversi kB per riga) per alcuni giorni dopo l'invio di una richiesta di eliminazione, fino alla successiva compattazione.
Puoi sempre inviare una richiesta di eliminazione, anche se il cluster ha superato il limite di spazio di archiviazione e le operazioni di lettura e scrittura sono bloccate.
Elimina un intervallo di righe
Se vuoi eliminare una grande quantità di dati archiviati in righe contigue, utilizza dropRowRange
. Questa operazione elimina tutte le righe per un intervallo di righe identificate da una riga iniziale e finale o da un prefisso di chiave di riga.
I valori chiave di riga che fornisci quando elimini un intervallo di righe vengono trattati come dati di servizio. Per informazioni sul modo in cui vengono gestiti i dati di servizio, consulta l'Informativa sulla privacy di Google Cloud.
Dopo che l'eliminazione viene completata e ricevi una risposta, puoi scrivere i dati in sicurezza nello stesso intervallo di righe.
L'operazione dropRowRange
prevede le seguenti limitazioni:
- Non puoi eliminare un intervallo di righe da una vista autorizzata.
- Non puoi chiamare il metodo
dropRowRange
in modo asincrono. Se invii una richiestadropRowRange
a una tabella mentre è in corso un'altra richiesta, Bigtable restituisce un erroreUNAVAILABLE
con il messaggioA DropRowRange operation is already ongoing
. Per risolvere l'errore, invia di nuovo la richiesta. - Con istanze che utilizzano la replica, tieni presente che Bigtable potrebbe richiedere molto tempo per completare l'operazione a causa dell'aumento della latenza di replica e dell'utilizzo della CPU. Per eliminare i dati da un'istanza che utilizza la replica, utilizza l'API di dati per leggere ed eliminare i dati.
I seguenti esempi di codice mostrano come rilasciare un intervallo di righe che iniziano con il prefisso della chiave di riga phone#5c10102
:
Java
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Node.js
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Elimina i dati utilizzando i metodi dell'API di dati
Se devi eliminare piccole quantità di dati non contigui, spesso la scelta migliore è eliminare i dati utilizzando un metodo che chiama l'API Cloud Bigtable (API di dati). Utilizza questi metodi per eliminare i MB di dati in una richiesta, non i GB. L'utilizzo dell'API di dati è l'unico modo per eliminare i dati da una colonna (non dalla famiglia di colonne).
I metodi dell'API di dati chiamano MutateRows
con uno dei tre tipi di mutazione:
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
Una richiesta di eliminazione che utilizza l'API di dati è atomica: la richiesta riesce e tutti i dati vengono eliminati oppure la richiesta non riesce e non viene rimosso alcun dato.
Nella maggior parte dei casi, evita di utilizzare i metodi CheckAndMutate
per eliminare i dati. Nei rari casi in cui sia necessaria un'elevata coerenza, potresti voler utilizzare questo approccio, ma tieni presente che richiede molte risorse e che le prestazioni potrebbero risentirne.
Per utilizzare MutateRows
al fine di eliminare i dati, invia una richiesta readRows
con un
filtro per determinare cosa eliminare, quindi invia la richiesta
di eliminazione. Per un elenco dei filtri disponibili, vedi Filtri.
Gli esempi in questa sezione presuppongono che tu abbia già determinato quali dati eliminare.
Elimina da una colonna
I seguenti esempi di codice mostrano come eliminare tutte le celle da una colonna in una riga:
Java
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python asincrono
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Node.js
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Elimina da una famiglia di colonne
I seguenti esempi di codice mostrano come eliminare le celle da una famiglia di colonne in una riga:
Java
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python asincrono
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Node.js
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Elimina da una riga
I seguenti snippet di codice mostrano come eliminare tutte le celle da una riga:
Java
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python asincrono
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Node.js
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Eliminazione tramite flusso e batch
Il flusso e il batch di richieste di eliminazione sono spesso il modo migliore per eliminare grandi quantità di dati. Questa strategia può essere utile se hai requisiti di conservazione dei dati più granulari rispetto a quelli consentiti dai criteri di garbage collection.
I seguenti snippet di codice avviano un flusso di dati (lettura di righe), li raccolgono in batch, quindi li riproducono in batch ed eliminano tutte le celle nella colonna data_plan_01gb1
della famiglia di colonne cell_plan
:
Java
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python asincrono
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Node.js
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Eliminare i dati in una vista autorizzata
Puoi eliminare i dati della tabella inviando una richiesta di eliminazione a una vista autorizzata. Devi utilizzare uno dei seguenti:
- Interfaccia a riga di comando gcloud
- Client Bigtable per Java
Quando elimini i dati da una vista autorizzata, fornisci l'ID vista autorizzata oltre all'ID tabella.
I dati che puoi eliminare da una vista autorizzata sono limitati dalla
definizione della vista autorizzata. Puoi eliminare solo i dati inclusi
nella vista autorizzata. Se tenti di eliminare dati che non rientrano nella definizione della vista autorizzata o che sono soggetti alle seguenti regole, viene restituito un errore PERMISSION_DENIED
:
- L'eliminazione di un intervallo di righe da una visualizzazione autorizzata utilizzando
DropRowRange
nell'API Admin non è supportata. - L'eliminazione da una riga non è supportata.
- L'eliminazione da una colonna è supportata purché riguarda le righe che si trovano nella visualizzazione autorizzata.
- L'eliminazione da una famiglia di colonne è consentita solo se la famiglia di colonne specificata è configurata in modo da consentire tutti i prefissi qualificatore di colonna (
qualifier_prefixes=""
) nella vista autorizzata.
Ad esempio, se tenti di eliminare da una riga specificata e la riga contiene colonne nella tabella sottostante che non si trovano nella visualizzazione autorizzata, la richiesta non va a buon fine.