In diesem Dokument wird beschrieben, wie Sie Daten in Spanner Graph mit derGoogle Cloud -Konsole, der Google Cloud CLI und Clientbibliotheken ändern. Das Ändern von Grafdaten umfasst das Einfügen, Aktualisieren und Löschen von Knoten und Kanten in Spanner Graph.
Spanner Graph ordnet Daten aus Tabellen Graphknoten und ‑kanten zu. Wenn Sie Daten in einem Diagramm ändern möchten, müssen Sie die Daten in den entsprechenden Eingabetabellen ändern. Weitere Informationen finden Sie unter Spanner Graph-Schema – Übersicht.
Hinweise
Um die Google Cloud Konsolenschritte und die Codebeispiele in diesem Dokument auszuführen, müssen Sie zuerst die Schritte unter Spanner Graph einrichten und abfragen ausführen, um Folgendes zu tun:
Knoten oder Kanten einfügen
Verwenden Sie die Google Cloud Console, die Google Cloud CLI oder die Spanner-Clientbibliotheken, um Zeilen in Knoten- oder Kantentabellen einzufügen.
In der Google Cloud Console und in der Google Cloud CLI können Sie die Datenbearbeitungssprache (Data Manipulation Language, DML) von GoogleSQL zum Einfügen verwenden. In der Spanner-Clientbibliothek können Sie DML- oder Mutation APIs verwenden.
Bevor Sie eine Kante einfügen, müssen Sie darauf achten, dass die Quell- und Zielknoten, die durch die Kante verbunden werden, vorhanden sind. Wenn Sie eine Kante einfügen, während der Quell- oder Zielknoten, der mit der Kante verbunden ist, nicht vorhanden ist, erhalten Sie möglicherweise Fehler wegen Verletzung der referenziellen Integrität. Weitere Informationen finden Sie unter Fehlender Quellknoten verstößt gegen die INTERLEAVE IN-Beziehung und Fehlender Zielknoten verstößt gegen die Fremdschlüsselbeschränkung.
In den folgenden Beispielen werden Account
-Knoten und Transfer
-Kanten in den Graphen eingefügt:
Console
Geben Sie in der Google Cloud Konsole die folgende DML-Anweisung ein und klicken Sie auf Abfrage ausführen:
-- 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
- Mit der gcloud CLI Anweisungen ausführen
- Führen Sie in der gcloud CLI die folgenden Befehle aus:
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)"
Clientbibliotheken
Python
Java
Go
C++
Knoten oder Kanten aktualisieren
Wenn Sie vorhandene Knoten oder Kanten aktualisieren möchten, verwenden Sie die Google Cloud Console, die gcloud CLI oder die Spanner-Clientbibliotheken.
Sie können vorhandene Knoten oder Kanten mit einer GoogleSQL-DML-Anweisung (Data Manipulation Language) oder Spanner Graph-Abfragen mit einer DML-Anweisung aktualisieren. In der Spanner-Clientbibliothek können Sie auch Mutation APIs verwenden.
Knoten oder Kanten mit DML aktualisieren
In den folgenden Beispielen werden ein Account
-Knoten und eine Transfer
-Kante im Diagramm mit DML aktualisiert:
Console
Geben Sie in der Google Cloud Konsole die folgende DML-Anweisung ein und klicken Sie auf Abfrage ausführen:
-- 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
- Mit der gcloud CLI Anweisungen ausführen
- Führen Sie in der gcloud CLI die folgenden Befehle aus:
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"
Clientbibliotheken
Python
Java
Go
C++
Knoten oder Kanten mit Graph-Abfragen und DML aktualisieren
In den folgenden Beispielen werden ein Account
-Knoten und eine Transfer
-Kante im Diagramm mithilfe von Spanner Graph-Abfragen mit DML aktualisiert:
Console
Geben Sie in der Google Cloud -Konsole die folgende Spanner Graph-Abfrage mit einer DML-Anweisung ein und klicken Sie dann auf Abfrage ausführen:
-- 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
- Mit der gcloud CLI Anweisungen ausführen
- Führen Sie in der gcloud CLI die folgenden Befehle aus:
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 }"
Clientbibliotheken
Python
Java
Go
C++
Knoten oder Kanten löschen
Verwenden Sie zum Löschen vorhandener Knoten oder Kanten die Google Cloud Console, die gcloud CLI oder die Spanner-Clientbibliotheken.
In der Google Cloud Console und der gcloud CLI können Sie die Datenbearbeitungssprache (Data Manipulation Language, DML) von GoogleSQL zum Löschen verwenden. In der Spanner-Clientbibliothek können Sie DML- oder Mutation APIs verwenden.
Bevor Sie einen Knoten löschen, müssen Sie sicherstellen, dass keine Kanten vorhanden sind, die auf den Knoten verweisen. Wenn diese Arten von Kanten vorhanden sind, können Fehler aufgrund von Verletzungen der referenziellen Integrität auftreten. Weitere Informationen finden Sie unter Verwaiste ausgehende Kante verstößt gegen die Über-/Unterordnungsbeziehung und Verwaiste eingehende Kante verstößt gegen die Über-/Unterordnungsbeziehung.
In den folgenden Beispielen werden eine Transfer
-Kante und ein Account
-Knoten aus dem Diagramm gelöscht.
Console
- Anweisungen in der Google Cloud Console ausführen.
- Geben Sie in der Google Cloud Konsole die folgende DML-Anweisung ein und klicken Sie auf Abfrage ausführen:
-- Delete Transfer edge
DELETE FROM AccountTransferAccount
WHERE id = 1 AND to_id = 2;
-- Delete Account node
DELETE FROM Account WHERE id = 2;
gcloud
- Mit der gcloud CLI Anweisungen ausführen
- Führen Sie in der gcloud CLI die folgenden Befehle aus:
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"
Clientbibliotheken
Python
Java
Go
C++
Sie können Spanner Graph-Abfragen mit Ihrer DML-Anweisung kombinieren, wie im folgenden Beispiel gezeigt:
-- 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
}
Optionen zum Ändern von Graphdaten
Sie können Grafdaten automatisch auf folgende Arten ändern:
- Kanten im Diagramm automatisch löschen, indem Sie die Aktion ON DELETE CASCADE verwenden.
- Knoten und Kanten im Diagramm automatisch löschen, indem Sie die TTL verwenden. Weitere Informationen finden Sie unter TTL für Knoten und Kanten.
Verwenden Sie partitionierte DML, um Knoten und Kanten im Diagramm effizient im Bulk zu aktualisieren und zu löschen.