Spanner Graph adalah fitur Spanner dan Spanner Omni yang memungkinkan Anda membuat dan mengkueri grafik properti menggunakan database grafik secara langsung dalam Spanner. Spanner Graph menggabungkan skalabilitas dan keandalan Spanner dengan kemampuan pemodelan dan kueri grafik.
Grafik properti memodelkan data sebagai node (entitas) dan edge (hubungan antar-entitas), yang keduanya dapat memiliki properti (label dan metadata). Hal ini sangat berguna untuk data yang kompleks dan sangat terhubung seperti jaringan sosial, deteksi penipuan, dan mesin pemberi saran.
Topik dalam dokumen ini berlaku untuk Spanner Omni dengan cara yang sama seperti penerapannya pada Spanner.
Menyiapkan dan membuat kueri Spanner Graph
Untuk mulai menggunakan Spanner Graph, Anda harus membuat database dan deployment Spanner Omni terlebih dahulu. Setelah membuat database, Anda menentukan skema grafik properti yang memetakan tabel Spanner Omni yang ada ke node dan edge grafik.
Setelah menyiapkan skema dan memasukkan data ke dalam tabel pokok, Anda dapat menjalankan kueri grafik menggunakan Graph Query Language (GQL), ekstensi GoogleSQL yang menerapkan standar GQL ISO. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan dan membuat kueri Spanner Graph dalam dokumentasi Spanner.
Ringkasan skema Spanner Graph
Skema Spanner Graph menafsirkan data relasional Anda sebagai grafik. Skema menentukan tabel node dan tabel edge yang membentuk grafik Anda. Setiap tabel memetakan baris dari tabel Spanner ke elemen grafik. Elemen dapat memiliki label untuk mengategorikannya dan properti untuk menyimpan atribut. Untuk mengetahui informasi selengkapnya, lihat Ringkasan skema dalam dokumentasi Spanner.
Membuat dan mengelola skema Spanner Graph
Anda menggunakan pernyataan Bahasa Definisi Data (DDL) untuk membuat, memperbarui, atau menghapus definisi grafik properti. Pernyataan CREATE PROPERTY GRAPH menentukan
grafik, yang menentukan tabel, kunci, dan label pokok. Untuk mengetahui informasi selengkapnya, lihat Membuat dan mengelola skema Spanner Graph di dokumentasi Spanner.
Praktik terbaik untuk mendesain skema
Desain skema yang efisien sangat penting untuk performa. Praktik terbaik meliputi:
Menggunakan penyisipan untuk menempatkan tepi bersama dengan node sumbernya.
Menggunakan batasan referensial (kunci asing) untuk membantu memastikan integritas grafik.
Membuat indeks sekunder pada properti yang sering difilter.
Memilih antara desain skematis dan tanpa skema berdasarkan pola kueri Anda.
Untuk mengetahui informasi selengkapnya, lihat Praktik terbaik untuk mendesain skema dalam dokumentasi Spanner.
Menggunakan tampilan SQL untuk membuat grafik properti
Anda dapat menggunakan tampilan SQL untuk menentukan node dan tepi grafik. Untuk mempelajari perbedaan antara penggunaan tampilan SQL dan tabel untuk membuat grafik, lihat Manfaat membuat grafik dengan tampilan, bukan tabel dalam dokumentasi Spanner.
Ringkasan grafik yang dibuat dari tampilan SQL
Penggunaan tampilan sebagai lapisan abstraksi memberikan kontrol akses tingkat baris, transformasi data yang fleksibel, dan transisi yang lebih lancar dari model data tanpa skema ke model data yang diformalisasi. Untuk mengetahui informasi selengkapnya, lihat Ringkasan grafik yang dibuat dari tampilan SQL.
Membuat grafik dari tampilan SQL
Untuk membuat grafik dari tampilan, tentukan tampilan menggunakan SQL standar. Kemudian,
rujuk dalam klausa NODE TABLES atau EDGE TABLES dari pernyataan
CREATE PROPERTY GRAPH Anda. Anda harus menentukan KEY secara eksplisit untuk setiap elemen berbasis tampilan. Klausul KEY menentukan kolom dari tampilan sumber
yang mengidentifikasi setiap elemen grafik secara unik. Untuk mengetahui informasi selengkapnya, lihat
Membuat grafik dari tampilan SQL di
dokumentasi Spanner.
Mengelola data Spanner Graph
Anda mengelola data di Spanner Graph dengan mengubah tabel pokok yang menentukan grafik. Untuk mengetahui informasi selengkapnya, lihat Mengelola data Spanner Graph dalam dokumentasi Spanner.
| Operasi | Deskripsi |
|---|---|
| Sisipkan | Tambahkan baris baru ke tabel node dan edge menggunakan pernyataan INSERT atau API mutasi. |
| Perbarui | Ubah properti yang ada dengan memperbarui kolom yang sesuai di tabel pokok. |
| Hapus | Hapus node atau edge dengan menghapus baris yang sesuai. Gunakan ON DELETE CASCADE untuk menghapus tepi terkait secara otomatis saat Anda menghapus node. |
Kueri Spanner Graph
Spanner Graph mendukung Graph Query Language (GQL) untuk kueri guna menelusuri dan menganalisis data grafik Anda.
Ringkasan kueri
Kueri grafik menggunakan klausa GRAPH untuk menentukan grafik target dan klausa MATCH
untuk menentukan pola yang ingin Anda temukan. Anda dapat menampilkan properti node dan tepi, atau melakukan penggabungan pada hasilnya. Untuk mengetahui informasi selengkapnya, lihat
Ringkasan kueri di
dokumentasi Spanner.
Bekerja dengan jalur
Jalur merepresentasikan urutan node dan tepi dalam grafik. Anda dapat menemukan semua jalur antara dua node, menemukan jalur terpendek, atau memfilter jalur berdasarkan properti atau panjangnya menggunakan fungsi seperti PATH_LENGTH(), NODES(), dan EDGES(). Untuk mengetahui informasi selengkapnya, lihat
Bekerja dengan jalur dalam dokumentasi
Spanner.
Praktik terbaik untuk menyesuaikan kueri
Untuk mengoptimalkan kueri grafik:
Mulai penelusuran dari node kardinalitas yang lebih rendah.
Tentukan label secara eksplisit untuk semua pola node dan edge.
Gunakan fungsi
IS_FIRST()untuk membatasi jumlah tepi yang dilalui dari node super dengan kardinalitas tinggi.
Untuk mengetahui informasi selengkapnya, lihat Praktik terbaik untuk menyesuaikan kueri dalam dokumentasi Spanner.
Menggunakan penelusuran teks lengkap dengan Spanner Graph
Spanner Graph terintegrasi dengan kemampuan penelusuran teks lengkap Spanner, yang memungkinkan Anda menelusuri node atau edge berdasarkan properti teks tidak terstruktur menggunakan fungsi SEARCH(). Untuk mengetahui informasi selengkapnya, lihat Menggunakan penelusuran teks lengkap dengan Spanner Graph dalam dokumentasi Spanner.
Menggunakan penelusuran vektor dengan Spanner Graph
Anda dapat melakukan penelusuran kesamaan vektor pada data grafik untuk menemukan K-nearest neighbors (KNN) atau approximate nearest neighbors (ANN). Hal ini berguna untuk rekomendasi berbasis kemiripan dan aplikasi yang didukung AI. Untuk mengetahui informasi selengkapnya, lihat Menggunakan penelusuran vektor dengan Spanner Graph dalam dokumentasi Spanner.
Mengelola data tanpa skema dengan Spanner Graph
Untuk aplikasi dengan model data yang terus berkembang, Spanner Graph mendukung pengelolaan data tanpa skema. Anda dapat menyimpan semua node dan edge dalam
tabel generik tunggal dengan kolom JSON untuk properti, yang memungkinkan Anda menambahkan
jenis dan atribut baru tanpa perubahan DDL. Untuk mengetahui informasi selengkapnya, lihat
Mengelola data tanpa skema dengan Spanner Graph
dalam dokumentasi Spanner.
Bermigrasi ke Spanner Graph
Anda dapat memigrasikan data grafik yang ada dari database lain ke Spanner Graph. Proses ini biasanya melibatkan pengeksporan data Anda sebagai file CSV atau JSON, lalu mengimpornya ke dalam tabel Spanner yang mendukung grafik properti baru Anda. Untuk mengetahui informasi selengkapnya, lihat Memigrasikan data Anda ke Spanner Graph dalam dokumentasi Spanner.
Referensi Spanner Graph untuk pengguna openCypher
Jika Anda berasal dari latar belakang openCypher, implementasi GQL di
Spanner Graph sudah tidak asing, tetapi ada beberapa perbedaan sintaksis.
Referensi ini membantu Anda memetakan konsep dan kueri openCypher ke semantik
Spanner Graph MATCH dan RETURN. Untuk mengetahui informasi selengkapnya, lihat Referensi Spanner Graph untuk pengguna openCypher di dokumentasi Spanner.
Memecahkan masalah Spanner Graph
Masalah umum di Spanner Graph mencakup pelanggaran integritas referensial (tepi yang tidak terhubung) dan kueri yang berjalan lambat. Pemecahan masalah mencakup memeriksa definisi skema, memeriksa node atau tepi yang hilang, dan menggunakan paket kueri untuk mengidentifikasi bottleneck performa. Untuk mengetahui informasi selengkapnya, lihat Memecahkan masalah Spanner Graph di dokumentasi Spanner.