Questo documento descrive come modificare i dati in Spanner Graph utilizzando la console Google Cloud, Google Cloud CLI e le librerie client. La mutazione degli elementi del grafo include l'inserimento, l'aggiornamento e l'eliminazione di nodi ed elementi in Spanner Graph.
Spanner Graph mappa i dati delle tabelle ai nodi e agli archi del grafo. Per mutare i dati in un grafico, devi mutare i dati nelle tabelle di input corrispondenti. Per ulteriori informazioni, consulta la panoramica dello schema di Spanner Graph.
Prima di iniziare
Per completare i passaggi della console Google Cloud e gli esempi di codice in questo documento, devi prima seguire i passaggi descritti in Configurare e eseguire query su Spanner Graph per eseguire le seguenti operazioni:
Inserire nodi o spigoli
Per inserire nodi o archi, utilizza la console Google Cloud, Google Cloud CLI o le librerie client di Spanner per inserire righe nelle tabelle dei nodi o degli archi.
Nella console Google Cloud e in Google Cloud CLI, puoi utilizzare il linguaggio Data Manipulation Language (DML) di GoogleSQL per eseguire l'inserimento. Nella libreria client Spanner, puoi utilizzare DML o API di mutazione.
Prima di inserire un bordo, assicurati che i nodi di origine e di destinazione collegati dal bordo esistano. Se inserisci un bordo quando il nodo di origine o di destinazione collegato dal bordo non esiste, potresti ricevere errori di violazione dell'integrità referenziale. Per ulteriori informazioni, consulta Nodo di origine mancante viola la relazione INTERLEAVE IN e Nodo di destinazione mancante viola la limitazione della chiave esterna.
Gli esempi seguenti inseriscono nel
grafo i nodi Account
e gli archi Transfer
:
Console
Nella console Google Cloud, inserisci il seguente statement 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.
- Nell'interfaccia a riga di comando gcloud, 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
Vai
C++
Aggiorna nodi o archi
Per aggiornare i nodi o gli archi esistenti, utilizza la console Google Cloud, la CLI gcloud o le librerie client Spanner.
Puoi aggiornare i nodi o gli archi esistenti utilizzando un'istruzione Data Manipulation Language (DML) di GoogleSQL o query sul grafo Spanner con un'istruzione DML. Nella libreria client Spanner, puoi anche utilizzare API di mutazione.
Aggiorna nodi o archi con DML
Gli esempi seguenti aggiornano un nodo Account
e un bordo Transfer
nel grafico utilizzando DML:
Console
Nella console Google Cloud, inserisci il seguente statement 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;
Console
- Esegui istruzioni con gcloud CLI.
- Nell'interfaccia a riga di comando gcloud, 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
Vai
C++
Aggiorna i nodi o gli archi con query sui grafici e DML
I seguenti esempi aggiornano un nodo Account
e un bordo Transfer
nel grafico utilizzando le query di Spanner Graph con DML:
Console
Nella console Google Cloud, inserisci la seguente query di grafo Spanner con un'istruzione DML, quindi 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.
- Nell'interfaccia a riga di comando gcloud, 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
Vai
C++
Eliminare nodi o spigoli
Per eliminare nodi o archi esistenti, utilizza la console Google Cloud, l'interfaccia a riga di comando gcloud o le librerie client Spanner.
Nella console Google Cloud e nella CLI gcloud, puoi utilizzare il Data Manipulation Language (DML) di Google SQL per eliminare. Nella libreria client Spanner puoi utilizzare DML o API di mutazione.
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, consulta L'elemento Orfano in uscita viola la relazione padre-figlio e L'elemento Orfano in entrata viola la relazione padre-figlio.
Gli esempi riportati di seguito eliminano un'associazione Transfer
e un nodo Account
dal
grafico.
Console
- Esegui istruzioni nella console Google Cloud.
- Nella console Google Cloud, inserisci il seguente statement 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.
- Nell'interfaccia a riga di comando gcloud, 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
Vai
C++
Puoi combinare le query di 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 mutare automaticamente i dati del grafico nei seguenti modi:
- Elimina automaticamente gli archi nel grafo utilizzando l'azione ON DELETE CASCADE.
- Elimina automaticamente i nodi e gli archi nel grafo utilizzando il criterio TTL. Per ulteriori informazioni, consulta TTL su nodi ed archi.
Per aggiornare ed eliminare in blocco in modo efficiente i nodi e gli archi nel grafo, utilizza la DML partizionata.
Passaggi successivi
- Leggi la panoramica delle query di Spanner Graph.
- Scopri le best practice per l'ottimizzazione delle query di Spanner Graph.