Creare, aggiornare o eliminare uno schema di Spanner Graph

Questo documento mostra come creare, aggiornare o rilasciare un grafico delle proprietà nel grafico Spanner utilizzando lo schema di esempio che hai creato Configurare ed eseguire query sul grafico di Spanner.

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 per il grafico delle proprietà

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

Per creare uno schema di grafico 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 grafico delle 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 dei bordi nel grafico delle 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 grafico delle proprietà utilizzando l'esempio CREATE PROPERTY GRAPH l'Informativa.

    L'esempio seguente definisce un grafo di proprietà denominato FinGraph con nodi Account e Person e 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 Grafico Spanner.

Aggiornare lo schema di un grafo di proprietà

Puoi aggiornare lo schema di un grafico delle proprietà nei seguenti modi:

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

In ogni caso, devi ricreare il grafico 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. La L'esempio seguente aggiorna lo schema FinGraph aggiungendo un nuovo nodo definizione Company e una nuova definizione perimetrale 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
      );
    

Aggiorna definizioni di nodi o perimetrali esistenti

Per aggiornare le definizioni di nodi o perimetrali esistenti, segui questi passaggi:

  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. Nell'esempio seguente viene aggiunta una nuova proprietà mailing_address alla Definizione del nodo Person mediante CREATE OR REPLACE PROPERTY GRAPH l'Informativa. 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, vedi Personalizzare etichette e proprietà.

Rimuovi definizioni di nodi o periferici esistenti

Per rimuovere definizioni di nodi o bordi esistenti, ricrea il grafico delle proprietà senza le tabelle su nodi o perimetrali.

L'esempio seguente rimuove la definizione del nodo Person e la Definizione del bordo 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 rilasciare lo schema del grafico.

L'esempio seguente elimina lo schema del grafico della proprietà FinGraph:

DROP PROPERTY GRAPH FinGraph;

Passaggi successivi