Faça a gestão de um esquema do Spanner Graph

Este documento fornece um guia abrangente sobre a gestão de esquemas de propriedades do Spanner Graph, detalhando os processos de criação, atualização e eliminação de esquemas através de declarações DDL.

Para mais informações sobre esquemas de gráficos de propriedades, consulte a vista geral do esquema do Spanner Graph. Se encontrar erros quando cria um esquema de gráfico de propriedades, consulte Resolva problemas do Spanner Graph.

Crie 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. Crie as tabelas de entrada de dados de limite.
  3. Defina o gráfico de propriedades.

Quando criar um esquema de gráfico de propriedades, certifique-se de que tem em conta as práticas recomendadas.

As secções seguintes mostram como criar um esquema de grafo de propriedades de exemplo:

Crie tabelas de entrada de nós

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

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

Crie tabelas de entrada de limites

O código seguinte cria duas tabelas de entrada de arestas, PersonOwnAccount e AccountTransferAccount, como entrada para as definições de arestas no exemplo de gráfico 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;

Defina um gráfico de propriedades

O código seguinte define o gráfico de propriedades através da declaração CREATE PROPERTY GRAPH. Esta declaração define um gráfico de propriedades denominado 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
    );

Atualize um esquema de gráfico de propriedades

Depois de criar um esquema de gráfico de propriedades, atualize-o através da declaração CREATE OR REPLACE PROPERTY GRAPH. Esta declaração aplica as alterações recriando o esquema do gráfico com a atualização pretendida.

Pode fazer as seguintes alterações a um esquema de gráfico de propriedades:

Adicione novas definições de nós ou arestas

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

  1. Adicione uma nova tabela de entrada de definição de nós, Company, e uma nova tabela de entrada de definição de arestas, 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 do nó Company e a nova definição da 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
      );
    

Atualize as definições de nós ou arestas

Para atualizar uma definição de nó ou aresta existente, primeiro, altere a tabela de entrada subjacente e, em seguida, use a declaração CREATE OR REPLACE PROPERTY GRAPH para aplicar as alterações de esquema ao gráfico. Para personalizar as propriedades expostas das tabelas de entrada, use o elemento PROPERTIES clause. Para mais informações, consulte o artigo Personalize etiquetas e propriedades.

Os passos seguintes mostram como atualizar a tabela subjacente de um esquema e, em seguida, aplicar a atualização ao esquema.

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

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Aplique as alterações à tabela Person ao esquema. Use a declaração CREATE OR REPLACE PROPERTY GRAPH. A definição do nó Person reflete a definição da tabela Person atualizada porque o esquema da tabela de entrada foi alterado.

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

Remova definições de nós ou arestas

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

O seguinte remove a definição do nó Person e a definição da aresta PersonOwnAccount omitindo-as na declaraçã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
    );

Elimine um esquema de gráfico de propriedades

Para eliminar um esquema de gráfico das tabelas de entrada subjacentes, use a declaração LDD DROP PROPERTY GRAPH. Não pode eliminar os dados da tabela subjacente quando elimina um esquema.

O código seguinte elimina o esquema do gráfico de propriedades FinGraph:

DROP PROPERTY GRAPH FinGraph;

O que se segue?