Automatische Speicherbereinigung konfigurieren

Auf dieser Seite erfahren Sie, wie Sie Richtlinien für die automatische Speicherbereinigung in Bigtable anzeigen, festlegen und aktualisieren. Bevor Sie diese Seite lesen, sollten Sie mit der automatischen Speicherbereinigung vertraut sein.

Bevor Sie die cbt-Befehlszeile verwenden, folgen Sie der Einrichtungsanleitung, einschließlich der Schritte zum Erstellen einer .cbtrc-Datei.

Aktuelle Richtlinien für die automatische Speicherbereinigung ansehen

Sie können entweder die Google Cloud Console oder die cbtCLI verwenden, um die Richtlinien für die automatische Speicherbereinigung einer Spaltenfamilie anzuzeigen.

Console

So rufen Sie die aktuelle Richtlinie für die automatische Speicherbereinigung für eine Spaltenfamilie auf:

  1. Öffnen Sie in der Google Cloud Console die Liste der Bigtable-Instanzen.

    Liste der Instanzen öffnen

  2. Klicken Sie auf die Instanz, deren Tabellen Sie abrufen möchten.

  3. Klicken Sie im linken Bereich auf Tabellen.

    Die Seite "Tabellen" enthält eine Liste der in der Instanz vorhandenen Tabellen.

  4. Klicken Sie in der Tabellenzeile auf Bearbeiten.

  5. Klicken Sie neben der Spaltenfamilie, die Sie aufrufen möchten, auf Öffnen.

  6. Wenn Sie sich die Richtlinie für die automatische Speicherbereinigung angesehen haben, klicken Sie zum Beenden auf Abbrechen.

cbt

Sie können die aktuellen Richtlinien für die automatische Speicherbereinigung für eine bestimmte Tabelle ermitteln, indem Sie den folgenden Befehl ausführen und dabei eine gültige Tabellen-ID für TABLE_ID verwenden:

cbt ls TABLE_ID

Richtlinien zur automatischen Speicherbereinigung festlegen

Sie können Richtlinien für die automatische Speicherbereinigung über die Google Cloud -Konsole, die cbt-Befehlszeile oder die Cloud Bigtable-Clientbibliotheken festlegen.

Automatische Speicherbereinigung basierend auf dem Alter

Im folgenden Abschnitt wird gezeigt, wie das maximale Alter für Daten in einer Spaltenfamilie festgelegt wird.

Console

So legen Sie eine Ablaufzeit für Zellen in einer Spaltenfamilie fest:

  1. Öffnen Sie in der Google Cloud Console die Liste der Bigtable-Instanzen.

    Liste der Instanzen öffnen

  2. Klicken Sie auf die Instanz, deren Tabellen Sie abrufen möchten.

  3. Klicken Sie im linken Bereich auf Tabellen.

    Die Seite "Tabellen" enthält eine Liste der in der Instanz vorhandenen Tabellen.

  4. Klicken Sie auf edit (Bearbeiten).

  5. Klicken Sie neben der zu bearbeitenden Spaltenfamilie auf Öffnen.

  6. Wähle Altersbeschränkungsrichtlinie aus.

  7. Geben Sie das Alter ein, indem Sie eine Zahl in das Feld Höchstalter eingeben und im Drop-down Einheit die Zeiteinheit auswählen.

    Wenn Sie beispielsweise die Daten einer Spaltenfamilie 30 Minuten lang aufbewahren möchten, geben Sie 30 ein und wählen Sie Minuten aus.

  8. Klicken Sie auf Speichern.

cbt

In diesem Beispiel wird eine Spaltenfamilie mit dem Namen cf1 erstellt. Dann wird das maximale Alter für Daten in der Spaltenfamilie auf fünf Tage festgelegt. Damit wird BigQuery angewiesen, in allen Spalten dieser Spaltenfamilie alle Daten mit Zeitstempeln zu entfernen, die älter als fünf Tage sind.

cbt createfamily your-table cf1
cbt setgcpolicy your-table cf1 maxage=5d

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.

import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/bigtable"
)

func createFamilyGCMaxAge(w io.Writer, projectID, instanceID string, tableName string) error {
	// projectID := "my-project-id"
	// instanceID := "my-instance-id"
	// tableName := "my-table-name"

	ctx := context.Background()

	adminClient, err := bigtable.NewAdminClient(ctx, projectID, instanceID)
	if err != nil {
		return fmt.Errorf("bigtable.NewAdminClient: %w", err)
	}
	defer adminClient.Close()

	columnFamilyName := "cf1"
	if err := adminClient.CreateColumnFamily(ctx, tableName, columnFamilyName); err != nil {
		return fmt.Errorf("CreateColumnFamily(%s): %w", columnFamilyName, err)
	}

	// Set a garbage collection policy of 5 days.
	maxAge := time.Hour * 24 * 5
	policy := bigtable.MaxAgePolicy(maxAge)
	if err := adminClient.SetGCPolicy(ctx, tableName, columnFamilyName, policy); err != nil {
		return fmt.Errorf("SetGCPolicy(%s): %w", policy, err)
	}

	fmt.Fprintf(w, "created column family %s with policy: %v\n", columnFamilyName, policy)
	return nil
}

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.

// Creates a column family with GC policy : maximum age
// where age = current time minus cell timestamp

// Defines the GC rule to retain data with max age of 5 days.
GcRule maxAgeRule = GcRuleBuilder.maxAge(Duration.ofDays(5));

// Creates column family with given GC rule.
try {
  String tableName =
      "projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId;
  ModifyColumnFamiliesRequest request =
      ModifyColumnFamiliesRequest.newBuilder()
          .setName(tableName)
          .addModifications(
              ModifyColumnFamiliesRequest.Modification.newBuilder()
                  .setId(COLUMN_FAMILY_1)
                  .setCreate(ColumnFamily.newBuilder().setGcRule(maxAgeRule)))
          .build();
  adminClient.modifyColumnFamilies(request);
  System.out.println("Created column family: " + COLUMN_FAMILY_1);
} catch (AlreadyExistsException e) {
  System.err.println(
      "Failed to create column family with rule, already exists: " + e.getMessage());