Automatische Speicherbereinigung – Übersicht

Auf dieser Seite wird beschrieben, wie die automatische Speicherbereinigung in Bigtable funktioniert. Dabei werden folgende Themen behandelt:

  • Arten der automatischen Speicherbereinigung
  • Standardeinstellungen für die automatische Speicherbereinigung
  • Zeitpunkt zum Löschen von Daten
  • Änderungen an den Richtlinien der automatischen Speicherbereinigung für replizierte Tabellen

Übersicht über die automatische Speicherbereinigung

Bei der automatischen Speicherbereinigung handelt es sich um den automatischen, fortlaufenden Prozess, bei dem abgelaufene und veraltete Daten aus Bigtable-Tabellen entfernt werden. Eine Richtlinie für die automatische Speicherbereinigung ist ein Satz von Regeln, die Sie erstellen, wenn Daten in einer bestimmten Spaltenfamilie nicht mehr benötigt werden.

Die automatische Speicherbereinigung ist ein integrierter, asynchroner Hintergrundprozess. Es kann bis zu einer Woche dauern, bis Daten, die für die automatische Speicherbereinigung vorgesehen sind, tatsächlich entfernt werden. Die automatische Speicherbereinigung erfolgt nach einem festen Zeitplan, der nicht davon abhängt, wie viele Daten entfernt werden müssen. Solange die Daten nicht gelöscht wurden, werden sie in den Leseergebnissen angezeigt. Sie können die Leseergebnisse filtern, um diese Daten auszuschließen.

Dies sind Vorteile von Richtlinien für die automatische Speicherbereinigung:

  • Minimierung der Zeilengröße: Sie möchten immer vermeiden, dass die Zeilengröße unbegrenzt zunimmt. Große Zeilen wirken sich negativ aus. Im Idealfall sollte eine Zeile niemals größer als 100 MB sein. Das Limit beträgt 256 MB. Wenn Sie keine alten Daten und keine alten Versionen Ihrer aktuellen Daten aufbewahren müssen, können Sie mithilfe der automatischen Speicherbereinigung die Größe jeder Zeile minimieren.
  • Niedrigere Kosten: Durch die automatische Speicherbereinigung wird dafür gesorgt, dass Sie nicht für die Speicherung von Daten bezahlen müssen, die nicht mehr benötigt oder verwendet werden. Die Speicherung abgelaufener oder veralteter Daten wird Ihnen in Rechnung gestellt, bis die Verdichtung erfolgt und für die automatische Speicherbereinigung geeignete Daten gelöscht werden. Dieser Vorgang dauert in der Regel einige Tage, kann aber bis zu einer Woche in Anspruch nehmen.

Sie können Richtlinien für die automatische Speicherbereinigung entweder programmatisch oder über die cbt-Befehlszeile festlegen. Richtlinien für die automatische Speicherbereinigung werden auf der Ebene der Spaltenfamilie festgelegt.

Für jede Spaltenfamilie in einer Tabelle gilt eine eigene Richtlinie für die automatische Speicherbereinigung. Bei der automatischen Speicherbereinigung wird für jede Spaltenfamilie die aktuelle Richtlinie für die automatische Speicherbereinigung geprüft und anschließend werden die Daten gemäß den Regeln der Richtlinie entfernt.

Zeitstempel

In Bigtable kann der Schnittbereich einer Zeile und einer Spalte mehrere Zellen umfassen, die Zeitstempelversionen des Werts für diesen Schnittbereich enthalten. Jede Zelle hat einen Zeitstempel. Ein Zeitstempel ist die Anzahl der Mikrosekunden seit der Unix-Epoche 1970-01-01 00:00:00 UTC. Sie können Standardzeitstempel verwenden oder Zeitstempel beim Senden von Schreibanfragen festlegen.

Ein Zeitstempel, den Sie an Bigtable senden, muss ein Mikrosekundenwert sein und darf höchstens eine Genauigkeit im Millisekundenbereich haben. Ein Zeitstempel mit einer Genauigkeit von Mikrosekunden wie 3023483279876543 wird abgelehnt. In diesem Beispiel ist der zulässige Zeitstempelwert 3023483279876000.

Das Zeitstempelattribut einer Zelle kann ein "echter" Zeitstempel, der den tatsächlichen Zeitpunkt angibt, zu dem der Wert für die Zelle geschrieben wurde, oder ein "künstlicher" Zeitstempel sein. Künstliche Zeitstempel können z. B. fortlaufende Nummern, Nullen oder wie Zeitstempel formatierte Werte sein, die nicht den tatsächlichen Zeitpunkt angeben, zu dem die Zelle geschrieben wurde. Bevor Sie künstliche Zeitstempel verwenden, sehen Sie sich die Anwendungsfälle für künstliche Zeitstempel an und beachten Sie auch die Risiken bei ihrer Verwendung:

Achten Sie darauf, beim Senden von Schreibanfragen einen Standardzeitstempel festzulegen, es sei denn, Sie müssen einen Anwendungsfall mit künstlichen Zeitstempeln unterstützen.

Arten der automatischen Speicherbereinigung

In diesem Abschnitt werden die in Bigtable verfügbaren Arten der automatischen Speicherbereinigung beschrieben. Codebeispiele für jeden Typ von automatischer Speicherbereinigung finden Sie unter Automatische Speicherbereinigung konfigurieren.

Ablaufende Werte (altersbasiert)

Sie können eine Regel für die automatische Speicherbereinigung basierend auf dem Zeitstempel der jeweiligen Zelle festlegen. Angenommen, Sie möchten keine Zellen mit Zeitstempeln beibehalten, deren Datum und Uhrzeit mehr als 30 Tage in der Vergangenheit liegt. Bei dieser Art von Regel für die automatische Speicherbereinigung legen Sie die Gültigkeitsdauer (TTL) für Daten fest. Bigtable prüft während der automatischen Speicherbereinigung jede Spaltenfamilie und entfernt alle abgelaufenen Zellen.

Anzahl der Versionen

Sie können eine Regel für die automatische Speicherbereinigung festlegen, die explizit die maximale Anzahl von Zellen angibt, die für alle Spalten in einer Spaltenfamilie aufbewahrt werden sollen.

Wenn Sie beispielsweise nur den neuesten Nutzernamen und die neueste E-Mail-Adresse für einen Kunden behalten möchten, können Sie eine Spaltenfamilie erstellen, die diese beiden Spalten enthält, und die maximale Anzahl von Werten für diese Spaltenfamilie auf 1 setzen.

In einem anderen Fall möchten Sie vielleicht die letzten fünf Versionen des Passwort-Hashs eines Nutzers beibehalten, um sicherzustellen, dass er Passwörter nicht wiederverwendet. Daher setzen Sie die maximale Anzahl von Versionen für die Spaltenfamilie mit der Passwortspalte auf 5. Wenn Bigtable während der automatischen Speicherbereinigung die Spaltenfamilie prüft und in die Passwortspalte eine sechste Zelle geschrieben wurde, wird die älteste Zelle entfernt, um die Anzahl der Zellen auf fünf zu beschränken.

Kombinationen von Ablauf- und Versionsnummerregeln

Sie können eine Kombination aus Ablauf- und Versionsnummerregeln für die automatische Speicherbereinigung verwenden. Die Kombinationstypen sind Intersection, Union und Nested. Konfigurationsbeispiele finden Sie unter Automatische Speicherbereinigung basierend auf mehreren Kriterien.

Kreuzung

Durch eine Intersection-Richtlinie für die automatische Speicherbereinigung werden Daten zum Löschen hervorgehoben, wenn alle Kriterien in einem bestimmten Satz von Regeln erfüllt sind. Angenommen, Sie möchten Profile entfernen, die älter als 30 Tage sind, aber für jeden Nutzer immer mindestens ein Profil beibehalten. In diesem Fall würde Ihre Intersection-Richtlinie für die Spaltenfamilie, die die Profilspalte enthält, eine Regel für einen ablaufenden Wert sowie eine Regel für die Anzahl der Versionen umfassen.

Union

Eine Union-Richtlinie für die automatische Speicherbereinigung markiert Daten zum Löschen, wenn sie ein beliebiges Element in einem bestimmten Satz erfüllen. Angenommen, Sie möchten maximal zwei Seitenaufrufdatensätze pro Nutzer speichern, gleichzeitig aber nur solche, die weniger als 30 Tage alt sind. In diesem Fall ist Ihre Union-Richtlinie für einen ablaufenden Wert oder für eine Reihe von Versionen festgelegt.

Nested

Eine Nested-Richtlinie für die automatische Speicherbereinigung besteht aus einer Kombination von Union- und Intersection-Richtlinien.

Standardeinstellungen für die automatische Speicherbereinigung

Es gibt keine Standard-TTL für eine Spaltenfamilie. Die Standardanzahl der Zellen für eine Spalte hängt davon ab, wie Sie die Spaltenfamilie erstellen, in der sich die Spalte befindet. Dies wird in den folgenden Abschnitten erläutert.

HBase-Richtlinie

Wenn Sie die Spaltenfamilie mit dem HBase-Client für Java, der HBase-Shell oder einem anderen Tool, das den HBase-Client für Java verwendet, erstellen, behält Bigtable nur die neueste Zelle jedes Werts in der Spaltenfamilie bei, sofern Sie die Regel nicht ändern. Diese Standardeinstellung stimmt mit HBase überein.

Alle anderen Clientbibliotheken oder Tools

Wenn Sie die Spaltenfamilie mit einer anderen Clientbibliothek oder einem anderen Tool erstellen, behält Bigtable die unbegrenzte Anzahl von Zellen in jeder Spalte in der Spaltenfamilie bei. Dies gilt auch für Spaltenfamilien, die mit gcloud und der cbt-Befehlszeile erstellt wurden. Sie müssen die Richtlinie für die automatische Speicherbereinigung für die Spaltenfamilie ändern, wenn Sie die Anzahl der Versionen begrenzen möchten.

Zeitpunkt zum Löschen von Daten

Die automatische Speicherbereinigung ist ein kontinuierlicher Prozess, bei dem Bigtable die Regeln für jede Spaltenfamilie prüft und abgelaufene und veraltete Daten entsprechend entfernt. Im Allgemeinen kann es bis zu einer Woche dauern, bis die Daten, die die Kriterien in den Regeln erfüllen, tatsächlich entfernt werden. Den zeitlichen Ablauf der automatischen Speicherbereinigung können Sie nicht ändern.

Da es bis zu einer Woche dauern kann, bis Daten gelöscht werden, sollten Sie sich niemals allein auf Richtlinien für die automatische Speicherbereinigung verlassen, wenn sichergestellt werden soll, dass bei Leseanfragen die gewünschten Daten zurückgegeben werden. Wenden Sie auf Ihre Leseanfragen immer einen Filter an, durch den dieselben Werte wie durch Ihre Regeln für die automatische Speicherbereinigung ausgeschlossen werden. Sie können zur Filterung die Anzahl der Zellen pro Spalte begrenzen oder einen Zeitstempelbereich angeben.

Angenommen, die Regel für die automatische Speicherbereinigung einer Spaltenfamilie besagt, dass nur die fünf neuesten Versionen eines Profils beibehalten werden, und es sind bereits fünf Versionen gespeichert. Nachdem eine neue Version des Profils geschrieben wurde, kann es bis zu einer Woche dauern, bis die älteste Zelle gelöscht wird. Wenn Sie vermeiden möchten, dass der sechste Wert gelesen wird, sollten Sie immer alles außer den fünf neuesten Versionen herausfiltern.

Die Speicherung abgelaufener Daten wird Ihnen in Rechnung gestellt, bis die Verdichtung erfolgt und die Daten gelöscht werden.

Die automatische Speicherbereinigung erfolgt rückwirkend: Wenn eine neue Richtlinie für die automatische Speicherbereinigung festgelegt ist, wird sie im Laufe der nächsten Tage auf alle Daten in der Tabelle angewendet. Wenn die neue Richtlinie restriktiver als die vorherige Richtlinie ist, werden im Rahmen der Hintergrundarbeit alte Daten entfernt. Dies wirkt sich auf Daten aus, die vor der Richtlinienänderung geschrieben wurden.

Wenn Sie prüfen möchten, ob für die automatische Speicherbereinigung hervorgehobene Daten gelöscht werden, können Sie Ihre Tabelle abfragen und die Daten mit den erwarteten Ergebnissen vergleichen. Sie können auch die Tabellengröße in der Google Cloud Console beobachten. Wenn eine Tabelle nie kleiner wird, kann dies bedeuten, dass die Richtlinie für die automatische Speicherbereinigung nicht wie erwartet funktioniert. Denken Sie aber daran, dass die automatische Speicherbereinigung verzögert durchgeführt wird.

Replikation und automatische Speicherbereinigung

Die Replikation kann sich auf verschiedene Arten auf die automatische Speicherbereinigung auswirken.

Versionsbasierte automatische Speicherbereinigung und CPU-Nutzung

In einer Instanz mit Replikation werden Löschvorgänge aus der versionsbasierten automatischen Speicherbereinigung auf dieselbe Weise in alle Cluster in der Instanz repliziert, wie Anwendungsanfragen repliziert werden. Wenn Sie schnell neue Zellen schreiben, die dazu führen, dass ältere Zellen zum Löschen markiert werden, erhöht sich möglicherweise die CPU-Auslastung, wenn Bigtable die veralteten Zellen löscht und diese Löschvorgänge in anderen Clustern in der Instanz repliziert. Bereiten Sie sich auf diese Erhöhung der CPU-Auslastung vor, wenn Sie einen Cluster einer Instanz hinzufügen, die Tabellen enthält, die eine versionsbasierte automatische Speicherbereinigung verwenden.

Die altersbasierte automatische Speicherbereinigung hingegen erhöht nicht die CPU-Auslastung in replizierten Instanzen.

Versionsbasierte Richtlinien für die automatische Speicherbereinigung ändern

Sie können die maximale Anzahl von Versionen einer Spaltenfamilie in einer replizierten Tabelle ändern. Wenn Sie jedoch die Anzahl der Versionen für eine Spaltenfamilie verringern, kann es bis zu einer Woche dauern, bis alle replizierten Cluster die neue, niedrigere Anzahl widerspiegeln. Daher sollten Sie beim Lesen der Daten immer Filter verwenden.

Altersbasierte Richtlinien für die automatische Speicherbereinigung ändern

Sie können die in den Richtlinien für die automatische Speicherbereinigung angegebene Aufbewahrungsdauer unabhängig davon erhöhen oder verringern, ob die Instanz Replikation verwendet. Sie können auch eine altersbasierte Richtlinie für die automatische Speicherbereinigung löschen.

Aufbewahrungsdauer verringern

Wenn Sie die Aufbewahrungsdauer in einer altersbasierten Richtlinie verkürzen, kann es bis zu einer Woche dauern, bis alle Cluster synchronisiert sind und die neue Richtlinie verwenden.

Aufbewahrungsdauer verlängern

In einer replizierten Tabelle können Sie die Aufbewahrungsdauer einer Richtlinie für die automatische Speicherbereinigung um maximal 90 Tage erhöhen.

Wenn Sie die Aufbewahrungsdauer für eine Spaltenfamilie erhöhen, beachten Sie, dass Ihre Cluster möglicherweise länger als eine Woche nicht mehr synchronisiert sind. Wenn Sie die Ursache dafür herausfinden möchten, stellen Sie sich einen hypothetischen Fall vor, bei dem Sie eine Tabelle in einer Instanz mit zwei Clustern haben und die Aufbewahrungsdauer einer Spaltenfamilie von 30 auf 50 Tage ändern:

  1. Eine Schreibanfrage für den Zeilenschlüssel ip#685 wird mit dem Wert 2023-01-02 für die Spalte click-through in der Spaltenfamilie profile an Cluster A gesendet. Die Daten werden in Cluster B repliziert.
  2. 31 Tage später erfolgt in Cluster A eine automatische Speicherbereinigung und der Wert in der Spalte click-through wird als abgelaufen betrachtet und gelöscht.
  3. Sie ändern die Richtlinie für die automatische Speicherbereinigung für die Spaltenfamilie profile und erhöhen die TTL von 30 auf 50 Tage.
  4. Ein Tag später wird die automatische Speicherbereinigung in Cluster B ausgeführt. Da die TTL 50 Tage beträgt, wird der Wert 2023-01-02 beibehalten.
  5. Die Cluster sind jetzt nicht mehr synchron und bleiben so fast 20 Tage lang, bis der in Cluster B, aber nicht in Cluster A vorhandene Wert schließlich gelöscht wird.

Nächste Schritte