Eliminazioni
Questo documento descrive come eliminare i dati archiviati nelle tabelle Bigtable, illustra quando utilizzare ciascun approccio e fornisce esempi. Prima di leggere questa pagina, devi conoscere la panoramica di Bigtable e comprendere i concetti relativi alla progettazione dello schema.
Per coerenza, le descrizioni in questa pagina fanno riferimento ai metodi dell'API utilizzati per ogni tipo di richiesta. Tuttavia, ti consigliamo vivamente di utilizzare sempre una delle librerie client 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 in cui puoi utilizzare le operazioni descritte in questa pagina al giorno, consulta Quote e limiti.
Come 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 compazione, un processo in background che ottimizza continuamente la tabella. I metadati di eliminazione possono causare un aumento dello spazio occupato dai dati (diversi KB per riga) per alcuni giorni dopo l'invio di una richiesta di eliminazione, fino al successivo processo di compattazione.
Puoi sempre inviare una richiesta di eliminazione, anche se il tuo cluster ha superato il limite di archiviazione e le letture e le scritture sono bloccate.
Eliminare un intervallo di righe
Se vuoi eliminare una grande quantità di dati archiviati in righe contigue, utilizza
dropRowRange
. Questa operazione elimina tutte le righe di un intervallo di righe identificato
da una riga iniziale e una finale o da un prefisso della chiave di riga.
I valori chiave di riga che fornisci quando elimini un intervallo di righe vengono trattati come dati di servizio. Per informazioni sulla modalità di trattamento dei dati di servizio, consulta l'Informativa sulla privacy di Google Cloud.
Una volta completata l'eliminazione e ricevuta una risposta, puoi scrivere i dati nello stesso intervallo di righe in tutta sicurezza.
L'operazione dropRowRange
presenta le seguenti limitazioni:
- Non puoi eliminare un intervallo di righe da una visualizzazione 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 le istanze che utilizzano la replica, tieni presente che Bigtable potrebbe impiegare molto tempo per completare l'operazione a causa dell'aumento della latenza e dell'utilizzo della CPU della replica. Per eliminare i dati da un'istanza che utilizza la replica, utilizza l'API Data per leggere ed eliminare i dati.
I seguenti esempi di codice mostrano come eliminare un intervallo di righe che inizia con il prefisso della chiave di riga phone#5c10102
:
Java
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Node.js
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Eliminare i dati utilizzando i metodi dell'API Data
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 se elimini MB, non GB, di dati in una richiesta. L'utilizzo dell'API Data è l'unico modo per eliminare i dati da una colonna (non da una 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 Data è atomica: se la richiesta va a buon fine, tutti i dati vengono eliminati oppure la richiesta non va a buon fine e nessun dato viene rimosso.
Nella maggior parte dei casi, evita di utilizzare i metodi CheckAndMutate
per eliminare i dati. Nel raro
eventualitá in cui tu abbia bisogno di elevata coerenza, potresti voler utilizzare questo
approccio, ma tieni presente che richiede molte risorse e le prestazioni potrebbero essere
influite.
Per utilizzare MutateRows
per eliminare i dati, invia una richiesta readRows
con un
filtro per determinare cosa vuoi eliminare, quindi invia la richiesta di eliminazione. Per un elenco dei filtri disponibili, consulta
Filtri.
Gli esempi in questa sezione presuppongono che tu abbia già stabilito quali dati eliminare.
Eliminare da una colonna
I seguenti esempi di codice mostrano come eliminare tutte le celle di una colonna in una riga:
Java
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Python asyncio
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Node.js
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Eliminare elementi da una famiglia di colonne
I seguenti esempi di codice mostrano come eliminare le celle di una famiglia di colonne in una riga:
Java
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Python asyncio
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Node.js
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Eliminare da una riga
I seguenti snippet di codice mostrano come eliminare tutte le celle di una riga:
Java
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Python asyncio
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Node.js
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Eliminazione tramite streaming e raggruppamento
Spesso, lo streaming e l'aggregazione delle richieste di eliminazione sono il modo migliore per eliminare grandi quantità di dati. Questa strategia può essere utile quando hai requisiti di conservazione dei dati più granulari rispetto a quelli consentiti dai criteri di raccolta dei rifiuti.
Se la tua applicazione è scritta in Java, puoi attivare il controllo del flusso di scrittura collettiva quando invii eliminazioni collettive a Bigtable. Per ulteriori informazioni, consulta Controllo del flusso di scrittura batch. Per scoprire come attivarlo, consulta Attivare il controllo del flusso di scrittura collettiva.
I seguenti snippet di codice avviano uno stream di dati (lettura
delle righe), li raggruppano in batch, poi esaminano il batch ed eliminano tutte le
celle della colonna data_plan_01gb1
nella famiglia di colonne cell_plan
:
Java
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Python asyncio
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Node.js
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.
Per autenticarti a Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Eliminare i dati in una visualizzazione autorizzata
Puoi eliminare i dati della tabella inviando una richiesta di eliminazione a una vista autorizzata. Devi utilizzare uno dei seguenti elementi:
- Interfaccia a riga di comando gcloud
- Client Bigtable per Java
Quando elimini i dati da una vista autorizzata, fornisci l'ID della 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 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 amministrazione non è supportata. - L'eliminazione da una riga non è supportata.
- L'eliminazione da una colonna è supportata a condizione che riguardi le righe nella visualizzazione autorizzata.
- L'eliminazione da una famiglia di colonne è consentita solo se la famiglia di colonne specificata è configurata per consentire tutti i prefissi qualificatore di colonna (
qualifier_prefixes=""
) nella visualizzazione autorizzata.
Ad esempio, se tenti di eliminare una riga specificata e questa contiene colonne nella tabella sottostante che non sono nella visualizzazione autorizzata, la richiesta non va a buon fine.