Ce document explique comment muter des données dans Spanner Graph à l'aide de la consoleGoogle Cloud , de la Google Cloud CLI et des bibliothèques clientes. La mutation des données de graphique inclut l'insertion, la mise à jour et la suppression de nœuds et d'arêtes dans Spanner Graph.
Spanner Graph met en correspondance les données des tables avec les nœuds et les arêtes du graphique. Pour muter des données dans un graphique, vous devez muter les données dans les tables d'entrée correspondantes. Pour en savoir plus, consultez la présentation du schéma de graphique Spanner.
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érez les données du 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 , la CLI Google Cloud ou les bibliothèques clientes Spanner pour insérer des lignes dans des tables de nœuds ou d'arêtes.
Dans la console Google Cloud et dans Google Cloud CLI, vous pouvez utiliser le langage de manipulation des données (LMD) GoogleSQL pour effectuer des insertions. Dans la bibliothèque cliente Spanner, vous pouvez utiliser le LMD ou les API Mutation.
Avant d'insérer une arête, assurez-vous que les nœuds source et de destination connectés par l'arête 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 les articles 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 LMD 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 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 consoleGoogle Cloud , la gcloud CLI ou les 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 LMD 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 graphes 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 LMD:
Console
Dans la console Google Cloud , saisissez la requête Spanner Graph suivante avec une instruction LMD, puis cliquez sur 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é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"
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 consoleGoogle Cloud , la gcloud CLI ou les bibliothèques clientes Spanner.
Dans la console Google Cloud et gcloud CLI, vous pouvez utiliser le langage de manipulation des données (LMD) Google SQL pour effectuer une suppression. Dans la bibliothèque cliente Spanner, vous pouvez utiliser le LMD 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 risquez de rencontrer des erreurs de non-respect de l'intégrité référentielle. 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écuter des instructions dans la console Google Cloud
- Dans la console Google Cloud , saisissez l'instruction LMD suivante, puis cliquez sur 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 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 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
}
Options de modification 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 la section TTL sur les nœuds et les arêtes.
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 optimiser les requêtes Spanner Graph.