Ce document vous explique comment gérer les données d'un graphique Spanner en insérant, en mettant à jour et en supprimant des nœuds et des arêtes. Spanner Graph mappe les données des tables aux nœuds et aux arêtes du graphique. Pour modifier des données dans un graphique, vous devez les modifier dans les tables d'entrée correspondantes.Vous pouvez utiliser la console Google Cloud , la Google Cloud CLI ou les bibliothèques clientes Spanner pour gérer les données graphiques.
Configurer Spanner Graph
Avant de pouvoir gérer des données dans un graphique Spanner, vous devez configurer un graphique Spanner en procédant comme suit :
Créez une base de données dans votre instance Spanner.
Insérez des données de graphique dans votre base de données.
Les exemples de ces sections utilisent l'instance et la base de données que vous avez créées lorsque vous avez configuré votre Spanner Graph lors des étapes précédentes.
Insérer des nœuds ou des arêtes
Pour insérer des nœuds ou des arêtes dans des tables de nœuds ou d'arêtes, utilisez la console Google Cloud , la gcloud CLI ou les bibliothèques clientes Spanner.
Dans la console Google Cloud et dans la gcloud CLI, vous pouvez utiliser le langage de manipulation de données (LMD) GoogleSQL. Dans la bibliothèque cliente Spanner, vous pouvez utiliser les API LMD ou Mutation.
Avant d'insérer un bord, assurez-vous que les nœuds source et de destination connectés par le bord existent. Si vous insérez un bord alors que le nœud source ou de destination connecté par le bord n'existe pas, vous pouvez obtenir des erreurs de non-respect de l'intégrité référentielle. Pour en savoir plus, consultez Le nœud source manquant enfreint la relation INTERLEAVE IN et Le nœud de destination manquant enfreint la contrainte de clé étrangère.
Les exemples suivants insèrent des nœuds Account
et des arêtes Transfer
dans la base de données que vous avez créée dans Configurer votre graphique Spanner.
Console
Dans la console Google Cloud , exécutez l'instruction LMD suivante. Pour en savoir plus, consultez Exécuter des instructions dans la console Google Cloud .
-- Insert 2 Account nodes.
INSERT INTO Account (id, create_time, is_blocked)
VALUES (1, CAST('2000-08-10 08:18:48.463959-07:52' AS TIMESTAMP), false);
INSERT INTO Account (id, create_time, is_blocked)
VALUES (2, CAST('2000-08-12 07:13:16.463959-03:41' AS TIMESTAMP), true);
-- Insert 2 Transfer edges.
INSERT INTO AccountTransferAccount (id, to_id, create_time, amount)
VALUES (1, 2, CAST('2000-09-11 03:11:18.463959-06:36' AS TIMESTAMP), 100);
INSERT INTO AccountTransferAccount (id, to_id, create_time, amount)
VALUES (1, 1, CAST('2000-09-12 04:09:34.463959-05:12' AS TIMESTAMP), 200);
gcloud
Dans gcloud CLI, exécutez les commandes suivantes. Pour en savoir plus, consultez Exécuter des instructions avec la gcloud CLI.
gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --sql="INSERT INTO Account (id, create_time, is_blocked) VALUES (1, CAST('2000-08-10 08:18:48.463959-07:52' AS TIMESTAMP), false)"
gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --sql="INSERT INTO Account (id, create_time, is_blocked) VALUES (2, CAST('2000-08-12 07:13:16.463959-03:41' AS TIMESTAMP), true)"
gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --sql="INSERT INTO AccountTransferAccount (id, to_id, create_time, amount) VALUES (1, 2, CAST('2000-09-11 03:11:18.463959-06:36' AS TIMESTAMP), 100)"
gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --sql="INSERT INTO AccountTransferAccount (id, to_id, create_time, amount) VALUES (1, 1, CAST('2000-09-12 04:09:34.463959-05:12' AS TIMESTAMP), 200)"
Remplacez les éléments suivants :
- DATABASE_NAME : nom de votre base de données.
- INSTANCE_NAME : nom de votre instance.
Bibliothèques clientes
Python
Java
Go
C++
Mettre à jour des nœuds ou des arêtes
Pour mettre à jour des nœuds ou des arêtes existants, utilisez la consoleGoogle Cloud , la CLI gcloud ou les bibliothèques clientes Spanner.
Vous pouvez mettre à jour des nœuds ou des arêtes existants à l'aide d'une instruction LMD (langage de manipulation de données) GoogleSQL ou de requêtes Spanner Graph avec une instruction LMD. Si vous utilisez une bibliothèque cliente Spanner, vous pouvez également utiliser les API Mutation.
Mettre à jour des nœuds ou des arêtes avec le langage LMD
Les exemples suivants utilisent le langage LMD pour mettre à jour le nœud Account
et l'arête Transfer
que vous avez ajoutés dans Insérer des nœuds ou des arêtes.
Console
Dans la console Google Cloud , exécutez l'instruction LMD suivante. Pour en savoir plus, consultez Exécuter des instructions dans la console Google Cloud .
-- Update Account node
UPDATE Account SET is_blocked = false WHERE id = 2;
-- Update Transfer edge
UPDATE AccountTransferAccount
SET amount = 300
WHERE id = 1 AND to_id = 2;
gcloud
- Exécutez des instructions avec gcloud CLI.
- Dans gcloud CLI, exécutez les commandes suivantes :
gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --sql="UPDATE Account SET is_blocked = false WHERE id = 2"
gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --sql="UPDATE AccountTransferAccount SET amount = 300 WHERE id = 1 AND to_id = 2"
Remplacez les éléments suivants :
- DATABASE_NAME : nom de votre base de données.
- INSTANCE_NAME : nom de votre instance.
Bibliothèques clientes
Python
Java
Go
C++
Mettre à jour des nœuds ou des arêtes avec des requêtes de graphe et le langage LMD
Les exemples suivants utilisent des requêtes Spanner Graph avec LMD pour mettre à jour le nœud Account
et l'arête Transfer
que vous avez ajoutés dans Insérer des nœuds ou des arêtes.
Console
Dans la console Google Cloud , exécutez l'instruction LMD suivante. Pour en savoir plus, consultez Exécuter des instructions dans la console Google Cloud .
-- Use Graph pattern matching to identify Account nodes to update:
UPDATE Account SET is_blocked = false
WHERE id IN {
GRAPH FinGraph
MATCH (a:Account WHERE a.id = 1)-[:Transfers]->{1,2}(b:Account)
RETURN b.id
}
gcloud
Dans gcloud CLI, exécutez les commandes suivantes. Pour en savoir plus, consultez Exécuter des instructions avec la gcloud CLI.
gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE_NAME \ --sql="UPDATE Account SET is_blocked = false"
gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --sql="UPDATE AccountTransferAccount SET amount = 300 WHERE id = 1 AND to_id = 2" --sql=" WHERE id IN { GRAPH FinGraph MATCH (a:Account WHERE a.id = 1)-[:Transfers]->{1,2}(b:Account) RETURN b.id }"
Remplacez les éléments suivants :
- DATABASE_NAME : nom de votre base de données.
- INSTANCE_NAME : nom de votre instance.
Bibliothèques clientes
Python
Java
Go
C++
Supprimer des nœuds ou des arêtes
Pour supprimer des nœuds ou des arêtes existants, utilisez la console Google Cloud , la gcloud CLI ou les bibliothèques clientes Spanner.
Dans la console Google Cloud et la gcloud CLI, vous utilisez le langage de manipulation de données (LMD) GoogleSQL pour supprimer des données. Dans la bibliothèque cliente Spanner, vous pouvez utiliser les API LMD ou Mutation pour supprimer des nœuds ou des arêtes.
Pour éviter les erreurs de non-respect de l'intégrité référentielle, assurez-vous qu'aucune arête ne fait référence à un nœud lorsque vous le supprimez. Pour en savoir plus, consultez L'arête sortante orpheline ne respecte pas la relation parent-enfant et L'arête entrante orpheline ne respecte pas la relation parent-enfant.
Les exemples suivants suppriment un bord Transfer
et un nœud Account
du graphique.
Console
Dans la console Google Cloud , exécutez l'instruction LMD suivante. Pour en savoir plus, consultez Exécuter des instructions dans la console Google Cloud .
-- Delete Transfer edge
DELETE FROM AccountTransferAccount
WHERE id = 1 AND to_id = 2;
-- Delete Account node
DELETE FROM Account WHERE id = 2;
gcloud
Dans gcloud CLI, exécutez les commandes suivantes. Pour en savoir plus, consultez Exécuter des instructions avec la gcloud CLI.
gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --sql="DELETE FROM AccountTransferAccount WHERE id = 1 AND to_id = 2"
gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --sql="DELETE FROM Account WHERE id = 2"
Remplacez les éléments suivants :
- DATABASE_NAME : nom de votre base de données.
- INSTANCE_NAME : nom de votre instance.
Bibliothèques clientes
Python
Java
Go
C++
Vous pouvez combiner des requêtes Spanner Graph avec votre instruction LMD, comme illustré dans l'exemple suivant :
-- Use Graph pattern matching to identify Account nodes to delete:
DELETE FROM AccountTransferAccount
WHERE id IN {
GRAPH FinGraph
MATCH (a:Account WHERE a.id = 1)-[:Transfers]->(b:Account)
RETURN b.id
}
Opérations de données automatisées et groupées
En plus d'utiliser le LMD pour insérer, mettre à jour et supprimer des nœuds et des arêtes individuels, vous pouvez également utiliser les méthodes suivantes pour gérer vos données Spanner Graph :
Vous pouvez automatiser la suppression des arêtes d'un graphique à l'aide de l'action ON DELETE CASCADE.
Vous pouvez automatiser la suppression des nœuds et des arêtes du graphique à l'aide d'une règle TTL. Pour en savoir plus, consultez TTL sur les nœuds et les périphéries.
Mettez à jour et supprimez efficacement des nœuds et des arêtes dans le graphique à l'aide du LMD partitionné.
Étapes suivantes
- Consultez la présentation des requêtes Spanner Graph.
- Découvrez les bonnes pratiques pour ajuster les requêtes Spanner Graph.