Dokumen ini menunjukkan cara mengelola data dalam Spanner Graph dengan menyisipkan, memperbarui, dan menghapus node dan edge. Spanner Graph memetakan data dari tabel ke node dan edge grafik. Untuk mengubah data dalam grafik, Anda harus mengubah data dalam tabel input yang sesuai. Anda dapat menggunakan konsol Google Cloud , Google Cloud CLI, atau library klien Spanner untuk mengelola data grafik.
Menyiapkan Spanner Graph
Sebelum dapat mengelola data di Spanner Graph, Anda harus menyiapkan Spanner Graph dengan melakukan hal berikut:
Buat database di instance Spanner Anda.
Sisipkan data grafik ke dalam database Anda.
Contoh di bagian ini menggunakan instance dan database yang Anda buat saat menyiapkan Spanner Graph dengan langkah-langkah sebelumnya.
Menyisipkan node atau edge
Untuk menyisipkan node atau edge ke dalam tabel node atau edge, gunakan konsol Google Cloud , gcloud CLI, atau library klien Spanner.
Di konsol Google Cloud dan di gcloud CLI, Anda dapat menggunakan Bahasa Pengolahan Data (DML) GoogleSQL. Di library klien Spanner, Anda dapat menggunakan DML atau Mutation API.
Sebelum menyisipkan edge, pastikan node sumber dan node tujuan yang dihubungkan oleh edge ada. Jika Anda menyisipkan edge pada saat node sumber atau node tujuan yang dihubungkan oleh edge 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 edge Transfer ke dalam
database yang Anda buat di bagian Menyiapkan Spanner Graph.
Konsol
Di konsol Google Cloud , jalankan pernyataan DML berikut. Untuk informasi selengkapnya, lihat Menjalankan pernyataan di konsol Google Cloud .
-- 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
Di gcloud CLI, jalankan perintah berikut. Untuk mengetahui informasi selengkapnya, lihat Menjalankan pernyataan dengan gcloud CLI.
gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --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 DATABASE-NAME --instance=INSTANCE-NAME \ --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 DATABASE-NAME --instance=INSTANCE-NAME \ --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 DATABASE-NAME --instance=INSTANCE-NAME \ --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)"
Ganti kode berikut:
- DATABASE_NAME: nama database Anda.
- INSTANCE_NAME: nama instance Anda.
Library klien
Python
Java
Go
C++
Memperbarui node atau edge
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. Jika menggunakan library klien Spanner, Anda juga dapat menggunakan Mutation API.
Memperbarui node atau edge dengan DML
Contoh berikut menggunakan DML untuk memperbarui node Account dan edge Transfer yang Anda tambahkan di bagian Menyisipkan node atau edge.
Konsol
Di konsol Google Cloud , jalankan pernyataan DML berikut. Untuk informasi selengkapnya, lihat Menjalankan pernyataan di konsol Google Cloud .
-- 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 DATABASE-NAME --instance=INSTANCE-NAME \ --sql="UPDATE Account SET is_blocked = false WHERE id = 2"gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --sql="UPDATE AccountTransferAccount SET amount = 300 WHERE id = 1 AND to_id = 2"
Ganti kode berikut:
- DATABASE_NAME: nama database Anda.
- INSTANCE_NAME: nama instance Anda.
Library klien
Python
Java
Go
C++
Memperbarui node atau edge dengan kueri grafik dan DML
Contoh berikut menggunakan kueri Spanner Graph dengan DML untuk memperbarui node Account dan edge Transfer yang Anda tambahkan di bagian Menyisipkan node atau edge.
Konsol
Di konsol Google Cloud , jalankan pernyataan DML berikut. Untuk informasi selengkapnya, lihat Menjalankan pernyataan di konsol Google Cloud .
-- 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
Di gcloud CLI, jalankan perintah berikut. Untuk mengetahui informasi selengkapnya, lihat Menjalankan pernyataan dengan gcloud CLI.
gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE_NAME \ --sql="UPDATE Account SET is_blocked = false"gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --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 }"
Ganti kode berikut:
- DATABASE_NAME: nama database Anda.
- INSTANCE_NAME: nama instance Anda.
Library klien
Python
Java
Go
C++
Menghapus node atau edge
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 menggunakan Bahasa Pengolahan Data (DML) GoogleSQL untuk menghapus. Di library klien Spanner, Anda dapat menggunakan DML atau Mutation API untuk menghapus node atau edge.
Untuk mencegah error pelanggaran integritas referensial, pastikan tidak ada edge yang merujuk ke node saat Anda menghapus node. Untuk mengetahui informasi selengkapnya, lihat Edge keluar yang telantar melanggar hubungan induk-turunan dan Edge masuk yang telantar melanggar hubungan induk-turunan.
Contoh berikut menghapus edge Transfer dan node Account dari
grafik.
Konsol
Di konsol Google Cloud , jalankan pernyataan DML berikut. Untuk informasi selengkapnya, lihat Menjalankan pernyataan di konsol Google Cloud .
-- Delete Transfer edge
DELETE FROM AccountTransferAccount
WHERE id = 1 AND to_id = 2;
-- Delete Account node
DELETE FROM Account WHERE id = 2;
gcloud
Di gcloud CLI, jalankan perintah berikut. Untuk mengetahui informasi selengkapnya, lihat Menjalankan pernyataan dengan gcloud CLI.
gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --sql="DELETE FROM AccountTransferAccount WHERE id = 1 AND to_id = 2"gcloud spanner databases execute-sql DATABASE-NAME --instance=INSTANCE-NAME \ --sql="DELETE FROM Account WHERE id = 2"
Ganti kode berikut:
- DATABASE_NAME: nama database Anda.
- INSTANCE_NAME: nama instance Anda.
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
}
Operasi data otomatis dan massal
Selain menggunakan DML untuk menyisipkan, memperbarui, dan menghapus node dan edge individual, Anda juga dapat menggunakan metode berikut untuk mengelola data Spanner Graph:
Anda dapat mengotomatiskan penghapusan edge dalam grafik menggunakan tindakan ON DELETE CASCADE.
Anda dapat mengotomatiskan penghapusan node dan edge dalam grafik menggunakan kebijakan TTL. Untuk mengetahui informasi selengkapnya, lihat TTL pada node dan edge.
Perbarui dan hapus node dan edge secara massal dan efisien di dalam grafik menggunakan DML yang dipartisi.
Langkah berikutnya
- Baca ringkasan kueri Spanner Graph.
- Pelajari praktik terbaik untuk menyesuaikan kueri Spanner Graph.