Crea, actualiza o descarta un esquema de gráfico de Spanner

En este documento, se muestra cómo crear, actualizar o descartar un gráfico de propiedades en Spanner Graph con el esquema de ejemplo que creaste en Configura y consulta Spanner Graph.

Spanner te permite realizar actualizaciones del esquema sin tiempo de inactividad. Puedes actualizar el esquema de una base de datos existente de cualquiera de las siguientes maneras:

Crea un esquema de gráfico de propiedades

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.

Para crear un esquema de gráfico de propiedades, sigue estos pasos:

  1. Crea las tablas de entrada de nodos Person y Account. Estas tablas se usan como tablas de entrada para las definiciones de nodos en el ejemplo de grafo de propiedades.

    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. Crea las tablas de entrada de borde PersonOwnAccount y AccountTransferAccount. Estas tablas se usan como tablas de entrada para las definiciones de aristas en el ejemplo de grafo de propiedades.

    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. Define el gráfico de propiedades con la sentencia CREATE PROPERTY GRAPH de ejemplo.

    En el siguiente ejemplo, se define un gráfico de propiedades llamado FinGraph con nodos Account y Person, y 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
      );
    

En este ejemplo, se siguen estas prácticas recomendadas:

Para obtener más información, consulta Prácticas recomendadas para el diseño de esquemas de gráficos.

Para obtener información sobre los errores comunes del esquema de Spanner Graph, consulta Soluciona problemas de Spanner Graph.

Actualiza un esquema de gráfico de propiedades

Puedes actualizar un esquema de gráfico de propiedades de las siguientes maneras:

  1. Agrega definiciones de nodos o aristas nuevas.
  2. Actualiza las definiciones de nodos o aristas existentes.
  3. Quita las definiciones de nodos o aristas existentes.

En cada caso, debes volver a crear el gráfico de propiedades con el esquema actualizado.

Agrega nuevas definiciones de nodos o aristas

Para agregar un nodo nuevo y una nueva definición de borde, sigue estos pasos:

  1. Agrega tablas de entrada nuevas.

    Define las tablas de entrada asociadas con las nuevas definiciones de elementos del gráfico. Consulta el siguiente ejemplo, que agrega dos tablas de entrada nuevas, Company y 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 gráfico con CREATE OR REPLACE PROPERTY GRAPH. En el siguiente ejemplo, se actualiza el esquema FinGraph agregando una nueva definición de nodo Company y una nueva definición de borde 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
      );
    

Actualiza las definiciones de nodos o aristas existentes

Para actualizar las definiciones de nodos o aristas existentes, sigue estos pasos:

  1. Actualiza el esquema de la tabla de entrada. En el siguiente ejemplo, se agrega la columna mailing_address a la tabla de entrada Person.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Actualiza el esquema del gráfico de propiedades con CREATE OR REPLACE PROPERTY GRAPH. En el siguiente ejemplo, se agrega una propiedad nueva mailing_address a la definición del nodo Person con la sentencia CREATE OR REPLACE PROPERTY GRAPH. En este ejemplo, la definición del nodo Person recupera automáticamente la definición alterada de la tabla Person porque cambió 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
      );
    

    También puedes usar PROPERTIES clause() para personalizar las propiedades expuestas desde las tablas de entrada. Para obtener más información, consulta Cómo personalizar etiquetas y propiedades.

Quita las definiciones de nodos o aristas existentes

Para quitar las definiciones de nodos o aristas existentes, vuelve a crear el grafo de propiedades sin esas tablas de nodos o aristas.

En el siguiente ejemplo, se quita la definición del nodo Person y la definición del borde 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
  );

Cómo agregar un esquema de gráfico de propiedades

Puedes usar la declaración DDL DROP PROPERTY GRAPH para descartar el esquema de tu gráfico.

En el siguiente ejemplo, se descarta el esquema del grafo de propiedades FinGraph:

DROP PROPERTY GRAPH FinGraph;

¿Qué sigue?