Questo documento descrive come modificare i dati in Spanner Graph utilizzando la consoleGoogle Cloud , Google Cloud CLI e le librerie client. La mutazione dei dati del grafico include l'inserimento, l'aggiornamento e l'eliminazione di nodi e archi in Spanner Graph.
Spanner Graph mappa i dati delle tabelle in nodi e archi del grafico. Per modificare i dati in un grafico, devi modificare i dati nelle tabelle di input corrispondenti. Per saperne di più, consulta la panoramica dello schema di Spanner Graph.
Prima di iniziare
Per completare i passaggi della console e gli esempi di codice in questo documento, devi prima seguire i passaggi descritti in Configurare ed eseguire query su Spanner Graph per: Google Cloud
Inserire nodi o archi
Per inserire nodi o archi, utilizza la console Google Cloud , Google Cloud CLIo le librerie client Spanner per inserire righe nelle tabelle dei nodi o degli archi.
Nella console Google Cloud e in Google Cloud CLI, puoi utilizzare il linguaggio di manipolazione dei dati (DML) di GoogleSQL per l'inserimento. Nella libreria client Spanner, puoi utilizzare le API DML o Mutation.
Prima di inserire un arco, assicurati che esistano i nodi di origine e di destinazione collegati dall'arco. Se inserisci un arco quando il nodo di origine o di destinazione collegato dall'arco non esiste, potresti ricevere errori di violazione dell'integrità referenziale. Per saperne di più, consulta Il nodo di origine mancante viola la relazione INTERLEAVE IN e Il nodo di destinazione mancante viola il vincolo di chiave esterna.
I seguenti esempi inseriscono nodi Account
e archi Transfer
nel
grafico:
Console
Nella Google Cloud console, inserisci la seguente istruzione DML e fai clic su Esegui query:
-- 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
- Esegui istruzioni con gcloud CLI.
- Nella gcloud CLI, esegui i seguenti comandi:
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)"
Librerie client
Python
Java
Go
C++
Aggiornare nodi o archi
Per aggiornare i nodi o gli archi esistenti, utilizza la consoleGoogle Cloud , la gcloud CLI o le librerie client Spanner.
Puoi aggiornare nodi o archi esistenti utilizzando un'istruzione Data Manipulation Language (DML) GoogleSQL o query Spanner Graph con un'istruzione DML. Nella libreria client Spanner, puoi utilizzare anche le API Mutation.
Aggiorna nodi o archi con DML
I seguenti esempi aggiornano un nodo Account
e un arco Transfer
nel
grafico utilizzando DML:
Console
Nella Google Cloud console, inserisci la seguente istruzione DML e fai clic su Esegui query:
-- 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
- Esegui istruzioni con gcloud CLI.
- Nella gcloud CLI, esegui i seguenti comandi:
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"
Librerie client
Python
Java
Go
C++
Aggiornare nodi o archi con query grafiche e DML
Gli esempi seguenti aggiornano un nodo Account
e un arco Transfer
nel grafico utilizzando query Spanner Graph con DML:
Console
Nella Google Cloud console, inserisci la seguente query Spanner Graph con un'istruzione DML, poi fai clic su Esegui query:
-- 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
- Esegui istruzioni con gcloud CLI.
- Nella gcloud CLI, esegui i seguenti comandi:
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 }"
Librerie client
Python
Java
Go
C++
Eliminare nodi o archi
Per eliminare nodi o archi esistenti, utilizza la consoleGoogle Cloud , gcloud CLI o le librerie client Spanner.
Nella console Google Cloud e in gcloud CLI, puoi utilizzare GoogleSQL Data Manipulation Language (DML) per l'eliminazione. Nella libreria client Spanner, puoi utilizzare le API DML o Mutation.
Prima di eliminare un nodo, assicurati che non esistano archi che fanno riferimento al nodo. Se esistono questi tipi di bordi, potresti ricevere errori di violazione dell'integrità referenziale. Per ulteriori informazioni, vedi Arco in uscita orfano viola la relazione padre-figlio e Arco in entrata orfano viola la relazione padre-figlio.
Gli esempi riportati di seguito eliminano un arco Transfer
e un nodo Account
dal
grafico.
Console
- Esegui istruzioni nella console Google Cloud .
- Nella console Google Cloud , inserisci la seguente istruzione DML e fai clic su Esegui query:
-- Delete Transfer edge
DELETE FROM AccountTransferAccount
WHERE id = 1 AND to_id = 2;
-- Delete Account node
DELETE FROM Account WHERE id = 2;
gcloud
- Esegui istruzioni con gcloud CLI.
- Nella gcloud CLI, esegui i seguenti comandi:
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"
Librerie client
Python
Java
Go
C++
Puoi combinare le query Spanner Graph con l'istruzione DML, come mostrato nell'esempio seguente:
-- 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
}
Opzioni per la mutazione dei dati del grafico
Puoi modificare automaticamente i dati del grafico nei seguenti modi:
- Elimina automaticamente i bordi nel grafico utilizzando l'azione ON DELETE CASCADE.
- Elimina automaticamente nodi e archi nel grafico utilizzando la policy TTL. Per maggiori informazioni, consulta TTL su nodi e bordi.
Per aggiornare ed eliminare in blocco in modo efficiente nodi e archi nel grafico, utilizza DML partizionato.
Passaggi successivi
- Leggi la panoramica delle query Spanner Graph.
- Scopri le best practice per l'ottimizzazione delle query Spanner Graph.