<ph type="x-smartling-placeholder">
Ce document explique comment muter des données dans Spanner Graph à l'aide de la console Google Cloud, de la Google Cloud CLI et des bibliothèques clientes. Modification en cours les données du graphique incluent l'insertion, la mise à jour et la suppression de nœuds et d'arêtes Graphique Spanner.
Spanner Graph mappe les données des tables aux nœuds et aux arêtes des graphiques. Pour muter des données dans un graphique, vous devez muter les données dans les tables d'entrée correspondantes. Pour plus consultez les Présentation du schéma Spanner Graph
Avant de commencer
Pour suivre les étapes de la console Google Cloud et les exemples de code de ce document, vous devez d'abord suivre les étapes de la section Configurer et interroger Spanner Graph pour effectuer les opérations suivantes :
- Créez une instance.
- Créez une base de données avec un schéma Spanner.
- Insérer des données de graphique
Insérer des nœuds ou des arêtes
Pour insérer des nœuds ou des arêtes, utilisez la console Google Cloud, Google Cloud CLI, ou Bibliothèques clientes Spanner pour insérer des lignes dans des tables de nœuds ou périphériques.
Dans la console Google Cloud et dans la Google Cloud CLI, vous pouvez utiliser le langage de manipulation de données (LMD) GoogleSQL pour effectuer des insertions. Dans la bibliothèque cliente Spanner, vous pouvez utiliser le langage de manipulation de données ou les API Mutation.
Avant d'insérer une arête, assurez-vous que les nœuds source et de destination reliées par le point d'accès existent. Si vous insérez une arête alors que le nœud source ou de destination auquel elle est connectée n'existe pas, vous pouvez rencontrer des erreurs de non-respect de l'intégrité référentielle. Pour en savoir plus, consultez Le nœud source manquant ne respecte pas la relation INTERLEAVE IN et Le nœud de destination manquant ne respecte pas la contrainte de clé étrangère.
Les exemples suivants insèrent des nœuds Account
et des arêtes Transfer
dans le graphique :
Console
Dans la console Google Cloud, saisissez l'instruction DML suivante, puis cliquez sur Exécuter la requête :
-- 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
- Exécutez des instructions avec la gcloud CLI.
- Dans la gcloud CLI, exécutez les commandes suivantes :
gcloud spanner databases execute-sql example-db --instance=test-instance \ --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 example-db --instance=test-instance \ --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 example-db --instance=test-instance \ --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 example-db --instance=test-instance \ --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)"
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 la console Google Cloud, gcloud CLI ou Bibliothèques clientes Spanner.
Vous pouvez mettre à jour des nœuds ou des arêtes existants à l'aide d'une instruction langage de manipulation de données (LMD) GoogleSQL ou de requêtes Spanner Graph avec une instruction LMD. Dans la 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 mettent à jour un nœud Account
et une arête Transfer
dans le graphique à l'aide de la LMD :
Console
Dans la console Google Cloud, saisissez l'instruction DML suivante, puis cliquez sur Exécuter la requête :
-- 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;
Console
- Exécutez des instructions avec la gcloud CLI.
- Dans la gcloud CLI, exécutez les commandes suivantes:
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="UPDATE Account SET is_blocked = false WHERE id = 2"
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="UPDATE AccountTransferAccount SET amount = 300 WHERE id = 1 AND to_id = 2"
Bibliothèques clientes
Python
Java
Go
C++
Mettre à jour des nœuds ou des arêtes à l'aide de requêtes de graphique et de langage LMD
Les exemples suivants mettent à jour un nœud Account
et une arête Transfer
dans le graphique à l'aide de requêtes Spanner Graph avec DML :
Console
Dans la console Google Cloud, saisissez la requête Spanner Graph suivante avec une instruction DML, puis cliquez sur Run Query (Exécuter la requête) :
-- 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
- Exécuter des instructions avec la gcloud CLI
- Dans la gcloud CLI, exécutez les commandes suivantes :
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="UPDATE Account SET is_blocked = false"
gcloud spanner databases execute-sql example-db --instance=test-instance \ --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 }"
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 pouvez utiliser le langage de manipulation de données (LMD) GoogleSQL pour effectuer des suppressions. Dans la bibliothèque cliente Spanner, vous pouvez utiliser le langage de manipulation de données ou les API Mutation.
Avant de supprimer un nœud, assurez-vous qu'aucun arc ne le concerne. Si ces types d'arêtes existent, vous pouvez obtenir une violation les erreurs. Pour en savoir plus, consultez Arête sortante orpheline non conforme à la relation parent-enfant et Arête entrante orpheline non conforme à la relation parent-enfant.
Les exemples suivants suppriment une arête Transfer
et un nœud Account
du graphique.
Console
- Exécutez les instructions dans la console Google Cloud.
- Dans la console Google Cloud, saisissez l'instruction DML suivante, puis cliquez sur Run Query (Exécuter la requête) :
-- Delete Transfer edge
DELETE FROM AccountTransferAccount
WHERE id = 1 AND to_id = 2;
-- Delete Account node
DELETE FROM Account WHERE id = 2;
gcloud
- Exécutez des instructions avec la gcloud CLI.
- Dans la gcloud CLI, exécutez les commandes suivantes:
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="DELETE FROM AccountTransferAccount WHERE id = 1 AND to_id = 2"
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="DELETE FROM Account WHERE id = 2"
Bibliothèques clientes
Python
Java
Go
C++
Vous pouvez combiner des requêtes de graphique Spanner avec votre instruction LMD, comme indiqué 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
}
Options de mutation des données de graphique
Vous pouvez modifier automatiquement les données de graphique de différentes manières :
- Supprimez automatiquement les arêtes du graphique à l'aide de l'action ON DELETE CASCADE.
- Supprimez automatiquement les nœuds et les arêtes du graphique à l'aide de la Règle TTL. Pour en savoir plus, consultez Valeur TTL sur les nœuds et les périphéries.
Pour mettre à jour et supprimer efficacement des nœuds et des arêtes du graphique de manière groupée, utilisez le LMD partitionné.
Étape suivante
- Consultez la présentation des requêtes de graphique Spanner.
- Découvrez les bonnes pratiques pour le réglage des requêtes de graphique Spanner.