Criar, atualizar ou excluir um esquema do Spanner Graph

Este documento mostra como criar, atualizar ou excluir um gráfico de propriedades no Spanner Graph usando o esquema de exemplo que você criou em Configurar e consultar o Spanner Graph.

Com o Spanner, é possível fazer atualizações de esquema sem tempo de inatividade. É possível atualizar o esquema de um banco de dados atual das seguintes maneiras:

Criar um esquema de gráfico de propriedade

Para mais informações sobre esquemas de gráfico de propriedades, consulte a Visão geral do esquema do gráfico do Spanner.

Para criar um esquema de gráfico de propriedade, siga estas etapas:

  1. Crie as tabelas de entrada de nó Person e Account. Essas tabelas são usadas como tabelas de entrada para as definições de nó no exemplo de gráfico de propriedade.

    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. Crie as tabelas de entrada de borda PersonOwnAccount e AccountTransferAccount. Essas tabelas são usadas como tabelas de entrada para as definições de aresta no exemplo de gráfico de propriedade.

    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. Defina o gráfico de propriedades usando o exemplo de instrução CREATE PROPERTY GRAPH.

    O exemplo a seguir define um gráfico de propriedades chamado FinGraph com nós Account e Person, e arestas 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
      );
    

Este exemplo segue estas práticas recomendadas:

Para mais informações, consulte Práticas recomendadas para design de esquema de gráfico.

Para informações sobre erros comuns de esquema do Spanner Graph, consulte Resolver problemas do Spanner Graph.

Atualizar um esquema de gráfico de propriedades

É possível atualizar um esquema de gráfico de propriedades das seguintes maneiras:

  1. Adicione novas definições de nó ou aresta.
  2. Atualize as definições de nó ou aresta.
  3. Remova as definições de nó ou aresta atuais.

Em cada caso, é necessário recriar o gráfico de propriedades com o esquema atualizado.

Adicionar novas definições de nó ou aresta

Para adicionar um novo nó e uma nova definição de borda, siga estas etapas:

  1. Adicionar novas tabelas de entrada.

    Defina as tabelas de entrada associadas às novas definições de elementos do gráfico. Confira o exemplo a seguir, que adiciona duas novas tabelas de entrada 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. Atualize o gráfico com CREATE OR REPLACE PROPERTY GRAPH. O exemplo a seguir atualiza o esquema FinGraph adicionando uma nova definição de nó Company e uma nova definição de aresta 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
      );
    

Atualizar definições de nó ou aresta

Para atualizar as definições de nó ou aresta, siga estas etapas:

  1. Atualize o esquema da tabela de entrada. O exemplo a seguir adiciona a coluna mailing_address à tabela de entrada Person.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Atualize o esquema do gráfico de propriedades com CREATE OR REPLACE PROPERTY GRAPH. O exemplo a seguir adiciona uma nova propriedade mailing_address à definição do nó Person usando a instrução CREATE OR REPLACE PROPERTY GRAPH. Neste exemplo, a definição do nó Person capta automaticamente a definição da tabela Person alterada porque o esquema da tabela de entrada mudou.

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

    Também é possível usar o PROPERTIES clause() para personalizar as propriedades expostas nas tabelas de entrada. Para mais informações, consulte Personalizar rótulos e propriedades.

Remover definições de nó ou aresta

Para remover definições de nó ou aresta, recrie o gráfico de propriedades sem essas tabelas.

O exemplo a seguir remove a definição do nó Person e a definição da borda 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
  );

Excluir um esquema de gráfico de propriedade

Você pode usar a instrução DDL DROP PROPERTY GRAPH para descartar o esquema do gráfico.

O exemplo a seguir descarta o esquema do gráfico de propriedades FinGraph:

DROP PROPERTY GRAPH FinGraph;

A seguir