Ce document explique comment gérer les données d'un graphique 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 les données d'un graphique, vous devez modifier les données des tables d'entrée correspondantes. Vous pouvez utiliser la Google Cloud console, la Google Cloud CLI ou les bibliothèques clientes Spanner pour gérer les données du graphique.
Configurer Spanner Graph
Avant de pouvoir gérer les données dans Spanner Graph, vous devez configurer un graphique 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 lors de la configuration de Spanner Graph à l'aide 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 Google Cloud console, la gcloud CLI ou les bibliothèques clientes Spanner.
Dans la Google Cloud console et dans la gcloud CLI, vous pouvez utiliser le GoogleSQL langage de manipulation de données (LMD). Dans la bibliothèque cliente Spanner, vous pouvez utiliser les LMD ou 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 connecté par l'arête n'existe pas, vous risquez de recevoir des erreurs de violation de l'intégrité référentielle. Pour en savoir plus, consultez Les nœuds source manquants enfreignent la relation INTERLEAVE IN et Les nœuds de destination manquants enfreignent 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 Spanner Graph.
Console
Dans la Google Cloud console, exécutez l'instruction LMD suivante. Pour en savoir plus, consultez Exécuter des instructions dans la Google Cloud console.
-- 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 la 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 l'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 Google Cloud console, 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 LMD (langage de manipulation de données) GoogleSQL Langage de manipulation de données (LMD) 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 Google Cloud console, exécutez l'instruction LMD suivante. Pour en savoir plus, consultez Exécuter des instructions dans la Google Cloud console.
-- 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 la gcloud CLI.
- Dans la 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 l'instance.
Bibliothèques clientes
Python
Java
Go
C++
Mettre à jour des nœuds ou des arêtes avec des requêtes de graphique et le langage LMD
Les exemples suivants utilisent des requêtes Spanner Graph avec le langage LMD pour mettre à jour le
Account nœud et Transfer l'arête que vous avez ajoutés dans
Insérer des nœuds ou des arêtes.
Console
Dans la Google Cloud console, exécutez l'instruction LMD suivante. Pour en savoir plus, consultez Exécuter des instructions dans la Google Cloud console.
-- 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 la 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 l'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 Google Cloud console, la gcloud CLI, ou les bibliothèques clientes Spanner.
Dans la Google Cloud console et la gcloud CLI, vous utilisez le langage de manipulation de données GoogleSQL (LMD) pour supprimer des éléments. Dans la bibliothèque cliente Spanner, vous pouvez utiliser les LMD ou Mutation pour supprimer des nœuds ou des arêtes.
Pour éviter les erreurs de violation 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 Les arêtes sortantes orphelines enfreignent la relation parent-enfant et Les arêtes entrantes orphelines enfreignent la relation parent-enfant.
Les exemples suivants suppriment une arête Transfer et un nœud Account du graphique.
Console
Dans la Google Cloud console, exécutez l'instruction LMD suivante. Pour en savoir plus, consultez Exécuter des instructions dans la Google Cloud console.
-- Delete Transfer edge
DELETE FROM AccountTransferAccount
WHERE id = 1 AND to_id = 2;
-- Delete Account node
DELETE FROM Account WHERE id = 2;
gcloud
Dans la 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 l'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 langage 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 TTL. Pour en savoir plus, consultez TTL sur les nœuds et les arêtes.
Mettez à jour et supprimez efficacement des nœuds et des arêtes de manière groupée dans le graphique à l'aide du langage LMD partitionné. partitioned DML.
Étape suivante
- Consultez la présentation des requêtes Spanner Graph.
- Découvrez les bonnes pratiques pour ajuster les requêtes Spanner Graph.