Créer, mettre à jour ou supprimer un schéma de graphique Spanner

Ce document explique comment créer, mettre à jour ou supprimer un graphique de propriété dans Spanner Graph à l'aide de l'exemple de schéma que vous avez créé dans la section Configurer et interroger Spanner Graph.

Spanner vous permet d'effectuer des mises à jour de schéma sans temps d'arrêt. Vous pouvez mettre à jour le schéma d'une base de données existante de l'une des manières suivantes:

Créer un schéma de graphique de propriétés

Pour en savoir plus sur les schémas de graphiques de propriétés, consultez la présentation des schémas de graphiques Spanner.

Pour créer un schéma de graphique de propriétés, procédez comme suit:

  1. Créez les tables d'entrée de nœuds Person et Account. Ces tables sont utilisées en tant que tables d'entrée pour les définitions de nœuds dans l'exemple de graphique de propriétés.

    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. Créez les tables d'entrée périphériques PersonOwnAccount et AccountTransferAccount Ces tables sont utilisées comme tables d'entrée pour les définitions des arêtes dans l'exemple de graphique des propriétés.

    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. Définissez le graphique de propriété à l'aide de l'exemple d'instruction CREATE PROPERTY GRAPH.

    L'exemple suivant définit un graphique de propriétés nommé FinGraph avec des nœuds Account et Person, ainsi que des arêtes PersonOwnAccount et 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
      );
    

Cet exemple suit les bonnes pratiques suivantes :

Pour en savoir plus, consultez Bonnes pratiques pour la conception de schémas de graphiques

Pour en savoir plus sur les erreurs de schéma Spanner Graph courantes, consultez la section Résoudre les problèmes liés à Spanner Graph.

Mettre à jour un schéma de graphique de propriété

Vous pouvez mettre à jour le schéma d'un graphique de propriété comme suit:

  1. Ajoutez des définitions de nœuds ou d'arêtes.
  2. Mettez à jour les définitions de nœud ou d'arête existantes.
  3. Supprimez les définitions de nœud ou d'arc existantes.

Dans chaque cas, vous devez recréer le graphique de propriété avec le schéma mis à jour.

Ajouter des définitions de nœuds ou d'arêtes

Pour ajouter un nœud et une nouvelle définition de périphérie, procédez comme suit:

  1. Ajouter des tables d'entrée

    Définissez les tables d'entrée associées aux nouvelles définitions d'éléments de graphique. Consultez l'exemple suivant, ajoute deux nouvelles tables d'entrée, Company et 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. Mettez à jour le graphique avec CREATE OR REPLACE PROPERTY GRAPH. L'exemple suivant met à jour le schéma FinGraph en ajoutant une nouvelle définition de nœud Company et une nouvelle définition d'arête 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
      );
    

Mettre à jour les définitions de nœud ou d'arête existantes

Pour mettre à jour les définitions de nœud ou d'arête existantes, procédez comme suit:

  1. Mettez à jour le schéma de la table d'entrée. L'exemple suivant ajoute la colonne mailing_address à la table d'entrée Person.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Mettez à jour le schéma du graphique de propriétés avec CREATE OR REPLACE PROPERTY GRAPH. L'exemple suivant ajoute une propriété mailing_address à la définition du nœud Person à l'aide de l'instruction CREATE OR REPLACE PROPERTY GRAPH. Dans cet exemple, la définition du nœud Person récupère automatiquement la définition de la table Person modifiée, car le schéma de la table d'entrée a changé.

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

    Vous pouvez également utiliser le PROPERTIES clause() pour personnaliser les propriétés exposées depuis les tables d'entrée. Pour en savoir plus, consultez Personnaliser les libellés et les propriétés

Supprimer les définitions de nœud ou d'arête existantes

Pour supprimer les définitions de nœud ou d'arête existantes, recréez le graphique de propriétés sans ces tables de nœuds ou périphériques.

L'exemple suivant supprime la définition du nœud Person et la définition de l'arête 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
  );

Supprimer un schéma de graphique de propriété

Vous pouvez utiliser l'instruction DDL DROP PROPERTY GRAPH pour supprimer votre schéma de graphique.

L'exemple suivant supprime le schéma de graphique de la propriété FinGraph:

DROP PROPERTY GRAPH FinGraph;

Étape suivante