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 plusieurs manières:

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

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

Pour créer un schéma de graphique d'établissement, procédez comme suit:

  1. Créez les tables d'entrée de nœud Person et Account. Ces tables sont utilisées comme 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 de bord PersonOwnAccount et AccountTransferAccount. Ces tables sont utilisées comme tables d'entrée pour les définitions d'arêtes dans l'exemple de graphique de 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és à 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 les bonnes pratiques de 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 le schéma d'un graphique de propriété

Vous pouvez mettre à jour le schéma d'un graphique de propriétés de l'une des manières suivantes:

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

Dans chaque cas, vous devez recréer le graphique de la 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 définition de bord, 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, qui ajoute deux 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œuds ou d'arêtes existantes

Pour mettre à jour les définitions de nœuds ou d'arêtes 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 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 PROPERTIES clause() pour personnaliser les propriétés exposées à partir des tables d'entrée. Pour en savoir plus, consultez la section Personnaliser les libellés et les propriétés.

Supprimer des définitions de nœud ou d'arc existantes

Pour supprimer les définitions de nœuds ou d'arêtes existantes, recréez le graphique de la propriété sans ces tables de nœuds ou d'arêtes.

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

Ajouter un schéma de graphique de propriétés

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

L'exemple suivant supprime le schéma de graphe de propriétés FinGraph:

DROP PROPERTY GRAPH FinGraph;

Étape suivante