Daten-Placements erstellen und verwalten

Auf dieser Seite wird beschrieben, wie Sie Datenplacements in Spanner erstellen und verwalten.

Weitere Informationen zur Funktionsweise der Geopartitionierung finden Sie in der Übersicht zur Geopartitionierung.

Datenplacement erstellen

Nachdem Sie Ihre Spanner-Instanzpartitionen und -Datenbanken erstellt haben, erstellen Sie Ihr Placement.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzen auf.

    Instanzen

  2. Wählen Sie die Instanz mit den vom Nutzer erstellten Instanzpartitionen aus.

  3. Wählen Sie die Datenbank aus, in der Sie Daten partitionieren möchten.

  4. Klicken Sie im Navigationsmenü auf Spanner Studio.

  5. Klicken Sie auf der Seite Spanner Studio auf Neuer Tab hinzufügen oder verwenden Sie den leeren Editor-Tab.

  6. Geben Sie die CREATE PLACEMENT (GoogleSQL, PostgreSQL) DDL-Anweisung ein.

    Sie können beispielsweise Folgendes ausführen, um eine Placement-Tabelle europeplacement in der Instanzpartition europe-partition zu erstellen:

    GoogleSQL

    CREATE PLACEMENT europeplacement OPTIONS (instance_partition="europe-partition");
    

    PostgreSQL

    CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition');
    

    Optional: Sie können auch den Bereich Objekt-Explorer verwenden, um Ihre Placement-Objekte aufzurufen, zu suchen und mit ihnen zu interagieren. Weitere Informationen finden Sie unter Daten untersuchen.

  7. Klicken Sie auf Ausführen.

gcloud

Verwenden Sie gcloud spanner databases ddl update, um ein Placement mit dem Google Cloud CLI-Befehl zu erstellen.

Erstellen Sie beispielsweise ein Placement in der Instanzpartition europe-partition:

GoogleSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT europeplacement OPTIONS (instance_partition='europe-partition')"

PostgreSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition')"

Standard-Leader für ein Placement festlegen

Sie können die standardmäßige führende Region eines Placements festlegen, wenn sich der Standort in einer Dual-Region oder Multi-Region befindet. Die neue führende Region muss eine der beiden nicht schreibgeschützten Regionen innerhalb des Dual-Region- oder Multi-Region-Placement-Standorts sein. Weitere Informationen finden Sie in den Tabellen Verfügbare Konfigurationen für Dual-Regionen und Verfügbare Konfigurationen für Multi-Regionen.

Wenn Sie keine führende Region festlegen, verwendet Ihr Placement die standardmäßige führende Region, die durch den Standort angegeben wird. Eine Liste der führenden Region für jeden Dual-Region- oder Multi-Region-Standort finden Sie in den Tabellen Verfügbare Konfigurationen für Dual-Regionen und Verfügbare Konfigurationen für Multi-Regionen. Die standardmäßige führende Region wird mit einem L gekennzeichnet. Die standardmäßige führende Region von nam8 befindet sich beispielsweise in Los Angeles(us-west2). In der folgenden Anleitung wird beschrieben, wie Sie sie auf Oregon(us-west1) festlegen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzen auf.

    Instanzen

  2. Wählen Sie die Instanz mit den vom Nutzer erstellten Instanzpartitionen aus.

  3. Wählen Sie die Datenbank aus, in der Sie Daten partitionieren möchten.

  4. Klicken Sie im Navigationsmenü auf Spanner Studio.

  5. Klicken Sie auf der Seite Spanner Studio auf Neuer Tab hinzufügen oder verwenden Sie den leeren Editor-Tab.

  6. Geben Sie die CREATE PLACEMENT (GoogleSQL, PostgreSQL) DDL-Anweisung ein.

    Sie können beispielsweise Folgendes ausführen, um eine Placement-Tabelle nam8placement in der Instanzpartition nam8-partition zu erstellen, wobei der standardmäßige führende Standort auf us-west1 festgelegt ist:

    GoogleSQL

    CREATE PLACEMENT `nam8placement`
      OPTIONS (instance_partition="nam8-partition", default_leader="us-west1");
    

    PostgreSQL

    CREATE PLACEMENT nam8placement WITH (instance_partition='nam8-partition', default_leader='us-west1');
    

    Optional: Sie können auch den Bereich Objekt-Explorer verwenden, um Ihre Placement-Objekte aufzurufen, zu suchen und mit ihnen zu interagieren. Weitere Informationen finden Sie unter Daten untersuchen.

  7. Klicken Sie auf Ausführen.

gcloud

Verwenden Sie gcloud spanner databases ddl update, um ein Placement mit dem gcloud CLI-Befehl zu erstellen.

Erstellen Sie beispielsweise eine Placement-Tabelle nam8placement in der Instanzpartition nam8-partition, wobei der standardmäßige führende Standort auf us-west1 festgelegt ist:

GoogleSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT nam8placement \
     OPTIONS (instance_partition='nam8-partition', default_leader='us-west1')"

PostgreSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT nam8placement WITH (instance_partition='nam8-partition', default_leader='us-west1')"

Datenplacement löschen

Bevor Sie ein Placement löschen, müssen Sie alle Zeilendaten daraus entfernen. Danach können Sie das Google Cloud Console oder gcloud CLI löschen.

Console

  1. Klicken Sie im Navigationsmenü auf Spanner Studio.
  2. Klicken Sie auf der Seite Spanner Studio auf Neuer Tab hinzufügen oder verwenden Sie den leeren Editor-Tab.
  3. Geben Sie die DROP PLACEMENT(GoogleSQL, PostgreSQL) DDL-Anweisung ein.

    Sie können beispielsweise Folgendes ausführen, um die Placement-Tabelle europeplacement zu löschen:

    GoogleSQL

    DROP PLACEMENT europeplacement;
    

    PostgreSQL

    DROP PLACEMENT europeplacement;
    

gcloud

Verwenden Sie gcloud spanner databases ddl update, um ein Placement mit dem gcloud CLI-Befehl zu löschen.

Löschen Sie beispielsweise das Placement europeplacement:

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="DROP PLACEMENT europeplacement"

Fehler beim Löschen von Placements

Wenn das Placement verwendet wird, schlägt der DROP PLACEMENT Vorgang mit einer Fehlermeldung wie „Statement failed: Placement PLACEMENT_NAME cannot be dropped because it is in use by placement table PLACEMENT_TABLE_NAME.“ fehl. Gehen Sie in diesem Fall so vor:

  1. Ändern Sie Ihre Anwendung so, dass keine Zeilen mehr mit dem Placement eingefügt oder aktualisiert werden, das Sie löschen möchten.
  2. Entweder:

    • Verschieben Sie vorhandene Placement-Zeilen, die das zu löschende Placement verwenden, in ein anderes Placement mit einer partitionierten DML Anweisung wie der folgenden:

      UPDATE PLACEMENT_TABLE_NAME SET LOCATION = NEW_PLACEMENT_NAME
      WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
      
    • Löschen Sie die Placement-Zeilen mit einer partitionierten DML-Anweisung wie der folgenden:

      DELETE FROM PLACEMENT_TABLE_NAME
      WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
      

      Die vorherigen placementspezifischen DML-Anweisungen funktionieren nur mit partitionierter DML. Sie schlagen als reguläre DML-Anweisungen fehl. Weitere Informationen finden Sie unter Einschränkungen. Sie können auch die Mutations-API verwenden, um Placement-Zeilen zu verschieben oder zu löschen.

Vorgang DROP PLACEMENT abbrechen

Sie können einen Vorgang DROP PLACEMENT jederzeit abbrechen, bevor das Placement durch den Vorgang mit langer Ausführungszeit vollständig aus dem Datenbankschema gelöscht wird. Informationen zum Abrufen der Vorgangs-ID mit langer Ausführungszeit, um den Status zu prüfen oder den Vorgang abzubrechen, finden Sie unter Vorgänge mit langer Ausführungszeit verwalten und beobachten.

Tabelle mit einem Placement-Schlüssel erstellen

Console

  1. Klicken Sie im Navigationsmenü auf Spanner Studio.
  2. Klicken Sie auf der Seite Spanner Studio auf Neuer Tab hinzufügen oder verwenden Sie den leeren Editor-Tab.
  3. Geben Sie die CREATE TABLE (GoogleSQL, PostgreSQL) DDL-Anweisung ein.

    Sie können beispielsweise eine Tabelle Singers erstellen, die einen Placement-Schlüssel verwendet, um Sängerdaten zu partitionieren:

    GoogleSQL

    CREATE TABLE Singers (
      SingerId INT64 NOT NULL,
      SingerName STRING(MAX) NOT NULL,
      ...
      Location STRING(MAX) NOT NULL PLACEMENT KEY
    ) PRIMARY KEY (SingerId);
    

    PostgreSQL

    CREATE TABLE Singers (
      SingerId bigint PRIMARY KEY,
      SingerName varchar(1024),
      ...
      Location varchar(1024) NOT NULL PLACEMENT KEY
    );
    

gcloud

Verwenden Sie gcloud spanner databases ddl update, um eine Tabelle zu erstellen.

Sie können beispielsweise eine Tabelle Singers erstellen, die einen Placement-Schlüssel verwendet, um Sängerdaten zu partitionieren:

GoogleSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE TABLE Singers ( SingerId INT64 NOT NULL, SingerName STRING(MAX) NOT NULL, Location STRING(MAX) NOT NULL PLACEMENT KEY ) PRIMARY KEY (SingerId);"

PostgreSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE TABLE Singers ( SingerId bigint PRIMARY KEY, SingerName varchar(1024), Location varchar(1024) NOT NULL PLACEMENT KEY );"

Tabelle mit einem Placement-Schlüssel bearbeiten

Sie können einen Placement-Schlüssel nicht aus einer Tabelle löschen. Außerdem können Sie einer Tabelle nach dem Erstellen keinen Placement-Schlüssel hinzufügen. Sie können jedoch die ALTER TABLE (GoogleSQL, PostgreSQL) DDL-Anweisung verwenden, um andere Felder in der Tabelle zu ändern, z. B. durch Hinzufügen und Löschen von Spalten, die keine Placement-Schlüsselspalten sind.

Tabelle mit einem Placement-Schlüssel löschen

Bevor Sie eine Tabelle mit einem Placement-Schlüssel löschen, müssen Sie zuerst:

  1. Alle Zeilen in der Placement-Tabelle löschen.
  2. Warten Sie, bis der version_retention_period für die Datenbank abgelaufen ist. Weitere Informationen finden Sie unter Wiederherstellung zu einem bestimmten Zeitpunkt. Führen Sie dann die folgenden Schritte aus:

Console

  1. Klicken Sie im Navigationsmenü auf Spanner Studio.
  2. Klicken Sie auf der Seite Spanner Studio auf Neuer Tab hinzufügen oder verwenden Sie den leeren Editor-Tab.
  3. Geben Sie die DROP TABLE (GoogleSQL, PostgreSQL) DDL-Anweisung ein.

    Löschen Sie beispielsweise die Tabelle Singers:

    DROP TABLE Singers;
    

gcloud

Verwenden Sie gcloud spanner databases ddl update, um eine Tabelle zu löschen.

Löschen Sie beispielsweise die Tabelle Singers:

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="DROP TABLE Singers"

Zeile in eine Placement-Tabelle einfügen

Console

  1. Klicken Sie im Navigationsmenü auf Spanner Studio.
  2. Klicken Sie auf der Seite Spanner Studio auf Neuer Tab hinzufügen oder verwenden Sie den leeren Editor-Tab.
  3. Geben Sie die INSERT INTO (GoogleSQL, PostgreSQL) DDL-Anweisung ein.

    Fügen Sie beispielsweise der Tabelle Singers den Sänger Marc Richards hinzu und partitionieren Sie ihn in europeplacement:

    INSERT INTO Singers(SingerId, SingerName, Location)
    VALUES (1, 'Marc Richards', 'europeplacement')
    

gcloud

Verwenden Sie gcloud spanner rows insert, um Daten in eine Tabelle zu schreiben.

Fügen Sie beispielsweise der Tabelle Singers den Sänger Marc Richards hinzu und partitionieren Sie ihn in europeplacement:

gcloud spanner rows insert --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,SingerName='Marc Richards',Location='europeplacement'

Zeile in einer Placement-Tabelle aktualisieren

Console

  1. Klicken Sie im Navigationsmenü auf Spanner Studio.
  2. Klicken Sie auf der Seite Spanner Studio auf Neuer Tab hinzufügen oder verwenden Sie den leeren Editor-Tab.
  3. Verwenden Sie DML oder Mutationen, um Daten in einer Placement-Tabelle zu aktualisieren.

    Aktualisieren Sie beispielsweise den Namen von singerid=1 in der Tabelle Singers zu Catalina Smith:

    UPDATE Singers s
    SET s.name='Catalina Smith'
    WHERE s.id=1;
    

gcloud

Verwenden Sie gcloud spanner rows update, um Daten in einer Placement-Tabelle zu aktualisieren, .

Aktualisieren Sie beispielsweise den Namen von singerid=1 in der Tabelle Singers zu Catalina Smith:

gcloud spanner rows update --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,SingerName='Catalina Smith'

Zeile in einer Placement-Tabelle verschieben

Console

  1. Erstellen Sie eine neue Instanzpartition und ein neues Placement, falls noch nicht geschehen.
  2. Klicken Sie im Navigationsmenü auf Spanner Studio.
  3. Klicken Sie auf der Seite Spanner Studio auf Neuer Tab hinzufügen oder verwenden Sie den leeren Editor-Tab.
  4. Verwenden Sie DML oder Mutationen, um Daten in die neue Instanzpartition zu verschieben.

    Verschieben Sie beispielsweise singerid=1 in der Tabelle Singers nach asiaplacement:

    UPDATE Singers s
    SET s.location='asiaplacement'
    WHERE s.id=1;
    

gcloud

Nachdem Sie die Instanzpartition und das Placement erstellt haben, in die Sie Ihre Daten verschieben möchten , verwenden Sie gcloud spanner rows update.

Verschieben Sie beispielsweise singerid=1 in der Tabelle Singers nach asiaplacement:

gcloud spanner rows update --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,Location='asiaplacement'

Zeile in einer Placement-Tabelle löschen

Console

  1. Klicken Sie im Navigationsmenü auf Spanner Studio.
  2. Klicken Sie auf der Seite Spanner Studio auf Neuer Tab hinzufügen oder verwenden Sie den leeren Editor-Tab.
  3. Verwenden Sie DML oder Mutationen, um Daten zu löschen.

    Löschen Sie beispielsweise singerid=1 in der Tabelle Singers:

    DELETE FROM Singers s
    WHERE s.id=1;
    

gcloud

Verwenden Sie gcloud spanner rows delete, um Daten zu löschen.

Löschen Sie beispielsweise singerid=1 in der Tabelle Singers:

gcloud spanner rows delete --table=Singers --database=example-db \
  --instance=test-instance --keys=1

Daten in einer Placement-Tabelle abfragen

Console

  1. Klicken Sie im Navigationsmenü auf Spanner Studio.
  2. Klicken Sie auf der Seite Spanner Studio auf Neuer Tab hinzufügen oder verwenden Sie den leeren Editor-Tab.
  3. Führen Sie die Abfrage aus.

    Fragen Sie beispielsweise die Tabelle Singers ab:

    SELECT * FROM Singers s WHERE s.SingerId=1;
    

gcloud

Verwenden Sie gcloud spanner databases execute-sql, um Daten abzufragen.

Fragen Sie beispielsweise die Tabelle Singers ab:

gcloud spanner databases execute-sql example-db \
  --instance=test-instance \
  --sql='SELECT * FROM Singers s WHERE s.SingerId=1'

Nächste Schritte