Crea, actualiza o descarta un esquema de grafo de Spanner

En este documento, se muestra cómo crear, actualizar o descartar un gráfico de propiedades. en el grafo de Spanner con el esquema de ejemplo que creaste 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 los gráficos de propiedades, consulta el Descripción general del esquema del gráfico 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 del nodo en el 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);
    
  2. Crea las tablas de entrada de borde PersonOwnAccount y AccountTransferAccount. Estas tablas se usan como tablas de entrada para el de perímetro en el 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;
    
  3. Define el gráfico de propiedades con el ejemplo CREATE PROPERTY GRAPH. declaración.

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

Para obtener información sobre errores comunes del esquema del gráfico de Spanner, consulta Soluciona problemas 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 nuevas de nodos o perímetros.
  2. Actualiza las definiciones de nodos o aristas existentes.
  3. Quita las definiciones de nodos o perímetros existentes.

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

Agrega definiciones nuevas de nodos o perímetros

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

  1. Agregar nuevas tablas de entrada

    Definir las tablas de entrada asociadas con las definiciones nuevas de los elementos del gráfico. Observa 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. El En el siguiente ejemplo, se actualiza el esquema FinGraph cuando se agrega un nodo nuevo. definición 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 perímetros existentes

Para actualizar las definiciones de nodo o perímetro 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 nueva propiedad mailing_address al Definición de nodo Person con CREATE OR REPLACE PROPERTY GRAPH declaración. En este ejemplo, la definición del nodo Person se realiza automáticamente toma la definición de tabla Person alterada porque la tabla de entrada se modificó el esquema.

    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. expuestos de las tablas de entrada. Para obtener más información, consulta Personaliza etiquetas y propiedades.

Quita las definiciones de perímetro o nodo existentes

Vuelve a crear el gráfico de propiedades para quitar definiciones de nodo o perímetro existentes sin esas tablas de nodos o perímetros.

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

Descarta un esquema de gráfico de propiedades

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

En el siguiente ejemplo, se descarta el esquema del gráfico de propiedades FinGraph:

DROP PROPERTY GRAPH FinGraph;

¿Qué sigue?