Löschvorgänge
In diesem Dokument wird anhand von Beispielen beschrieben, wie Sie in Bigtable-Tabellen gespeicherte Daten löschen. Außerdem wird erläutert, wann Sie welchen Ansatz verwenden sollten. Bevor Sie diese Seite lesen, sollten Sie sich mit den Informationen unter Bigtable-Übersicht und mit den Konzepten des Schemadesign vertraut gemacht haben.
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 dringend, für den Zugriff auf die Bigtable APIs immer eine der Bigtable-Clientbibliotheken zu verwenden, anstatt REST oder RPC zu verwenden.
Die Beispiele auf dieser Seite verwenden Beispieldaten, die den Daten ähneln, die Sie in Bigtable speichern können.
Unter Kontingente und Limits erfahren Sie, wie oft Sie die auf dieser Seite beschriebenen Vorgänge pro Tag nutzen können.
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 während der Verdichtung entfernt, einem Hintergrundprozess, durch den die Tabelle kontinuierlich optimiert wird. 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 immer eine Löschanfrage senden, auch wenn Ihr Cluster das Speicherlimit überschritten hat und Lese- und Schreibvorgänge blockiert werden.
Zeilenbereich löschen
Wenn Sie eine große Menge an in zusammenhängenden Zeilen gespeicherten Daten löschen möchten, verwenden Sie dropRowRange
. Durch diesen Vorgang werden alle Zeilen für einen Zeilenbereich gelöscht, der durch eine Start- und eine Endzeile oder ein Zeilenschlüsselpräfix gekennzeichnet ist.
Die Zeilenschlüsselwerte, die Sie beim Löschen eines Zeilenbereichs angeben, werden als Dienstdaten behandelt. Informationen dazu, wie Dienstdaten verwendet werden, finden Sie in den Datenschutzhinweisen für Google Cloud.
Nachdem ein erfolgreicher Löschvorgang abgeschlossen ist und Sie eine Antwort erhalten, können Sie Daten sicher in denselben Zeilenbereich schreiben.
Für den dropRowRange
-Vorgang gelten die folgenden Einschränkungen:
- Es ist nicht möglich, einen Bereich von Zeilen aus einer autorisierten Ansicht zu löschen.
- Sie können die Methode
dropRowRange
nicht asynchron aufrufen. Wenn Sie einedropRowRange
-Anfrage an eine Tabelle senden, während eine andere Anfrage in Bearbeitung ist, gibt Bigtable einenUNAVAILABLE
-Fehler mit der MeldungA DropRowRange operation is already ongoing
zurück. Senden Sie die Anfrage noch einmal, um den Fehler zu beheben. - Beachten Sie bei Instanzen mit Replikation, dass Bigtable aufgrund der erhöhten Replikationslatenz und CPU-Auslastung lange zum Abschluss des Vorgangs benötigt. Wenn Sie Daten aus einer Instanz mit Replikation löschen möchten, verwenden Sie die Data API, um Ihre Daten zu lesen und dann 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 MB und nicht GB an Daten in einer Anfrage löschen. Daten aus einer Spalte (nicht aus Spaltenfamilien) können nur über die Data API gelöscht werden.
Data 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 zum Löschen von Daten verwenden. In dem seltenen Fall, dass starke Konsistenz erforderlich ist, 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 alle Zellen aus einer Spalte einer Zeile gelöscht werden:
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.
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 Spaltenfamilie löschen
Die folgenden Codebeispiele zeigen, wie Zellen aus einer Spaltenfamilie in einer Zeile gelöscht werden:
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.
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
Die folgenden Code-Snippets veranschaulichen, wie alle Zellen aus einer Zeile gelöscht werden:
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.
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.
Durch Streaming und Batching löschen
Das Streaming und die Batchverarbeitung von Löschanfragen ist oft 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 Datenstrom (Lesezugriff), einen Batch-Vorgang und löschen dann alle Zellen in Spalte data_plan_01gb1
der Spaltenfamilie cell_plan
im Batch:
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.
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.
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 außerhalb der Definition der autorisierten Ansicht liegen oder den folgenden Regeln unterliegen, wird der Fehler PERMISSION_DENIED
zurückgegeben:
- Das Löschen eines Bereichs von Zeilen aus einer autorisierten Ansicht mithilfe von
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, solange dies für Zeilen in der autorisierten Ansicht gilt.
- Das Löschen aus einer Spaltenfamilie ist nur zulässig, wenn die angegebene Spaltenfamilie so konfiguriert ist, dass alle Spaltenqualifizierprä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.