Gestionar un esquema de Spanner Graph

En este documento se ofrece una guía completa sobre la gestión de esquemas de propiedades de Spanner Graph, en la que se detallan los procesos para crear, actualizar y eliminar esquemas mediante instrucciones de DDL.

Para obtener más información sobre los esquemas de gráficos de propiedades, consulta la descripción general del esquema de gráficos de Spanner. Si se producen errores al crear un esquema de gráfico de propiedad, consulta Solucionar problemas de gráficos de Spanner.

Crear un esquema de gráfico de propiedades

Para crear un esquema de gráfico de propiedad, haga lo siguiente:

  1. Crea las tablas de entrada de los nodos.
  2. Crea las tablas de entrada de los extremos.
  3. Define el gráfico de propiedades.

Cuando crees un esquema de gráfico de propiedades, ten en cuenta las prácticas recomendadas.

En las siguientes secciones se muestra cómo crear un esquema de gráfico de propiedades de ejemplo:

Crear tablas de entrada de nodos

A continuación, se crean dos tablas de entrada de nodos, Person y Account, que sirven de entrada para las definiciones de nodos del gráfico de propiedades de ejemplo:

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

Crear tablas de entrada de borde

El siguiente código crea dos tablas de entrada de aristas, PersonOwnAccount y AccountTransferAccount, como entrada para las definiciones de aristas del gráfico de propiedades de ejemplo:

  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 un grafo de propiedades

El siguiente código define el gráfico de propiedades mediante la instrucción CREATE PROPERTY GRAPH. Esta instrucción define un grafo de propiedades llamado FinGraph con los nodos Account y Person, y las aristas PersonOwnAccount y 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
    );

Actualizar un esquema de gráfico de propiedades

Una vez que haya creado un esquema de gráfico de propiedades, podrá actualizarlo mediante la instrucción CREATE OR REPLACE PROPERTY GRAPH. Esta instrucción aplica los cambios recreando el esquema del gráfico con la actualización deseada.

Puede hacer los siguientes cambios en un esquema de gráfico de propiedades:

Añadir definiciones de nodos o aristas

Para añadir un nuevo nodo y una nueva definición de arista, sigue estos pasos:

  1. Añade una tabla de entrada de definición de nodo, Company, y una tabla de entrada de definición de arista, 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. Actualiza el esquema FinGraph añadiendo la nueva definición de nodo Company y la nueva definición de arista 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
      );
    

Actualizar definiciones de nodos o aristas

Para actualizar un nodo o una definición de arista, primero debes modificar la tabla de entrada subyacente y, a continuación, usar la instrucción CREATE OR REPLACE PROPERTY GRAPH para aplicar los cambios del esquema al gráfico. Para personalizar las propiedades expuestas de las tablas de entrada, usa PROPERTIES clause. Para obtener más información, consulte Personalizar etiquetas y propiedades.

En los siguientes pasos se muestra cómo actualizar la tabla subyacente de un esquema y, a continuación, aplicar la actualización al esquema.

  1. Añada la columna mailing_address a la Person tabla de entrada subyacente.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Aplica los cambios a la tabla Person del esquema. Usa la instrucción CREATE OR REPLACE PROPERTY GRAPH. La definición del nodo Person refleja la definición actualizada de la tabla Person porque ha cambiado el esquema de la tabla de entrada.

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

Eliminar definiciones de nodos o aristas

Para quitar definiciones de nodos o aristas, vuelve a crear el gráfico de propiedades sin esas tablas de nodos o aristas.

En el siguiente ejemplo, se eliminan la definición del nodo Person y la definición del borde PersonOwnAccount omitiéndolas en la instrucción 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
    );

Eliminar un esquema de gráfico de propiedades

Para eliminar un esquema de grafo de las tablas de entrada subyacentes, usa la instrucción de DDL DROP PROPERTY GRAPH. No puedes eliminar los datos de la tabla subyacente cuando eliminas un esquema.

El siguiente código elimina el esquema del gráfico de propiedades FinGraph:

DROP PROPERTY GRAPH FinGraph;

Siguientes pasos