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:
La console Google Cloud
Envoyez une commande sur la page Spanner Studio.
Pour accéder à la page Spanner Studio, cliquez sur Spanner Studio dans la vue d'ensemble de la base de données ou dans un tableau page de présentation. Pour en savoir plus sur l'accès à Spanner Studio, consultez la page Gérer vos données à l'aide de la console Google Cloud.
Outil de ligne de commande
gcloud spanner
Envoyez une commande à l'aide des
gcloud spanner databases ddl update
.La API REST
projects.instances.databases.updateDdl
L'API RPC
UpdateDatabaseDdl
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:
Créez les tables d'entrée de nœuds
Person
etAccount
. 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);
Créez les tables d'entrée périphériques
PersonOwnAccount
etAccountTransferAccount
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;
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œudsAccount
etPerson
, ainsi que des arêtesPersonOwnAccount
etAccountTransferAccount
.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 :
- Entrelacez les arêtes sous les nœuds source ou de destination.
- Évitez les bords non connectés à l'aide de contraintes référentielles.
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:
- Ajoutez des définitions de nœuds ou d'arêtes.
- Mettez à jour les définitions de nœud ou d'arête existantes.
- 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:
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
etPersonInvestCompany
: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;
Mettez à jour le graphique avec
CREATE OR REPLACE PROPERTY GRAPH
. L'exemple suivant met à jour le schémaFinGraph
en ajoutant une nouvelle définition de nœudCompany
et une nouvelle définition d'arêtePersonInvestCompany
: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:
Mettez à jour le schéma de la table d'entrée. L'exemple suivant ajoute la colonne
mailing_address
à la table d'entréePerson
.ALTER TABLE Person ADD COLUMN mailing_address STRING(MAX);
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œudPerson
à l'aide de l'instructionCREATE OR REPLACE PROPERTY GRAPH
. Dans cet exemple, la définition du nœudPerson
récupère automatiquement la définition de la tablePerson
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
- Insérer, mettre à jour ou supprimer des données Spanner Graph
- En savoir plus sur les requêtes Graph de Spanner
- Découvrez les bonnes pratiques pour optimiser les requêtes Spanner Graph.