Löschvorgänge
In diesem Dokument wird beschrieben, wie Sie in Bigtable-Tabellen gespeicherte Daten löschen. Außerdem wird erläutert, wann Sie den jeweiligen Ansatz verwenden sollten. Außerdem finden Sie hier Beispiele. Bevor Sie diese Seite lesen, sollten Sie sich mit den Informationen unter Bigtable vertraut machen und mit den Konzepten des Schemadesigns vertraut sein.
Aus Konsistenzgründen beziehen sich die Beschreibungen auf dieser Seite auf die API-Methoden, die für die einzelnen Anfragetypen verwendet werden. Wir empfehlen jedoch, immer eine der Bigtable-Clientbibliotheken für den Zugriff auf die Bigtable APIs zu verwenden, anstatt REST oder RPC zu verwenden.
In den Beispielen auf dieser Seite werden Beispieldaten verwendet, die den Daten ähneln, die Sie in Bigtable speichern.
Informationen dazu, wie oft Sie die auf dieser Seite beschriebenen Vorgänge pro Tag nutzen können, finden Sie unter Kontingente und Limits.
So löscht Bigtable Daten
Wenn Sie eine Löschanfrage senden, werden Zellen zum Löschen markiert und können nicht gelesen werden. Die Daten werden bis zu eine Woche später bei der Verdichtung entfernt, einem Hintergrundprozess, der die Tabelle kontinuierlich optimiert. Löschmetadaten können dazu führen, dass Ihre Daten nach dem Senden einer Löschanfrage für einige Tage bis zur nächsten Verdichtung etwas mehr Speicherplatz einnehmen (mehrere KB pro Zeile).
Sie können jederzeit eine Löschanfrage senden, auch wenn Ihr Cluster das Speicherlimit überschritten hat und Lese- und Schreibvorgänge blockiert werden.
Einen Zeilenbereich löschen
Wenn Sie eine große Menge an Daten löschen möchten, die in zusammenhängenden Zeilen gespeichert sind, verwenden Sie dropRowRange
. Mit diesem Vorgang werden alle Zeilen für einen Zeilenbereich gelöscht, der durch eine Start- und Endzeile oder ein Zeilenschlüsselpräfix gekennzeichnet ist.
Die Zeilenschlüsselwerte, die Sie beim Löschen eines Zeilenbereichs angeben, werden als Dienstdaten behandelt. Informationen zum Umgang mit Dienstdaten finden Sie in den Datenschutzhinweisen für Google Cloud.
Nachdem ein erfolgreiches Löschen abgeschlossen ist und Sie eine Antwort erhalten, können Sie Daten bedenkenlos in denselben Zeilenbereich schreiben.
Für den dropRowRange
-Vorgang gelten die folgenden Einschränkungen:
- Sie können keinen Zeilenbereich aus einer autorisierten Ansicht löschen.
- Die Methode
dropRowRange
kann nicht asynchron aufgerufen werden. Wenn Sie einedropRowRange
-Anfrage an eine Tabelle senden, während eine andere Anfrage ausgeführt wird, gibt Bigtable einen Fehler zurück. Senden Sie die Anfrage noch einmal, um den Fehler zu beheben. - Beachten Sie bei Instanzen, die Replikation verwenden, dass der Vorgang in Bigtable aufgrund der erhöhten Replikationslatenz und CPU-Nutzung lange dauern kann. Wenn Sie Daten aus einer Instanz mit Replikation löschen möchten, verwenden Sie die Data API, um die Daten zu lesen und anschließend zu löschen.
Die folgenden Codebeispiele zeigen, wie Sie einen Bereich von Zeilen löschen, die mit dem Zeilenschlüsselpräfix phone#5c10102
beginnen:
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Daten mit Data API-Methoden löschen
Wenn Sie kleine Mengen nicht zusammenhängender Daten löschen müssen, ist das Löschen von Daten mit einer Methode, die die Cloud Bigtable API (Data API) aufruft, oft die beste Wahl. Verwenden Sie diese Methoden, wenn Sie in einer Anfrage MB (nicht GB) an Daten löschen möchten. Daten aus einer Spalte (nicht der Spaltenfamilie) können nur mithilfe der Data API gelöscht werden.
Daten-API-Methoden rufen MutateRows
mit einem von drei Mutationstypen auf:
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
Eine Löschanfrage, die die Data API verwendet, ist atomar: Entweder ist die Anfrage erfolgreich und alle Daten werden gelöscht oder die Anfrage schlägt fehl und es werden keine Daten entfernt.
In den meisten Fällen sollten Sie keine CheckAndMutate
-Methoden verwenden, um Daten zu löschen. In dem seltenen Fall, dass Sie strikte Konsistenz benötigen, können Sie diesen Ansatz verwenden. Beachten Sie jedoch, dass er ressourcenintensiv ist und die Leistung beeinträchtigt werden kann.
Wenn Sie MutateRows
zum Löschen von Daten verwenden möchten, senden Sie eine readRows
-Anfrage mit einem Filter, um zu bestimmen, was gelöscht werden soll. Anschließend senden Sie die Löschanfrage. Eine Liste der verfügbaren Filter finden Sie unter Filter.
Bei den Beispielen in diesem Abschnitt wird davon ausgegangen, dass Sie bereits festgelegt haben, welche Daten gelöscht werden sollen.
Aus einer Spalte löschen
Die folgenden Codebeispiele zeigen, wie Sie alle Zellen aus einer Spalte in einer Zeile löschen:
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Aus einer Spaltenfamilie löschen
Die folgenden Codebeispiele zeigen, wie Sie Zellen aus einer Spaltenfamilie in einer Zeile löschen:
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Aus einer Zeile löschen
Die folgenden Code-Snippets veranschaulichen, wie Sie alle Zellen aus einer Zeile löschen:
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Per Streaming und Batching löschen
Das Streamen von Löschanfragen oder die Batchverarbeitung ist häufig die beste Möglichkeit, große Datenmengen zu löschen. Diese Strategie kann nützlich sein, wenn Sie detailliertere Anforderungen an die Datenaufbewahrung haben, als die Richtlinien für die automatische Speicherbereinigung zulassen.
Die folgenden Code-Snippets starten einen Datenstream (Lesezeilen), stapeln sie, durchlaufen den Batch und löschen alle Zellen in Spalte data_plan_01gb1
in der Spaltenfamilie cell_plan
:
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Daten in einer autorisierten Ansicht löschen
Sie können Tabellendaten löschen, indem Sie eine Löschanfrage an eine autorisierte Ansicht senden. Sie müssen eine der folgenden Optionen verwenden:
- gcloud-CLI
- Bigtable-Client für Java
Wenn Sie Daten aus einer autorisierten Ansicht löschen, geben Sie zusätzlich zur Tabellen-ID die ID der autorisierten Ansicht an.
Die Daten, die Sie aus einer autorisierten Ansicht löschen können, sind durch die Definition der autorisierten Ansicht eingeschränkt. Sie können nur Daten löschen, die in der autorisierten Ansicht enthalten sind. Wenn Sie versuchen, Daten zu löschen, die nicht in der Definition der autorisierten Ansicht enthalten sind oder den folgenden Regeln unterliegen, wird der Fehler PERMISSION_DENIED
zurückgegeben:
- Das Löschen eines Zeilenbereichs aus einer autorisierten Ansicht mit
DropRowRange
in der Admin API wird nicht unterstützt. - Das Löschen aus einer Zeile wird nicht unterstützt.
- Das Löschen aus einer Spalte wird unterstützt, sofern dies für Zeilen gilt, die sich in der autorisierten Ansicht befinden.
- Das Löschen aus einer Spaltenfamilie ist nur zulässig, wenn die angegebene Spaltenfamilie so konfiguriert ist, dass alle Spaltenqualifiziererpräfixe (
qualifier_prefixes=""
) in der autorisierten Ansicht zulässig sind.
Wenn Sie beispielsweise versuchen, aus einer bestimmten Zeile zu löschen, und diese Zeile Spalten in der zugrunde liegenden Tabelle enthält, die sich nicht in Ihrer autorisierten Ansicht befinden, schlägt die Anfrage fehl.