Creare, aggiornare o eliminare uno schema di Spanner Graph

Questo documento mostra come creare, aggiornare o eliminare un grafo di proprietà in Spanner Graph utilizzando lo schema di esempio che hai creato in Configura ed esegui query su Spanner Graph.

Spanner ti consente di aggiornare lo schema senza tempi di inattività. Puoi aggiornare lo schema di un database esistente in uno dei seguenti modi:

Crea uno schema del grafo di proprietà

Per ulteriori informazioni sugli schemi dei grafici delle proprietà, consulta la Panoramica dello schema di Spanner Graph.

Per creare uno schema del grafo delle proprietà:

  1. Crea le tabelle di input dei nodi Person e Account. Queste tabelle vengono utilizzate come tabelle di input per le definizioni dei nodi nel grafo di proprietà di esempio.

    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. Crea le tabelle di input dell'edge PersonOwnAccount e AccountTransferAccount. Queste tabelle vengono utilizzate come tabelle di input per le definizioni degli archi nel grafo di proprietà di esempio.

    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. Definisci il grafo delle proprietà utilizzando l'istruzione CREATE PROPERTY GRAPH di esempio.

    L'esempio seguente definisce un grafo di proprietà denominato FinGraph con i nodi Account e Person e gli archi PersonOwnAccount e AccountTransferAccount.

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

Questo esempio segue queste best practice:

Per saperne di più, consulta le best practice per la progettazione degli schemi dei grafici.

Per informazioni sugli errori comuni dello schema di Spanner Graph, consulta Risolvere i problemi di Spanner Graph.

Aggiornare lo schema di un grafo di proprietà

Puoi aggiornare uno schema del grafo delle proprietà nei seguenti modi:

  1. Aggiungi nuove definizioni di nodi o archi.
  2. Aggiorna le definizioni di nodi o archi esistenti.
  3. Rimuovi le definizioni di nodi o archi esistenti.

In ogni caso, devi ricreare il grafo delle proprietà con lo schema aggiornato.

Aggiungere nuove definizioni di nodi o archi

Per aggiungere un nuovo nodo e una nuova definizione di bordo:

  1. Aggiungi nuove tabelle di input.

    Definisci le tabelle di input associate alle nuove definizioni degli elementi del grafico. Guarda il seguente esempio, che aggiunge due nuove tabelle di input Company e PersonInvestCompany:

    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. Aggiorna il grafico con CREATE OR REPLACE PROPERTY GRAPH. L'esempio seguente aggiorna lo schema FinGraph aggiungendo una nuova definizione di nodo Company e una nuova definizione di bordo 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
      );
    

Aggiornare le definizioni di nodi o archi esistenti

Per aggiornare le definizioni di nodi o archi esistenti:

  1. Aggiorna lo schema della tabella di input. L'esempio seguente aggiunge la colonna mailing_address alla tabella di input Person.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Aggiorna lo schema del grafico delle proprietà con CREATE OR REPLACE PROPERTY GRAPH. L'esempio seguente aggiunge una nuova proprietà mailing_address alla definizione del nodo Person utilizzando l'istruzione CREATE OR REPLACE PROPERTY GRAPH. In questo esempio, la definizione del nodo Person acquisisce automaticamente la definizione della tabella Person modificata perché lo schema della tabella di input è cambiato.

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

    Puoi anche utilizzare PROPERTIES clause() per personalizzare le proprietà esposte dalle tabelle di input. Per ulteriori informazioni, consulta Personalizzare etichette e proprietà.

Rimuovi le definizioni di nodi o archi esistenti

Per rimuovere le definizioni di nodi o archi esistenti, ricrea il grafo della proprietà senza le tabelle di nodi o archi.

L'esempio seguente rimuove la definizione del nodo Person e la definizione dell'elemento 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
  );

Inserire uno schema del grafico delle proprietà

Puoi utilizzare l'istruzione DDL DROP PROPERTY GRAPH per eliminare lo schema del grafico.

L'esempio seguente inserisce lo schema del grafico delle proprietà FinGraph:

DROP PROPERTY GRAPH FinGraph;

Passaggi successivi