Spanner-Graphschema erstellen, aktualisieren oder löschen

In diesem Dokument erfahren Sie, wie Sie mit dem Beispielschema, das Sie unter Cloud Spanner Graph einrichten und abfragen erstellt haben, eine Property-Graph in Spanner Graph erstellen, aktualisieren oder löschen.

Mit Spanner können Sie Schemaaktualisierungen ohne Ausfallzeiten vornehmen. Sie können das Schema einer vorhandenen Datenbank auf eine der folgenden Arten:

Schema für Attributgrafik erstellen

Weitere Informationen zu Property Graph-Schemas finden Sie unter Spanner-Graphschema – Übersicht.

So erstellen Sie ein Schema für die Attributgrafik:

  1. Erstellen Sie die Knoteneingabetabellen Person und Account. Diese Tabellen werden als Eingabetabellen für die Knotendefinitionen in der Beispiel-Property-Graphik verwendet.

    CREATE TABLE Person (
      id               INT64 NOT NULL,
      name             STRING(MAX),
      birthday         TIMESTAMP,
      country          STRING(MAX),
      city             STRING(MAX),
    ) PRIMARY KEY (id);
    
    CREATE TABLE Account (
      id               INT64 NOT NULL,
      create_time      TIMESTAMP,
      is_blocked       BOOL,
      nick_name        STRING(MAX),
    ) PRIMARY KEY (id);
    
  2. Erstellen Sie die Edge-Eingabetabellen PersonOwnAccount und AccountTransferAccount. Diese Tabellen werden als Eingabetabellen für die Edge-Definitionen in der Beispiel-Eigenschaftengrafik.

    CREATE TABLE PersonOwnAccount (
      id               INT64 NOT NULL,
      account_id       INT64 NOT NULL,
      create_time      TIMESTAMP,
      FOREIGN KEY (account_id) REFERENCES Account (id)
    ) PRIMARY KEY (id, account_id),
      INTERLEAVE IN PARENT Person ON DELETE CASCADE;
    
    CREATE TABLE AccountTransferAccount (
      id               INT64 NOT NULL,
      to_id            INT64 NOT NULL,
      amount           FLOAT64,
      create_time      TIMESTAMP NOT NULL,
      order_number     STRING(MAX),
      FOREIGN KEY (to_id) REFERENCES Account (id)
    ) PRIMARY KEY (id, to_id, create_time),
      INTERLEAVE IN PARENT Account ON DELETE CASCADE;
    
  3. Definieren Sie die Attributgrafik anhand des Beispiels CREATE PROPERTY GRAPH .

    Im folgenden Beispiel wird eine Property-Graph mit dem Namen FinGraph mit den Knoten Account und Person sowie den Kanten PersonOwnAccount und AccountTransferAccount definiert.

    CREATE PROPERTY GRAPH FinGraph
      NODE TABLES (
        Account,
        Person
      )
      EDGE TABLES (
        PersonOwnAccount
          SOURCE KEY (id) REFERENCES Person (id)
          DESTINATION KEY (account_id) REFERENCES Account (id)
          LABEL Owns,
        AccountTransferAccount
          SOURCE KEY (id) REFERENCES Account (id)
          DESTINATION KEY (to_id) REFERENCES Account (id)
          LABEL Transfers
      );
    

In diesem Beispiel werden die folgenden Best Practices angewendet:

Weitere Informationen finden Sie unter Best Practices für das Graphschemadesign.

Informationen zu häufigen Spanner Graph-Schemafehlern finden Sie unter Fehlerbehebung bei Spanner Graph.

Property-Graph-Schema aktualisieren

Sie haben folgende Möglichkeiten, ein Schema für eine Property-Grafik zu aktualisieren:

  1. Fügen Sie neue Knoten- oder Kantendefinitionen hinzu.
  2. Vorhandene Knoten- oder Kantendefinitionen aktualisieren
  3. Entfernen Sie vorhandene Knoten- oder Edge-Definitionen.

In jedem Fall müssen Sie die Property-Graphen mit dem aktualisierten Schema neu erstellen.

Neue Knoten- oder Edge-Definitionen hinzufügen

So fügen Sie einen neuen Knoten und eine neue Edge-Definition hinzu:

  1. Neue Eingabetabellen hinzufügen.

    Definieren Sie die zugehörigen Eingabetabellen mit den neuen Definitionen der Graph-Elemente. Im folgenden Beispiel werden zwei neue Eingabetabellen Company und PersonInvestCompany hinzugefügt:

    CREATE TABLE Company (
      id INT64 NOT NULL,
      name STRING(MAX)
    ) PRIMARY KEY (id);
    
    CREATE TABLE PersonInvestCompany (
      id INT64 NOT NULL,
      company_id INT64 NOT NULL,
      FOREIGN KEY (company_id) REFERENCES Company (id)
    ) PRIMARY KEY (id, company_id),
      INTERLEAVE IN PARENT Person ON DELETE CASCADE;
    
  2. Aktualisieren Sie die Grafik mit CREATE OR REPLACE PROPERTY GRAPH. Die Im folgenden Beispiel wird das Schema FinGraph durch Hinzufügen eines neuen Knotens aktualisiert. Definition Company und einer neuen Edge-Definition PersonInvestCompany:

    CREATE OR REPLACE PROPERTY GRAPH FinGraph
      NODE TABLES (
        Person,
        Account,
        Company
      )
      EDGE TABLES (
        AccountTransferAccount
          SOURCE KEY (id) REFERENCES Account
          DESTINATION KEY (to_id) REFERENCES Account
          LABEL Transfers,
        PersonOwnAccount
          SOURCE KEY (id) REFERENCES Person
          DESTINATION KEY (account_id) REFERENCES Account
          LABEL Owns,
        PersonInvestCompany
          SOURCE KEY (id) REFERENCES Person
          DESTINATION KEY (company_id) REFERENCES Company
          LABEL Invests
      );
    

Vorhandene Knoten- oder Edge-Definitionen aktualisieren

So aktualisieren Sie vorhandene Knoten- oder Kantendefinitionen:

  1. Aktualisieren Sie das Schema der Eingabetabelle. Im folgenden Beispiel wird die Spalte mailing_address die Eingabetabelle Person.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Aktualisieren Sie das Property-Graph-Schema mit CREATE OR REPLACE PROPERTY GRAPH. Im folgenden Beispiel wird die neue Eigenschaft mailing_address Person-Knotendefinition mit CREATE OR REPLACE PROPERTY GRAPH . In diesem Beispiel wird die Knotendefinition Person automatisch die geänderte Tabellendefinition Person, da die Eingabetabelle Schema geändert.

    CREATE OR REPLACE PROPERTY GRAPH FinGraph
      NODE TABLES (
        Person,
        Account
      )
      EDGE TABLES (
        AccountTransferAccount
          SOURCE KEY (id) REFERENCES Account
          DESTINATION KEY (to_id) REFERENCES Account
          LABEL Transfers,
        PersonOwnAccount
          SOURCE KEY (id) REFERENCES Person
          DESTINATION KEY (account_id) REFERENCES Account
          LABEL Owns
      );
    

    Mit PROPERTIES clause() können Sie auch die aus den Eingabetabellen freigegebenen Eigenschaften anpassen. Weitere Informationen finden Sie unter Labels und Properties anpassen.

Vorhandene Knoten- oder Edge-Definitionen entfernen

Erstellen Sie den Attributdiagramm neu, um vorhandene Knoten- oder Edge-Definitionen zu entfernen ohne diese Knoten- oder Edge-Tabellen.

Im folgenden Beispiel werden die Knotendefinition Person und der Kantendefinition PersonOwnAccount.

CREATE OR REPLACE PROPERTY GRAPH FinGraph
  NODE TABLES (
    Account
  )
  EDGE TABLES (
    AccountTransferAccount
      SOURCE KEY (id) REFERENCES Account
      DESTINATION KEY (to_id) REFERENCES Account
      LABEL Transfers
  );

Schema für Property-Diagramm löschen

Mit der DDL-Anweisung DROP PROPERTY GRAPH können Sie das Graphenschema löschen.

Im folgenden Beispiel wird das Schema der Attributgrafik FinGraph gelöscht:

DROP PROPERTY GRAPH FinGraph;

Nächste Schritte