Löschvorgänge
In diesem Dokument wird beschrieben, wie Sie Daten löschen, die in Bigtable-Tabellen gespeichert sind. Außerdem wird erläutert, wann Sie die einzelnen Methoden verwenden sollten, und es werden Beispiele bereitgestellt. Bevor Sie diese Seite lesen, sollten Sie sich mit der Bigtable-Übersicht vertraut machen und die Konzepte des Schemadesigns verstehen.
Aus Gründen der Einheitlichkeit beziehen sich die Beschreibungen auf dieser Seite auf die API-Methoden, die für die einzelnen Anfragetypen verwendet werden. Wir empfehlen Ihnen jedoch dringend, immer eine der Bigtable-Clientbibliotheken zu verwenden, um auf die Bigtable-APIs zuzugreifen, anstatt REST oder RPC zu verwenden.
In den Beispielen auf dieser Seite werden Beispieldaten verwendet, die den Daten ähneln, die Sie in Bigtable speichern könnten.
Informationen dazu, wie oft Sie die auf dieser Seite beschriebenen Vorgänge pro Tag verwenden 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 einer Woche später während der Kompaktierung entfernt. Das ist ein Hintergrundprozess, der die Tabelle kontinuierlich optimiert. Löschmetadaten können dazu führen, dass Ihre Daten einige Tage nach dem Senden einer Löschanfrage etwas mehr Speicherplatz belegen (einige KB pro Zeile), 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.
Einen Bereich von Zeilen löschen
Wenn Sie eine große Menge an Daten löschen möchten, die in zusammenhängenden Zeilen gespeichert sind, verwenden Sie dropRowRange
. Bei diesem Vorgang werden alle Zeilen für einen Zeilenbereich gelöscht, der durch einen Start- und Endzeilenschlüssel oder ein Zeilenschlüsselpräfix angegeben wird.
Die Zeilenschlüsselwerte, die Sie beim Löschen eines Zeilenbereichs angeben, werden als Dienstdaten behandelt. Informationen zum Umgang mit Dienstdaten finden Sie in den Google Cloud -Datenschutzhinweisen.
Nachdem die Löschung erfolgreich abgeschlossen wurde und Sie eine Antwort erhalten haben, können Sie Daten in denselben Zeilenbereich schreiben.
Für den Vorgang dropRowRange
gelten die folgenden Einschränkungen:
- Sie können keinen Bereich von Zeilen aus einer autorisierten Ansicht löschen.
- Sie können die Methode
dropRowRange
nicht asynchron aufrufen. Wenn Sie einedropRowRange
-Anfrage an eine Tabelle senden, während eine andere Anfrage läuft, 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. - Bei Instanzen, die Replikation verwenden, kann es aufgrund erhöhter Replikationslatenz und CPU-Auslastung lange dauern, bis Bigtable den Vorgang abgeschlossen hat. Wenn Sie Daten aus einer Instanz löschen möchten, die die Replikation verwendet, 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 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 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 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, ist es oft am besten, Daten mit einer Methode zu löschen, die die Cloud Bigtable API (Data API) aufruft. Verwenden Sie diese Methoden, wenn Sie in einer Anfrage MB statt GB an Daten löschen. Das Löschen von Daten aus einer Spalte (nicht Spaltenfamilie) ist nur über die Data API möglich.
Data API-Methoden rufen MutateRows
mit einem von drei Mutationstypen auf:
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
Eine Löschanfrage über die 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.
In den meisten Fällen sollten Sie CheckAndMutate
-Methoden zum Löschen von Daten vermeiden. In dem seltenen Fall, dass Sie eine starke 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 festzulegen, was Sie löschen möchten, 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 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 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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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 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 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 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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Aus einer Zeile löschen
Die folgenden Code-Snippets zeigen, 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 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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Löschen durch Streaming und Batching
Das Streamen und Batching von Löschanfragen ist oft die beste Methode zum Löschen großer Datenmengen. Diese Strategie kann nützlich sein, wenn Sie detailliertere Anforderungen an die Datenaufbewahrung haben, als die Richtlinien für die automatische Speicherbereinigung zulassen.
Wenn Ihre Anwendung in Java geschrieben ist, können Sie die Flusssteuerung für Batch-Schreibvorgänge aktivieren, wenn Sie Batch-Löschvorgänge an Bigtable senden. Weitere Informationen finden Sie unter Batch-Schreibvorgänge steuern und Batch-Schreibvorgänge steuern.
In den folgenden Codebeispielen wird ein Datenstream gestartet (Zeilen werden gelesen), die Daten werden in Batches zusammengefasst und dann wird der Batch durchlaufen und alle Zellen in Spalte data_plan_01gb1
in der Spaltenfamilie cell_plan
werden gelöscht:
Go
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.
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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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 auch 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 begrenzt. 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 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 in der autorisierten Ansicht handelt.
- 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, eine bestimmte Zeile zu löschen, und diese Zeile Spalten in der zugrunde liegenden Tabelle enthält, die nicht in Ihrer autorisierten Ansicht enthalten sind, schlägt die Anfrage fehl.