Spanner Graph-Schema verwalten

Dieses Dokument bietet eine umfassende Anleitung zum Verwalten von Spanner Graph-Eigenschaftsschemas. Es werden die Prozesse zum Erstellen, Aktualisieren und Löschen von Schemas mithilfe von DDL-Anweisungen beschrieben.

Weitere Informationen zu Property Graph-Schemas finden Sie unter Spanner Graph-Schema – Übersicht. Wenn beim Erstellen eines Attributdiagrammschemas Fehler auftreten, lesen Sie den Abschnitt Fehlerbehebung bei Spanner Graph.

Property-Graph-Schema erstellen

So erstellen Sie ein Property-Graph-Schema:

  1. Knoteneingabetabellen erstellen
  2. Edge-Eingabetabellen erstellen
  3. Attributgrafik definieren:

Berücksichtigen Sie beim Erstellen eines Property Graph-Schemas die Best Practices.

In den folgenden Abschnitten wird gezeigt, wie Sie ein Beispielschema für einen Property Graph erstellen:

Knoteneingabetabellen erstellen

Im Folgenden werden zwei Knoteneingabetabellen, Person und Account, erstellt, die als Eingabe für die Knotendefinitionen im Beispiel-Eigenschaftsgraphen dienen:

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

Edge-Eingabetabellen erstellen

Mit dem folgenden Code werden zwei Edge-Eingabetabellen, PersonOwnAccount und AccountTransferAccount, als Eingabe für die Edge-Definitionen im Beispiel-Property-Graph erstellt:

  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;

Attributgrafik definieren

Im folgenden Code wird der Property-Graph mit der CREATE PROPERTY GRAPH-Anweisung definiert. Mit dieser Anweisung wird eine Attributgrafik namens 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
    );

Attributgrafikschema aktualisieren

Nachdem Sie ein Property Graph-Schema erstellt haben, aktualisieren Sie es mit der Anweisung CREATE OR REPLACE PROPERTY GRAPH. Mit dieser Anweisung werden die Änderungen angewendet, indem das Graphschema mit der gewünschten Aktualisierung neu erstellt wird.

Sie können die folgenden Änderungen an einem Property Graph-Schema vornehmen:

  • Knoten- oder Kantendefinition hinzufügen: Erstellen Sie die neuen Eingabetabellen für die Knoten und Kanten und fügen Sie die neuen Definitionen dann mit der CREATE OR REPLACE PROPERTY GRAPH-Anweisung dem Diagramm hinzu.

  • Knoten- oder Kantendefinition aktualisieren: Aktualisieren Sie die zugrunde liegende Eingabetabelle mit neuen Knoten- und Kantendefinitionen. Verwenden Sie dann die Anweisung CREATE OR REPLACE PROPERTY GRAPH, um die Definitionen im Diagramm zu aktualisieren.

  • Knoten- oder Kantendefinition entfernen: Verwenden Sie die Anweisung CREATE OR REPLACE PROPERTY GRAPH und lassen Sie die Definitionen aus, die Sie aus dem Diagramm entfernen möchten.

Neue Knoten- oder Kanten-Definitionen hinzufügen

So fügen Sie eine neue Knoten- und eine neue Kanten-Definition hinzu:

  1. Fügen Sie eine neue Eingabetabelle für die Knotendefinition, Company, und eine neue Eingabetabelle für die Kantendefinition, PersonInvestCompany, hinzu.

    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 das FinGraph-Schema, indem Sie die neue Knotendefinition Company und die neue Kantendefinition PersonInvestCompany hinzufügen.

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

Knoten- oder Kantendefinitionen aktualisieren

Wenn Sie eine vorhandene Knoten- oder Kantendefinition aktualisieren möchten, ändern Sie zuerst die zugrunde liegende Eingabetabelle und wenden Sie dann die Schemaänderungen mit der Anweisung CREATE OR REPLACE PROPERTY GRAPH auf das Diagramm an. Verwenden Sie PROPERTIES clause, um die Eigenschaften anzupassen, die aus den Eingabetabellen verfügbar gemacht werden. Weitere Informationen finden Sie unter Labels und Attribute anpassen.

In den folgenden Schritten wird beschrieben, wie Sie die zugrunde liegende Tabelle eines Schemas aktualisieren und die Aktualisierung dann auf das Schema anwenden.

  1. Fügen Sie der zugrunde liegenden Eingabetabelle Person die Spalte mailing_address hinzu.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Wenden Sie die Änderungen an der Tabelle Person auf das Schema an. Verwenden Sie die CREATE OR REPLACE PROPERTY GRAPH-Anweisung. Die Knotendefinition Person spiegelt die aktualisierte Tabellendefinition Person wider, da sich das Eingabetabellenschema 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
      );
    

Knoten- oder Kantendefinitionen entfernen

Wenn Sie vorhandene Knoten- oder Kantendefinitionen entfernen möchten, erstellen Sie den Attributgraphen ohne diese Knoten- oder Kantentabellen neu.

Im Folgenden werden die Knotendefinition Person und die Kantendefinition PersonOwnAccount entfernt, indem sie in der CREATE OR REPLACE PROPERTY GRAPH-Anweisung ausgelassen werden.

  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 ein Grafschema aus den zugrunde liegenden Eingabetabellen löschen. Wenn Sie ein Schema löschen, können Sie die Daten aus der zugrunde liegenden Tabelle nicht löschen.

Mit dem folgenden Code wird das Schema der Attributgrafik FinGraph gelöscht:

DROP PROPERTY GRAPH FinGraph;

Nächste Schritte