Löschvorgänge
In diesem Dokument wird beschrieben, wie Sie in Bigtable-Tabellen gespeicherte Daten löschen. Außerdem wird erläutert, wann Sie die einzelnen Methoden verwenden sollten, und es werden Beispiele aufgeführt. Bevor Sie diese Seite lesen, sollten Sie mit der Bigtable-Datei Übersicht und die Konzepte von Schemas Design.
Aus Konsistenzgründen beziehen sich die Beschreibungen auf dieser Seite auf die API-Methoden, die die für die einzelnen Anfragetypen verwendet werden. Wir empfehlen Ihnen jedoch, Verwenden Sie einen der Bigtable-Client Bibliotheken um auf die Bigtable APIs zuzugreifen, anstatt REST oder RPC zu verwenden.
In den Beispielen auf dieser Seite werden Beispieldaten verwendet, die denen ähneln, die Sie in Bigtable speichern könnten.
Um zu erfahren, wie oft Sie die hier beschriebenen Vorgänge verwenden können Seite pro Tag erhalten, siehe Kontingente und .
So werden Daten in Bigtable gelöscht
Wenn Sie eine Löschanfrage senden, werden Zellen zum Löschen markiert und können nicht gelesen werden. Die Daten werden bis zu einer Woche später im compaction, ein Hintergrundprozess, der die Tabelle kontinuierlich optimiert. Löschmetadaten können dazu führen, dass Ihre Daten nach dem Senden einer Löschanfrage einige Tage lang etwas mehr Speicherplatz (mehrere KB pro Zeile) belegen, bis die nächste Verdichtung erfolgt.
Sie können jederzeit eine Löschanfrage senden, auch wenn Ihr Cluster das Speicherlimit überschritten hat und Lese- und Schreibvorgänge blockiert sind.
Zeilenbereich löschen
Wenn Sie eine große Datenmenge löschen möchten, die in zusammenhängenden Zeilen gespeichert ist, verwenden Sie
dropRowRange
Durch diesen Vorgang werden alle Zeilen für einen Bereich der angegebenen Zeilen gelöscht.
durch eine Start- und eine Endzeile oder ein Zeilenschlüsselpräfix.
Die Zeilenschlüsselwerte, die Sie beim Löschen eines Zeilenbereichs angeben, werden als Dienstdaten behandelt. Informationen dazu, wie Dienstdaten verarbeitet werden, findest du unter Datenschutzhinweise für Google Cloud
Nachdem die Daten erfolgreich gelöscht wurden und Sie eine Antwort erhalten haben, können Sie wieder Daten in denselben Zeilenbereich schreiben.
Für den Vorgang dropRowRange
gelten die folgenden Einschränkungen:
- Sie können keinen Zeilenbereich aus einer autorisierten Ansicht einfügen.
- Die
dropRowRange
-Methode kann nicht asynchron aufgerufen werden. Wenn Sie einedropRowRange
-Anfrage an eine Tabelle, während eine andere Anfrage bearbeitet wird Bigtable gibt einenUNAVAILABLE
-Fehler mit der MeldungA DropRowRange operation is already ongoing
zurück. Um den Fehler zu beheben, senden Sie noch einmal anfordern. - Beachten Sie bei Instanzen mit Replikation, dass Bigtable sehr lange dauern, bis der Vorgang abgeschlossen ist, Replikationslatenz und CPU-Nutzung. Wenn Sie Daten aus einer Instanz löschen möchten, die die Replikation verwendet, lesen und löschen Sie die Daten mit der Data API.
Die folgenden Codebeispiele zeigen, wie Sie einen Bereich von Zeilen löschen, die mit
Zeilenschlüsselpräfix phone#5c10102
:
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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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, eine Methode, die die Cloud Bigtable API (Data API) aufruft, eine große Auswahl. Verwenden Sie diese Methoden, wenn Sie in einer Anfrage MB, nicht GB, an Daten löschen. Die Data API ist die einzige Möglichkeit, Daten aus einer Spalte (nicht aus einer Spaltenfamilie) zu löschen.
Data API-Methoden rufen MutateRows
mit einem der drei Mutationstypen auf:
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
Eine Löschanfrage mit der Data API 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.
Verwenden Sie in den meisten Fällen keine CheckAndMutate
-Methoden zum Löschen von Daten. In den seltenen
für die Sie starke Konsistenz benötigen,
Bedenken Sie jedoch, dass dies ressourcenintensiv ist und die Leistung
betroffen sind.
Wenn Sie Daten mit MutateRows
löschen möchten, senden Sie eine readRows
-Anfrage mit einem Filter, um festzulegen, was gelöscht werden soll, und senden Sie dann 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 alle Zellen aus einer Spalte gelöscht werden in Folge:
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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.
Python asyncio
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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Aus einer Spaltenfamilie löschen
Die folgenden Codebeispiele zeigen, wie Zellen aus einer Spaltenfamilie gelöscht werden in Folge:
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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.
Python asyncio
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
In den folgenden Code-Snippets wird gezeigt, 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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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.
Python asyncio
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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Durch Streaming und Batching löschen
Das Streaming und Batching von Löschanfragen ist oft die beste Methode, um 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 Garbage Collection zulassen.
Die folgenden Code-Snippets starten einen Datenstream (Zeilen lesen), gruppieren sie und löschen dann 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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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.
Python asyncio
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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 die die ID der autorisierten Ansicht.
Welche Daten Sie aus einer autorisierten Ansicht löschen können, wird durch die Definition der autorisierten Ansicht bestimmt. Sie können nur Daten löschen, die in
der autorisierten Ansicht. Wenn Sie versuchen, Daten zu löschen,
die Definition der autorisierten Ansicht unterliegen oder den folgenden Regeln unterliegt:
Der Fehler PERMISSION_DENIED
wird 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 es sich um Zeilen handelt, die sich in der autorisierten Ansicht befinden.
- Das Löschen aus einer Spaltenfamilie ist nur zulässig, wenn die angegebene Spaltenfamilie
ist so konfiguriert, dass alle Spaltenqualifizierpräfixe (
qualifier_prefixes=""
) zugelassen werden in der autorisierten Ansicht angezeigt.
Beispiel: Sie versuchen, aus einer bestimmten Zeile zu löschen und diese Zeile enthält Spalten in der zugrunde liegenden Tabelle, die nicht in Ihrem dann schlägt die Anfrage fehl.