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 lassen sich Schemas ohne Ausfallzeit aktualisieren. Das Schema einer vorhandenen Datenbank kann auf folgende Arten aktualisiert werden:

Property-Graph-Schema erstellen

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

So erstellen Sie ein Property-Graph-Schema:

  1. Erstellen Sie die Knoteneingabetabellen Person und Account. Diese Tabellen werden als Eingabetabellen für die Knotendefinitionen im Beispiel-Property-Graphen 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 Kantendefinitionen im Beispiel-Property-Graphen verwendet.

    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 Property-Graph mithilfe der Beispielanweisung für 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 Property-Graph-Schema zu aktualisieren:

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

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

Neue Knoten- oder Kantendefinitionen hinzufügen

So fügen Sie einen neuen Knoten und eine neue Kantendefinition hinzu:

  1. Fügen Sie neue Eingabetabellen hinzu.

    Definieren Sie die Eingabetabellen, die mit den neuen Graphelementdefinitionen verknüpft sind. 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. Im folgenden Beispiel wird das FinGraph-Schema aktualisiert, indem eine neue Knotendefinition Company und eine neue Kantendefinition PersonInvestCompany hinzugefügt werden:

    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 Kantendefinitionen aktualisieren

So aktualisieren Sie vorhandene Knoten- oder Kantendefinitionen:

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

    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 der Knotendefinition Person mithilfe der Anweisung CREATE OR REPLACE PROPERTY GRAPH ein neues Attribut mailing_address hinzugefügt. In diesem Beispiel wird die geänderte Person-Tabellendefinition automatisch von der Person-Knotendefinition übernommen, da sich das Schema der Eingabetabelle geändert hat.

    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 Eigenschaften anpassen, die aus den Eingabetabellen freigegeben werden. Weitere Informationen finden Sie unter Labels und Properties anpassen.

Vorhandene Knoten- oder Kantendefinitionen entfernen

Wenn Sie vorhandene Knoten- oder Kantendefinitionen entfernen möchten, erstellen Sie die Property-Graph ohne diese Knoten- oder Kantentabellen neu.

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

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
  );

Attributgrafikschema löschen

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

Im folgenden Beispiel wird das Attributgrafikschema FinGraph gelöscht:

DROP PROPERTY GRAPH FinGraph;

Nächste Schritte