Ce document explique comment modifier des données dans Spanner Graph à l'aide de la consoleGoogle Cloud , de Google Cloud CLI et des bibliothèques clientes. La mutation des données graphiques inclut l'insertion, la mise à jour et la suppression de nœuds et d'arêtes dans Spanner Graph.
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 modifier les données dans les tables d'entrée correspondantes. Pour en savoir plus, consultez la présentation du schéma Spanner Graph.
Avant de commencer
Pour effectuer les étapes de la console Google Cloud et les exemples de code de ce document, vous devez d'abord suivre les étapes de 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 Google Cloud CLI ou les bibliothèques clientes Spanner pour insérer des lignes dans les 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 de données (LMD) GoogleSQL pour insérer des données. 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 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 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 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. 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 un bord Transfer
dans le graphique à l'aide du 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;
gcloud
- Exécutez des instructions avec gcloud CLI.
- Dans 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 avec des requêtes de graphe et le langage LMD
Les exemples suivants mettent à jour un nœud Account
et un bord 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 gcloud CLI.
- Dans 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 la gcloud CLI, vous pouvez utiliser le langage de manipulation de données (LMD) GoogleSQL pour supprimer des données. Dans la bibliothèque cliente Spanner, vous pouvez utiliser le LMD ou les API Mutation.
Avant de supprimer un nœud, assurez-vous qu'il n'existe aucun bord qui y fait référence. Si ces types d'arêtes existent, vous risquez d'obtenir des erreurs de non-respect de l'intégrité référentielle. 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
- Exécutez 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 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 mutation des données graphiques
Vous pouvez modifier automatiquement les données graphiques 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 TTL sur les nœuds et les périphéries.
Pour mettre à jour et supprimer efficacement des nœuds et des arêtes de manière groupée dans le graphique, utilisez le 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.