Gestire uno schema Spanner Graph

Questo documento fornisce una guida completa alla gestione degli schemi delle proprietà di Spanner Graph, descrivendo in dettaglio le procedure per creare, aggiornare ed eliminare gli schemi utilizzando le istruzioni DDL.

Per saperne di più sugli schemi dei grafici delle proprietà, consulta la panoramica dello schema di Spanner Graph. Se si verificano errori durante la creazione di uno schema del grafico delle proprietà, consulta Risolvere i problemi relativi a Spanner Graph.

Crea uno schema del grafico delle proprietà

Per creare uno schema del grafico delle proprietà:

  1. Crea le tabelle di input dei nodi.
  2. Crea le tabelle di input degli archi.
  3. Definisci il grafico delle proprietà.

Quando crei uno schema del grafico delle proprietà, assicurati di prendere in considerazione le best practice.

Le sezioni seguenti mostrano come creare uno schema di esempio del grafico delle proprietà:

Crea tabelle di input dei nodi

Il seguente codice crea due tabelle di input dei nodi, Person e Account, che fungono da 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);

Creare tabelle di input perimetrali

Il seguente codice crea due tabelle di input edge, PersonOwnAccount e AccountTransferAccount, come input per le definizioni edge 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;

Definisci un grafico delle proprietà

Il seguente codice definisce il grafico delle proprietà utilizzando l'istruzione CREATE PROPERTY GRAPH. Questa istruzione definisce un grafico delle 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
    );

Aggiorna uno schema del grafico delle proprietà

Dopo aver creato uno schema del grafico delle proprietà, lo aggiorni utilizzando l'istruzione CREATE OR REPLACE PROPERTY GRAPH. Questa istruzione applica le modifiche ricreando lo schema del grafico con l'aggiornamento desiderato.

Puoi apportare le seguenti modifiche a uno schema del grafico delle proprietà:

  • Aggiungi una definizione di nodo o arco: crea le nuove tabelle di input per i nodi e gli archi, quindi utilizza l'istruzione CREATE OR REPLACE PROPERTY GRAPH per aggiungere le nuove definizioni al grafico.

  • Aggiorna una definizione di nodo o arco: aggiorna la tabella di input sottostante con nuove definizioni di nodi e archi. Poi, utilizza l'istruzione CREATE OR REPLACE PROPERTY GRAPH per aggiornare le definizioni nel grafico.

  • Rimuovi una definizione di nodo o arco: utilizza l'istruzione CREATE OR REPLACE PROPERTY GRAPH e ometti le definizioni che vuoi rimuovere dal grafico.

Aggiungere nuove definizioni di nodi o archi

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

  1. Aggiungi una nuova tabella di input per la definizione dei nodi, Company, e una nuova tabella di input per la definizione degli archi, 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 lo schema FinGraph aggiungendo la nuova definizione del nodo Company e la nuova definizione del 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

Per aggiornare una definizione di nodo o arco esistente, devi prima modificare la tabella di input sottostante e poi utilizzare l'istruzione CREATE OR REPLACE PROPERTY GRAPH per applicare le modifiche allo schema al grafico. Per personalizzare le proprietà esposte dalle tabelle di input, utilizza PROPERTIES clause. Per ulteriori informazioni, vedi Personalizzare etichette e proprietà.

I seguenti passaggi mostrano come aggiornare la tabella sottostante di uno schema, quindi applicare l'aggiornamento allo schema.

  1. Aggiungi la colonna mailing_address alla tabella di input sottostante Person.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Applica le modifiche alla tabella Person allo schema. Utilizza l'istruzione CREATE OR REPLACE PROPERTY GRAPH. La definizione del nodo Person riflette la definizione della tabella Person aggiornata 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
      );
    

Rimuovere le definizioni di nodi o archi

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

Il seguente codice rimuove la definizione del nodo Person e la definizione del bordo PersonOwnAccount omettendoli nell'istruzione CREATE OR REPLACE PROPERTY GRAPH.

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

Elimina uno schema del grafico delle proprietà

Per eliminare uno schema del grafico dalle tabelle di input sottostanti, utilizza l'istruzione DDL DROP PROPERTY GRAPH. Quando elimini uno schema, non puoi eliminare i dati dalla tabella sottostante.

Il seguente codice elimina lo schema del grafico delle proprietà FinGraph:

DROP PROPERTY GRAPH FinGraph;

Passaggi successivi