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
  • Zeitpunkt des Entfernens 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 Cloud 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 eine 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 entfernt 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 durchgeführt wird und für die automatische Speicherbereinigung vorgesehene Daten entfernt 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 Cloud Bigtable kann der Schnittbereich einer Zeile und einer Spalte mehrere Zellen umfassen, bei denen es sich um verschiedene Versionen des Werts in diesem Schnittbereich handelt. 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 Cloud 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 (time to live, TTL) für Daten fest. Cloud 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 Cloud Bigtable während der automatischen Speicherbereinigung die Spaltenfamilie prüft und in die Passwortspalte eine sechste Zelle geschrieben wurde, wird die älteste Zelle durch die automatische Speicherbereinigung entfernt, um die Anzahl der Versionen 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 alle Daten entfernt, die mit allen Regeln des jeweiligen Regelsatzes übereinstimmen. Angenommen, Sie möchten Profile entfernen, die älter als 30 Tage sind, aber für jeden Nutzer immer mindestens ein Profil behalten. 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

Durch eine Union-Richtlinie für die automatische Speicherbereinigung werden alle Daten entfernt, die mit mindestens einer der Regeln des jeweiligen Regelsatzes übereinstimmen. 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 müsste sich die Union-Richtlinie danach richten, ob der Wert abgelaufen oder die maximale Anzahl von Versionen überschritten ist.

Standardeinstellungen für die automatische Speicherbereinigung

Es gibt keine Standard-TTL für eine Spaltenfamilie. Die Standardanzahl der Versionen 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 Cloud Bigtable nur die neueste Version 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 Cloud Bigtable eine unbegrenzte Anzahl von Versionen jedes Werts bei. Dies schließt Spaltenfamilien ein, die mit gcloud und dem cbt-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.

Zeitpunkt des Entfernens von Daten

Die automatische Speicherbereinigung ist ein kontinuierlicher Prozess, bei dem Cloud Bigtable die Regeln für jede Spaltenfamilie prüft und abgelaufene und veraltete Daten entsprechend entfernt. Im Allgemeinen kann es bis zu eine 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 eine Woche dauern kann, bis Daten durch die automatische Speicherbereinigung 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 eine Woche dauern, bis die älteste Zelle durch die automatische Speicherbereinigung gelöscht wird. Wenn 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 durchgeführt wurde und die für die automatische Speicherbereinigung vorgesehenen Daten entfernt wurden.

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 Daten durch die automatische Speicherbereinigung gelöscht wurden, 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 Cloud 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 für Tabellen in replizierten Instanzen einige Einschränkungen. 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 eine Woche dauern, bis alle replizierten Cluster die neue, niedrigere Anzahl widerspiegeln. Daher sollten Sie beim Lesen der Daten immer Filter verwenden.

Mit Cloud Bigtable können Sie nicht die TTL für eine Spaltenfamilie in einer replizierten Tabelle 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 Cloud Bigtable keine altersbasierte Richtlinie der automatischen Speicherbereinigung für eine Spaltenfamilie einer replizierten Tabelle löschen.

Weitere Informationen