Gerenciar um esquema do Spanner Graph

Este documento fornece um guia abrangente sobre como gerenciar esquemas de propriedades do Spanner Graph, detalhando os processos para criar, atualizar e remover esquemas usando instruções DDL.

Para mais informações sobre esquemas de gráficos de propriedades, consulte a visão geral do esquema do Spanner Graph. Se você encontrar erros ao criar um esquema de gráfico de propriedades, consulte Resolver problemas do Spanner Graph.

Criar um esquema de gráfico de propriedades

Para criar um esquema de gráfico de propriedades, faça o seguinte:

  1. Crie as tabelas de entrada de nós.
  2. Criar as tabelas de entrada de aresta.
  3. Defina o gráfico de propriedades.

Ao criar um esquema de gráfico de propriedades, considere as práticas recomendadas.

As seções a seguir mostram como criar um exemplo de esquema de gráfico de propriedades:

Criar tabelas de entrada de nós

O exemplo a seguir cria duas tabelas de entrada de nós, Person e Account, que servem como entrada para as definições de nós no gráfico de propriedades de exemplo:

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

Criar tabelas de entrada de borda

O código a seguir cria duas tabelas de entrada de arestas, PersonOwnAccount e AccountTransferAccount, como entrada para as definições de arestas no exemplo de grafo de propriedades:

  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;

Definir um gráfico de propriedades

O código a seguir define o gráfico de propriedades usando a instrução CREATE PROPERTY GRAPH. Esta instrução 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
    );

Atualizar um esquema de gráfico de propriedades

Depois de criar um esquema de gráfico de propriedades, atualize-o usando a instrução CREATE OR REPLACE PROPERTY GRAPH. Essa instrução aplica as mudanças recriando o esquema do gráfico com a atualização desejada.

É possível fazer as seguintes mudanças em um esquema de gráfico de propriedades:

Adicionar novas definições de nó ou aresta

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

  1. Adicione uma nova tabela de entrada de definição de nó, Company, e uma nova tabela de entrada de definição de aresta, 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 esquema FinGraph adicionando a nova definição de nó Company e a 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ós ou arestas

Para atualizar uma definição de nó ou aresta, primeiro altere a tabela de entrada subjacente e use a instrução CREATE OR REPLACE PROPERTY GRAPH para aplicar as mudanças de esquema ao gráfico. Para personalizar as propriedades expostas das tabelas de entrada, use PROPERTIES clause. Para mais informações, consulte Personalizar rótulos e propriedades.

As etapas a seguir mostram como atualizar a tabela subjacente de um esquema e aplicar a atualização a ele.

  1. Adicione a coluna mailing_address à tabela de entrada Person.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Aplique as mudanças na tabela Person ao esquema. Use a instrução CREATE OR REPLACE PROPERTY GRAPH. A definição do nó Person reflete a definição atualizada da tabela Person 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
      );
    

Remover definições de nós ou arestas

Para remover definições de nós ou arestas, 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 aresta PersonOwnAccount omitindo-as na instrução 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
    );

Descartar um esquema de gráfico de propriedades

Para descartar um esquema de gráfico das tabelas de entrada subjacentes, use a instrução DDL DROP PROPERTY GRAPH. Não é possível excluir os dados da tabela subjacente ao remover um esquema.

O código a seguir descarta o esquema do gráfico de propriedades FinGraph:

DROP PROPERTY GRAPH FinGraph;

A seguir