Daten-Placements erstellen und verwalten

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

Weitere Informationen zur Funktionsweise der geografischen Partitionierung finden Sie unter Geografische Partitionierung – Übersicht.

Routing-Metadaten verwalten

Wenn Ihre Anwendung Daten lesen oder schreiben muss, verwendet Spanner Routing-Metadaten, um herauszufinden, auf welchen Servern sich die benötigten Zeilen befinden.

Die Entscheidung, wo sich Routing-Metadaten befinden, hängt davon ab, ob die meisten Clientanfragen Daten innerhalb oder außerhalb derselben Region betreffen und ob Sie eine multiregionale Konfiguration verwenden. Die Einstellungen für Routing-Metadaten wirken sich auf die Latenz aus und können nach dem Erstellen von Placements nicht mehr geändert werden.

Mit der Option per_placement_routing_metadata wird festgelegt, wo sich Routing-Metadaten gemäß den folgenden Einstellungen befinden:

  • TRUE: Wenn auf TRUE festgelegt, befinden sich die Routing-Metadaten in derselben Instanzpartition wie die Daten. Routing-Metadaten werden nach Region aufgeteilt. Dadurch wird die Latenz für Datenanfragen in der Region reduziert (d. h. der Client und die angeforderten Nutzerdaten befinden sich in derselben Region), sodass Spanner keine regionsfremden Aufrufe für Routing-Metadaten ausführen muss. Diese Einstellung kann jedoch die Latenz für Anfragen außerhalb der Region, für negative Suchvorgänge, bei denen keine Platzierungszeilen vorhanden sind, und für Abfragen, die einen globalen Index erfordern, erhöhen.

    Wir empfehlen diese Einstellung, wenn Sie erwarten, dass die meisten Anfragen für Nutzerdaten in derselben Region wie der Client gestellt werden, und Ihre Standardpartition keine Lese-/Schreib- oder schreibgeschützten Regionen hat, die sich am selben Standort wie alle Ihre Instanzpartitionen befinden.

  • FALSE: Routing-Metadaten sind in der Standardpartition zentralisiert.

    Wir empfehlen diese Einstellung, wenn Sie erwarten, dass Clients häufig Daten außerhalb der Region abrufen, z. B. ein Client in der EU-Region, der Daten für Nutzer in den USA abruft.

    Berücksichtigen Sie diese Einstellung auch, wenn für Ihre Standardinstanzpartition eine multiregionale Konfiguration verwendet wird, die nicht schreibgeschützte oder schreibgeschützte Regionen bietet, die sich am selben Standort wie alle Ihre Instanzpartitionen befinden. Mit dieser Einstellung wird eine Kopie der vollständigen Routing-Metadaten mit jedem Replikat der Standardinstanzpartition gespeichert. Daher haben alle Regionen mit Instanzpartitionen ein Replikat der Routing-Metadaten. So können sowohl Anfragen innerhalb als auch außerhalb der Region Routing-Metadaten lokal abrufen.

Option per_placement_routing_metadata festlegen

Wenn Sie per_placement_routing_metadata in der Google Cloud Console festlegen möchten, aktualisieren Sie diese Option in Ihrem Datenbankschema. Informationen zum Aktualisieren eines Schemas finden Sie unter Schemaaktualisierungen vornehmen.

Die Option per_placement_routing_metadata akzeptiert boolesche Werte. Wenn diese Option TRUE ist, befinden sich die Routing-Metadaten in derselben Instanzpartition wie die Daten. Wenn FALSE, befinden sich die Routing-Metadaten in der Standardpartition der Instanz.

Das folgende Beispiel zeigt einen GoogleSQL-ALTER DATABASE-Befehl zum Festlegen dieser Option:

ALTER DATABASE DATABASE_NAME SET OPTIONS ( per_placement_routing_metadata = METADATA_BOOLEAN)

Ersetzen Sie Folgendes:

  • DATABASE_NAME: der Name Ihrer Datenbank
  • METADATA_BOOLEAN: Der Wert per_placement_routing_metadata. Wenn TRUE, befinden sich die Routing-Metadaten in derselben Instanzpartition wie die Daten. Wenn FALSE, befinden sich die Routing-Metadaten in der Standardpartition der Instanz.

Daten-Placement erstellen

Nachdem Sie Partitionen und Datenbanken für Ihre Spanner-Instanz erstellt und die Option per_placement_routing_metadata festgelegt haben, können Sie die Platzierung erstellen.

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 oder verwenden Sie den leeren Editor-Tab.

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

    Sie können beispielsweise den folgenden Befehl ausführen, um in der Instanzpartition europe-partition eine Placement-Tabelle europeplacement 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 Object Explorer verwenden, um Ihre Placement-Objekte aufzurufen, danach zu suchen und mit ihnen zu interagieren. Weitere Informationen finden Sie unter Daten analysieren.

  7. Klicken Sie auf Ausführen.

gcloud

Verwenden Sie gcloud spanner databases ddl update, um einen 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')"

Standardmäßigen Leader für ein Placement festlegen

Sie können die standardmäßige führende Region einer Platzierung festlegen, wenn sich ihr Standort in einer multiregionalen Region befindet. Die neue führende Region muss eine der beiden nicht schreibgeschützten Regionen innerhalb des multiregionalen Platzierungsorts sein. Weitere Informationen finden Sie in den Tabellen Konfigurationen für mehrere Regionen.

Wenn Sie keine führende Region festlegen, wird für die Platzierung die Standardregion verwendet, die für den Standort angegeben ist. Eine Liste der führenden Regionen für die einzelnen multiregionalen Standorte finden Sie in den Tabellen unter Verfügbare multiregionale Konfigurationen. Die standardmäßig führende Region ist mit L gekennzeichnet. Die Standardregion für den Leader von nam8 ist beispielsweise 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 oder verwenden Sie den leeren Editor-Tab.

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

    Mit dem folgenden Befehl können Sie beispielsweise eine Placement-Tabelle nam8placement in der Instanzpartition nam8-partition erstellen, wobei der Standardort des Leaders 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 Object Explorer verwenden, um Ihre Placement-Objekte aufzurufen, danach zu suchen und mit ihnen zu interagieren. Weitere Informationen finden Sie unter Daten analysieren.

  7. Klicken Sie auf Ausführen.

gcloud

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

Erstellen Sie beispielsweise eine Placement-Tabelle nam8placement in der Instanzpartition nam8-partition mit dem Standard-Leader-Standort us-west1:

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')"

Datenplatzierung löschen

Bevor Sie einen Placement-Bericht löschen, müssen Sie alle Zeilendaten daraus entfernen. Danach können Sie die Platzierung über die Google Cloud Console oder die gcloud CLI entfernen.

Console

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

    Sie können beispielsweise den folgenden Befehl 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 einen Placement mit dem gcloud CLI-Befehl zu entfernen.

So löschen Sie beispielsweise die Drop-Platzierung europeplacement:

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

Fehler bei der Platzierung von Drops

Wenn das Placement verwendet wird, schlägt der Vorgang DROP PLACEMENT mit einer Fehlermeldung wie „Statement failed: Placement PLACEMENT_NAME can't be dropped because it is in use by placement table PLACEMENT_TABLE_NAME.“ (Anweisung fehlgeschlagen: Das Placement PLACEMENT_NAME kann nicht gelöscht werden, da es von der Placement-Tabelle PLACEMENT_TABLE_NAME verwendet wird.) fehl. Führen Sie in diesem Fall die folgenden Schritte aus:

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

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

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

      DELETE FROM PLACEMENT_TABLE_NAME
      WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
      

      Die vorherigen platzierungsspezifischen 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 die Mutations-API auch verwenden, um Zeilen mit Placements zu verschieben oder zu entfernen.

DROP PLACEMENT-Vorgang abbrechen

Sie können einen DROP PLACEMENT-Vorgang jederzeit abbrechen, bevor der Vorgang mit langer Ausführungszeit die Platzierung vollständig aus dem Datenbankschema löscht. Weitere Informationen zum Abrufen der ID des Vorgangs 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 Platzierungsschlüssel erstellen

Console

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

    Sie können beispielsweise eine Tabelle Singers erstellen, in der ein Placement-Schlüssel zum Partitionieren von Sängerdaten verwendet wird:

    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, in der ein Placement-Schlüssel zum Partitionieren von Sängerdaten verwendet wird:

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 keinen Platzierungsschlüssel aus einer Tabelle entfernen. Außerdem können Sie einer Tabelle nach dem Erstellen keinen Placement-Schlüssel hinzufügen. Sie können jedoch die ALTER TABLE-DDL-Anweisung (GoogleSQL, PostgreSQL) verwenden, um andere Felder in der Tabelle zu ändern, z. B. indem Sie Spalten hinzufügen und entfernen, die nicht als Schlüssel für die Platzierung dienen.

Tabelle mit einem Placement-Schlüssel löschen

Bevor Sie eine Tabelle mit einem Placementschlüssel löschen, müssen Sie zuerst Folgendes tun:

  1. Löschen Sie alle Zeilen in der Placement-Tabelle.
  2. Warten Sie, bis der version_retention_period für die Datenbank bestanden ist. Weitere Informationen finden Sie unter Wiederherstellung zu einem bestimmten Zeitpunkt. Gehen Sie dann so vor:

Console

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

    So löschen Sie beispielsweise die Tabelle Singers:

    DROP TABLE Singers;
    

gcloud

Zum Löschen einer Tabelle verwenden Sie gcloud spanner databases ddl update.

So 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 oder verwenden Sie den leeren Editor-Tab.
  3. Geben Sie die DDL-Anweisung für INSERT INTO (GoogleSQL, PostgreSQL) ein.

    Fügen Sie beispielsweise der Tabelle Singers den Sänger Marc Richards hinzu und partitionieren Sie sie 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 sie 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 Platzierungstabelle aktualisieren

Console

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

    So 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.

So 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 ‑platzierung, falls noch nicht geschehen.
  2. Klicken Sie im Navigationsmenü auf Spanner Studio.
  3. Klicken Sie auf der Seite Spanner Studio auf  Neuer Tab 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 den Speicherort erstellt haben, an den 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 oder verwenden Sie den leeren Editor-Tab.
  3. Verwenden Sie DML oder Mutationen, um Daten zu löschen.

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

    DELETE FROM Singers s
    WHERE s.id=1;
    

gcloud

Zum Löschen von Daten verwenden Sie gcloud spanner rows delete.

So 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 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