Dokumen ini menjelaskan cara mengubah data di Spanner Graph menggunakan Konsol Google Cloud, Google Cloud CLI, dan library klien. Mutasi data grafik mencakup penyisipan, pembaruan, dan penghapusan node dan tepi di Spanner Graph.
Spanner Graph memetakan data dari tabel ke node dan tepi grafik. Untuk memutasi data dalam grafik, Anda harus memutasi data dalam tabel input yang sesuai. Untuk mengetahui informasi selengkapnya, lihat Ringkasan skema Grafik Spanner.
Sebelum memulai
Untuk menyelesaikan langkah-langkah konsol Google Cloud dan contoh kode dalam dokumen ini, Anda harus terlebih dahulu mengikuti langkah-langkah di Menyiapkan dan membuat kueri Spanner Graph untuk melakukan hal berikut:
Menyisipkan node atau tepi
Untuk menyisipkan node atau edge, gunakan konsol Google Cloud, Google Cloud CLI, atau library klien Spanner untuk menyisipkan baris ke dalam tabel node atau edge.
Di konsol Google Cloud dan di Google Cloud CLI, Anda dapat menggunakan Data Manipulation Language (DML) GoogleSQL untuk menyisipkan. Di library klien Spanner, Anda dapat menggunakan DML atau Mutation API.
Sebelum menyisipkan tepi, pastikan node sumber dan tujuan yang terhubung oleh tepi ada. Jika Anda menyisipkan tepi saat node sumber atau tujuan yang terhubung oleh tepi tidak ada, Anda mungkin mendapatkan error pelanggaran integritas referensi. Untuk mengetahui informasi selengkapnya, lihat Node sumber tidak ada yang melanggar hubungan INTERLEAVE IN dan Node tujuan tidak ada yang melanggar batasan kunci asing.
Contoh berikut menyisipkan node Account
dan tepi Transfer
ke dalam
grafik:
Konsol
Di konsol Google Cloud, masukkan pernyataan DML berikut, lalu klik Run 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
- Menjalankan pernyataan dengan gcloud CLI.
- Di gcloud CLI, jalankan perintah berikut:
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)"
Library klien
Python
Java
Go
C++
Memperbarui node atau edge
Untuk memperbarui node atau edge yang ada, gunakan konsol Google Cloud, gcloud CLI, atau library klien Spanner.
Anda dapat memperbarui node atau edge yang ada menggunakan pernyataan Bahasa Manipulasi Data (DML) GoogleSQL, atau kueri Spanner Graph dengan pernyataan DML. Di library klien Spanner, Anda juga dapat menggunakan Mutation API.
Memperbarui node atau edge dengan DML
Contoh berikut memperbarui node Account
dan tepi Transfer
dalam
grafik menggunakan DML:
Konsol
Di konsol Google Cloud, masukkan pernyataan DML berikut, lalu klik Run 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;
Konsol
- Menjalankan pernyataan dengan gcloud CLI.
- Di gcloud CLI, jalankan perintah berikut:
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"
Library klien
Python
Java
Go
C++
Memperbarui node atau edge dengan kueri grafik dan DML
Contoh berikut memperbarui node Account
dan tepi Transfer
dalam
grafik menggunakan kueri Spanner Graph dengan DML:
Konsol
Di konsol Google Cloud, masukkan kueri Grafik Spanner berikut dengan pernyataan DML, lalu klik Run 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
- Menjalankan pernyataan dengan gcloud CLI.
- Di gcloud CLI, jalankan perintah berikut:
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 }"
Library klien
Python
Java
Go
C++
Menghapus node atau tepi
Untuk menghapus node atau edge yang ada, gunakan konsol Google Cloud, gcloud CLI, atau library klien Spanner.
Di konsol Google Cloud dan gcloud CLI, Anda dapat menggunakan Data Manipulation Language (DML) GoogleSQL untuk menghapus. Di library klien Spanner, Anda dapat menggunakan DML atau Mutation API.
Sebelum menghapus node, pastikan tidak ada tepi yang merujuk ke node. Jika jenis tepi ini ada, Anda mungkin mendapatkan error pelanggaran integritas referensi. Untuk informasi selengkapnya, lihat Arah keluar yang tidak memiliki induk melanggar hubungan induk-turunan dan Arah masuk yang tidak memiliki induk melanggar hubungan induk-turunan.
Contoh berikut menghapus tepi Transfer
dan node Account
dari
grafik.
Konsol
- Jalankan pernyataan di konsol Google Cloud.
- Di konsol Google Cloud, masukkan pernyataan DML berikut, lalu klik Jalankan Kueri:
-- Delete Transfer edge
DELETE FROM AccountTransferAccount
WHERE id = 1 AND to_id = 2;
-- Delete Account node
DELETE FROM Account WHERE id = 2;
gcloud
- Menjalankan pernyataan dengan gcloud CLI.
- Di gcloud CLI, jalankan perintah berikut:
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"
Library klien
Python
Java
Go
C++
Anda dapat menggabungkan kueri Spanner Graph dengan pernyataan DML, seperti yang ditunjukkan dalam contoh berikut:
-- 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
}
Opsi untuk mengubah data grafik
Anda dapat mengubah data grafik secara otomatis dengan cara berikut:
- Menghapus tepi di grafik secara otomatis menggunakan tindakan ON DELETE CASCADE.
- Menghapus node dan edge dalam grafik secara otomatis menggunakan kebijakan TTL. Untuk mengetahui informasi selengkapnya, lihat TTL di node dan edge.
Untuk memperbarui dan menghapus node dan tepi secara massal dalam grafik secara efisien, gunakan DML berpartisi.
Langkah selanjutnya
- Baca ringkasan kueri Spanner Graph.
- Pelajari praktik terbaik untuk menyesuaikan kueri Spanner Graph.