Automatische Speicherbereinigung

Auf dieser Seite wird beschrieben, wie die automatische Speicherbereinigung in Cloud Bigtable funktioniert, und es werden die folgenden Themen behandelt:

  • Arten der automatischen Speicherbereinigung
  • Standardeinstellungen für die automatische Speicherbereinigung
  • Wenn Daten gelöscht werden
  • Ä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 mit dem cbt-Tool festlegen. Richtlinien für die automatische Speicherbereinigung werden auf der Ebene der Spaltenfamilien 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 mit Zeitstempel versehene Versionen 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.

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:

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 aktuellen Nutzernamen und die aktuelle E-Mail-Adresse eines Kunden speichern möchten, können Sie eine Spaltenfamilie erstellen, die diese zwei Spalten enthält, und die maximale Anzahl von Werten für die 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

Es stehen zwei Arten von Richtlinien für die automatische Speicherbereinigung zur Verfügung, mit denen diese Arten von Regeln für die automatische Speicherbereinigung kombiniert werden können: Intersection und Union.

Intersection

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 hebt Daten zum Löschen hervor, 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.

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 schließt Spaltenfamilien ein, die mit gcloud und dem cbt tool-Tool erstellt wurden. Sie müssen die Richtlinie der automatischen Speicherbereinigung für die Spaltenfamilie ändern, wenn Sie die Anzahl der Versionen begrenzen möchten.

Wenn Daten gelöscht werden

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.

Änderungen an den Richtlinien der automatischen Speicherbereinigung für replizierte Tabellen

Mit Bigtable können Sie eine Richtlinie für eine Spaltenfamilie jederzeit ändern oder löschen, wenn sich die Tabelle in einer Instanz mit einem einzelnen Cluster befindet. Andererseits gelten einige Einschränkungen für Tabellen in Instanzen, die Replikation verwenden. Diese Einschränkungen schützen Ihre Daten.

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.

In Bigtable können Sie die TTL für eine Spaltenfamilie in einer replizierten Tabelle nicht erhöhen. Wenn Sie den Grund dafür verstehen möchten, stellen Sie sich vor, dass Sie die TTL einer Spaltenfamilie von 30 Tagen auf 60 Tage erhöhen möchten. Die altersbasierte automatische Speicherbereinigung kann in jedem Cluster separat ausgeführt werden. Dann kann zu dem Zeitpunkt, zu dem Sie die Richtlinie ändern, durch die automatische Speicherbereinigung ein 31 Tage alter Wert in der einen Kopie einer Tabelle entfernt worden sein, in einer anderen jedoch nicht. In diesem Fall führt das Ändern der Richtlinien für die automatische Speicherbereinigung möglicherweise dazu, dass die Kopien fast einen Monat lang nicht synchron sind.

Aus demselben Grund können Sie in Bigtable keine altersbasierte Richtlinie der automatischen Speicherbereinigung für eine Spaltenfamilie einer replizierten Tabelle löschen.

Nächste Schritte