Questo documento descrive come mutare i dati in Spanner Graph utilizzando il comando Console Google Cloud, Google Cloud CLI e librerie client. La mutazione degli elementi del grafo include l'inserimento, l'aggiornamento e l'eliminazione di nodi ed elementi in Spanner Graph.
Il grafico Spanner mappa i dati dalle tabelle ai nodi e ai bordi del grafico. Modificare 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, oppure il Librerie client di Spanner per inserire righe nelle tabelle di nodi o perimetrali.
Nella console Google Cloud e in Google Cloud CLI, puoi utilizzare il linguaggio di manipolazione dei dati (DML) di GoogleSQL per eseguire l'inserimento. Nella libreria client Spanner, puoi utilizzare DML o API di mutazione.
Prima di inserire un perimetro, assicurati che i nodi di origine e di destinazione connesse dal perimetro. 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, vedi Il nodo di origine mancante viola la relazione INTERLEAVE IN e Il nodo di destinazione mancante viola un vincolo di chiave esterna.
I seguenti esempi inseriscono Account
nodi e Transfer
archi all'interno
grafico:
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
- Eseguire le 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 margini
Per aggiornare nodi o archi esistenti, utilizza la classe Google Cloud, gcloud CLI, oppure Librerie client di Spanner.
Puoi aggiornare nodi o edge esistenti utilizzando un prompt GoogleSQL Data Manipulation Language (DML) un'istruzione DML oppure query su Spanner Graph 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
nella
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 l'interfaccia a riga di comando gcloud.
- In gcloud CLI, esegui questi 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
Gli esempi seguenti aggiornano un nodo Account
e un bordo Transfer
nella
utilizzando le query Grafico di Spanner con DML:
Console
Nella console Google Cloud, inserisci il seguente grafico 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 l'interfaccia a riga di comando gcloud.
- 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 Console Google Cloud, gcloud CLI o Librerie client di Spanner.
Nella console Google Cloud e nella CLI gcloud, puoi utilizzare il Data Manipulation Language (DML) di Google SQL per eliminare. Nella libreria client di Spanner puoi utilizzare DML o API Mutazione.
Prima di eliminare un nodo, assicurati che non esistano bordi che facciano riferimento al nodo. Se esistono questi tipi di periferiche, potresti ricevere una violazione dell'integrità referenziale errori. Per ulteriori informazioni, vedi Il bordo in uscita orfano viola la relazione genitore-figlio e Il perimetro in entrata orfano viola la relazione genitore-figlio.
I seguenti esempi eliminano un perimetro Transfer
e un nodo Account
dall'
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
- Eseguire le 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 del grafico Spanner con la tua istruzione DML, come mostrato in 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 i bordi del grafico utilizzando il metodo ELIMINAZIONE A CASCATA un'azione.
- Elimina automaticamente i nodi e gli archi nel grafo utilizzando il criterio TTL. Per ulteriori informazioni, vedi TTL su nodi e Edge.
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.
- Scopri le best practice per l'ottimizzazione delle query del grafico di Spanner.