Ce document fournit un guide sur la gestion des schémas Spanner Graph, en détaillant les processus de création, mise à jour, et suppression de schémas à l'aide d'instructions LDD. Les schémas Spanner Graph peuvent également être créés dans Spanner Studio sans écrire manuellement d'instructions LDD.
Pour en savoir plus sur les schémas de graphe de propriétés, consultez la présentation des schémas Spanner Graph. Si vous rencontrez des erreurs lorsque vous créez un schéma de graphe de propriétés, consultez Résoudre les problèmes liés à Spanner Graph.
Créer un schéma de graphe de propriétés
Vous pouvez créer un schéma de graphe de propriétés à l'aide de vues ou de tables. Pour créer un schéma de graphe de propriétés à l'aide de tables, procédez comme suit :
- Créez les tables d'entrée de nœuds.
- Créez les tables d'entrée d'arêtes.
- Définissez le graphe de propriétés.
Pour savoir comment utiliser des vues SQL afin de créer un schéma de graphe de propriétés, consultez Créer un Spanner Graph à partir d'une vue SQL.
Lorsque vous créez un schéma de graphe de propriétés, veillez à tenir compte des bonnes pratiques. Les sections suivantes montrent comment utiliser des tables pour créer un exemple de schéma de graphe de propriétés :
Créer des tables d'entrée de nœuds
Le code suivant crée deux tables d'entrée de nœuds, Person et Account, qui servent d'entrée pour les définitions de nœuds dans l'exemple de graphe 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éer des tables d'entrée d'arêtes
Le code suivant crée deux tables d'entrée d'arêtes, PersonOwnAccount et AccountTransferAccount, comme entrée pour les définitions d'arêtes dans l'exemple de graphe 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;
Définir un graphe de propriétés
Le code suivant utilise des tables et l'instruction CREATE PROPERTY GRAPH pour définir un graphe de propriétés. Cette instruction définit un graphe de propriétés nommé
FinGraph avec Account et Person nœuds, et PersonOwnAccount et
AccountTransferAccount arêtes :
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
);
Mettre à jour un schéma de graphe de propriétés
Une fois que vous avez créé un schéma de graphe de propriétés, vous pouvez le mettre à jour à l'aide de l'instruction CREATE OR
REPLACE PROPERTY GRAPH. Cette instruction applique les modifications en recréant le schéma de graphe avec la mise à jour souhaitée.
Vous pouvez apporter les modifications suivantes à un schéma de graphe de propriétés :
Ajouter une définition de nœud ou d'arête : créez les nouvelles tables d'entrée pour les nœuds et les arêtes, puis utilisez l'instruction
CREATE OR REPLACE PROPERTY GRAPHpour ajouter les nouvelles définitions au graphe.Mettre à jour une définition de nœud ou d'arête : mettez à jour la table d'entrée sous-jacente avec de nouvelles définitions de nœuds et d'arêtes. Ensuite, utilisez l'instruction
CREATE OR REPLACE PROPERTY GRAPHpour mettre à jour les définitions dans le graphe.Supprimer une définition de nœud ou d'arête : utilisez l'instruction
CREATE OR REPLACE PROPERTY GRAPHet omettez les définitions que vous souhaitez supprimer du graphe.
Ajouter de nouvelles définitions de nœuds ou d'arêtes
Pour ajouter un nouveau nœud et une nouvelle définition d'arête, procédez comme suit :
Ajoutez une nouvelle table d'entrée de définition de nœud,
Company, et une nouvelle table d'entrée de définition input table,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;Mettez à jour le schéma
FinGraphen ajoutant la nouvelle définition de nœudCompanyet la 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 des définitions de nœuds ou d'arêtes
Pour mettre à jour une définition de nœud ou d'arête existante, vous devez d'abord modifier la table d'entrée sous-jacente, puis utiliser l'instruction CREATE OR REPLACE PROPERTY GRAPH pour appliquer les modifications de schéma au graphe. Pour personnaliser les
propriétés exposées à partir des tables d'entrée, utilisez les
PROPERTIES clause.
Pour en savoir plus, consultez
Personnaliser les libellés et les propriétés.
Les étapes suivantes montrent comment mettre à jour la table sous-jacente d'un schéma, puis appliquer la mise à jour au schéma.
Ajoutez la colonne
mailing_addressà la table d'entrée sous-jacentePerson.ALTER TABLE Person ADD COLUMN mailing_address STRING(MAX);Appliquez les modifications à la table
Persondu schéma. Utilisez l'instructionCREATE OR REPLACE PROPERTY GRAPH. La définition de nœudPersonreflète la définition de tablePersonmise à jour, 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 );
Supprimer des définitions de nœuds ou d'arêtes
Pour supprimer des définitions de nœuds ou d'arêtes existantes, recréez le graphe de propriétés sans ces tables de nœuds ou d'arêtes.
Le code suivant supprime la définition de nœud Person et la définition d'arête PersonOwnAccount
en les omettant dans l'instruction CREATE OR REPLACE PROPERTY GRAPH.
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 graphe de propriétés
Pour supprimer un schéma de graphe des tables d'entrée sous-jacentes, utilisez l'instruction LDD DROP PROPERTY
GRAPH. Vous ne pouvez pas supprimer les données de la table sous-jacente lorsque vous supprimez un schéma.
Le code suivant supprime le schéma de graphe de propriétés FinGraph :
DROP PROPERTY GRAPH FinGraph;
Créer un graphe de propriétés dans un schéma nommé
Spanner Graph permet de créer des graphes de propriétés dans un schéma nommé.
L'exemple suivant crée deux schémas nommés sch1 et sch2, une table de nœuds et d'arêtes dans le schéma sch1, ainsi qu'un graphe de nœuds et de propriétés dans le schéma sch2 :
CREATE SCHEMA sch1;
CREATE SCHEMA sch2;
CREATE TABLE sch1.Person (
id INT64 NOT NULL,
name STRING(MAX),
birthday TIMESTAMP,
country STRING(MAX),
city STRING(MAX),
) PRIMARY KEY (id);
CREATE TABLE sch2.Account (
id INT64 NOT NULL,
create_time TIMESTAMP,
is_blocked BOOL,
nick_name STRING(MAX),
) PRIMARY KEY (id);
CREATE TABLE sch1.PersonOwnAccount (
id INT64 NOT NULL,
account_id INT64 NOT NULL,
create_time TIMESTAMP,
FOREIGN KEY (account_id) REFERENCES sch2.Account (id)
) PRIMARY KEY (id, account_id),
INTERLEAVE IN PARENT sch1.Person ON DELETE CASCADE;
CREATE OR REPLACE PROPERTY GRAPH sch2.FinGraph
NODE TABLES (
sch1.Person,
sch2.Account
)
EDGE TABLES (
sch1.PersonOwnAccount
SOURCE KEY (id) REFERENCES Person (id)
DESTINATION KEY (account_id) REFERENCES Account (id)
LABEL Owns
);
Étape suivante
- Gérer les données Spanner Graph.
- En savoir plus sur les requêtes Spanner Graph.
- Découvrez les bonnes pratiques pour ajuster les requêtes Spanner Graph.