Dokumen ini menjelaskan cara mengubah data di Spanner Graph menggunakan konsolGoogle Cloud , Google Cloud CLI, dan library klien. Mengubah data grafik mencakup penyisipan, pembaruan, dan penghapusan node dan tepi dalam Spanner Graph.
Spanner Graph memetakan data dari tabel ke node dan tepi grafik. Untuk mengubah data dalam grafik, Anda harus mengubah data dalam tabel input yang sesuai. Untuk mengetahui informasi selengkapnya, lihat Ringkasan skema Spanner Graph.
Sebelum memulai
Untuk menyelesaikan langkah-langkah konsol Google Cloud dan contoh kode dalam dokumen ini, Anda harus terlebih dahulu mengikuti langkah-langkah dalam 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 Bahasa Pengolahan Data (DML) GoogleSQL untuk menyisipkan. Di library klien Spanner, Anda dapat menggunakan DML atau Mutation API.
Sebelum menyisipkan tepi, pastikan node sumber dan tujuan yang dihubungkan oleh tepi ada. Jika Anda menyisipkan tepi saat node sumber atau tujuan yang terhubung oleh tepi tidak ada, Anda mungkin mendapatkan error pelanggaran integritas referensial. Untuk mengetahui informasi selengkapnya, lihat Node sumber yang tidak ada melanggar hubungan INTERLEAVE IN dan Node tujuan yang tidak ada melanggar batasan kunci asing.
Contoh berikut menyisipkan node Account
dan tepi Transfer
ke dalam
grafik:
Konsol
Di konsol Google Cloud , masukkan pernyataan DML berikut dan klik Jalankan Kueri:
-- 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
- Jalankan 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 tepi
Untuk memperbarui node atau edge yang ada, gunakan konsolGoogle Cloud , gcloud CLI, atau library klien Spanner.
Anda dapat memperbarui node atau edge yang ada menggunakan pernyataan Bahasa Pengolahan Data (DML) GoogleSQL, atau kueri Spanner Graph dengan pernyataan DML. Di library klien Spanner, Anda juga dapat menggunakan Mutation API.
Memperbarui node atau tepi dengan DML
Contoh berikut memperbarui node Account
dan edge Transfer
dalam
grafik menggunakan DML:
Konsol
Di konsol Google Cloud , masukkan pernyataan DML berikut dan klik Jalankan Kueri:
-- 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
- Jalankan 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 tepi dengan kueri grafik dan DML
Contoh berikut memperbarui node Account
dan edge Transfer
dalam
grafik menggunakan kueri Spanner Graph dengan DML:
Konsol
Di konsol Google Cloud , masukkan kueri Spanner Graph 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
- Jalankan 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 konsolGoogle Cloud , gcloud CLI, atau library klien Spanner.
Di konsol Google Cloud dan gcloud CLI, Anda dapat menggunakan Bahasa Pengolahan Data (DML) GoogleSQL untuk menghapus. Di library klien Spanner, Anda dapat menggunakan DML atau Mutation API.
Sebelum Anda menghapus node, pastikan tidak ada tepi yang merujuk ke node tersebut. Jika jenis tepi ini ada, Anda mungkin akan mendapatkan error pelanggaran integritas referensial. Untuk mengetahui informasi selengkapnya, lihat Edge keluar yang tidak memiliki induk melanggar hubungan induk-turunan dan Edge masuk yang tidak memiliki induk melanggar hubungan induk-turunan.
Contoh berikut menghapus tepi Transfer
dan node Account
dari
grafik.
Konsol
- Jalankan pernyataan di Google Cloud konsol.
- Di konsol Google Cloud , masukkan pernyataan DML berikut, lalu klik Run Query:
-- Delete Transfer edge
DELETE FROM AccountTransferAccount
WHERE id = 1 AND to_id = 2;
-- Delete Account node
DELETE FROM Account WHERE id = 2;
gcloud
- Jalankan 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 dalam grafik secara otomatis menggunakan tindakan ON DELETE CASCADE.
- Menghapus node dan tepi secara otomatis dalam grafik menggunakan kebijakan TTL. Untuk mengetahui informasi selengkapnya, lihat TTL pada node dan edge.
Untuk memperbarui dan menghapus node serta edge secara massal dengan efisien dalam grafik, gunakan DML berpartisi.
Langkah berikutnya
- Baca ringkasan kueri Spanner Graph.
- Pelajari praktik terbaik untuk menyesuaikan kueri Spanner Graph.