Database grafik dapat membantu Anda menemukan insight dengan membuat model entity data dan hubungan di antara entity tersebut. JanusGraph adalah database grafik yang mendukung penggunaan data dalam jumlah besar. Halaman ini menampilkan konsep yang dapat membantu Anda menjalankan JanusGraph di Google Cloud dengan Google Kubernetes Engine sebagai platform orkestrasi dan Bigtable sebagai backend penyimpanan.
Dokumen ini ditujukan bagi arsitek sistem, administrator database, dan profesional DevOps yang tertarik untuk menjalankan database grafik JanusGraph di Google Cloud menggunakan Bigtable sebagai backend penyimpanan. Dokumen ini mengasumsikan bahwa Anda memahami Google Kubernetes Engine (GKE), Pod Kubernetes, Bigtable, dan Elasticsearch.
Ringkasan
Dalam terminologi grafik, entity dikenal sebagai node atau vertex dan hubungan dikenal sebagai edge. Di JanusGraph, vertex dan edge dapat memiliki data terkait tambahan yang tersedia melalui properti.
Ilustrasi sebelumnya adalah contoh grafik properti.
Database grafik membantu Anda membuat model berbagai domain dan aktivitas:
- Jaringan sosial
- Transaksi keuangan (untuk analisis penipuan)
- Jaringan sistem fisik atau virtual
Saat membuat database grafik, Anda terkadang membuat jutaan atau bahkan miliaran vertikal dan tepi. Saat menggunakan JanusGraph dengan Bigtable sebagai lapisan penyimpanan dasar, Anda dapat menjalankan kueri cepat (dikenal sebagai traversal grafik) dan menskalakan lapisan penyimpanan secara independen sesuai dengan ukuran dan throughput yang Anda butuhkan. JanusGraph juga menggunakan backend pengindeksan plug-in untuk menyediakan pengindeksan teks lengkap untuk properti vertex dan edge.
Anda dapat men-deploy infrastruktur JanusGraph yang skalabel di GKE, menggunakan Elasticsearch sebagai backend pengindeksan yang berjalan di Pod dalam StatefulSet, dan menggunakan Bigtable sebagai backend penyimpanan. Setelah selesai, Anda dapat melintasi hubungan yang ada dalam data grafik.
Diagram berikut menunjukkan kecocokan elemen-elemen ini.
Diagram sebelumnya menunjukkan deployment JanusGraph di GKE dengan Elasticsearch dan Bigtable.
Data JanusGraph di Bigtable
Data grafik disimpan oleh JanusGraph sebagai daftar adjacensi. Setiap baris mewakili vertikal, vertikal (tepi) yang berdekatan, dan metadata properti tentang vertex dan tepi. Kunci baris adalah ID unik untuk vertex. Setiap hubungan antara vertex dan vertex lain serta properti apa pun yang menentukan hubungan lebih lanjut disimpan sebagai kolom tepi atau properti tepi. Penentu kolom dan nilai kolom menyimpan data yang menentukan edge, sesuai dengan praktik terbaik Bigtable. Setiap properti vertex disimpan sebagai kolom terpisah, lagi-lagi menggunakan penentu kolom dan nilai kolom untuk menentukan properti.
Diagram berikut menunjukkan struktur penyimpanan ini.
Diagram menunjukkan struktur penyimpanan logis untuk fragmen grafik kecil dengan detail logis untuk dua baris vertex. Dalam diagram, dua contoh baris mewakili dua vertex. Verteks pertama diberi label dengan satu properti verteks dan terkait dengan dua verteks lain oleh dua tepi terpisah. Vertix kedua berisi kolom yang berisi dua properti dan satu tepi.
Ilustrasi model data logis tepi vertex berikut memberikan beberapa detail tentang penentu kolom dan nilai untuk kolom tepi atau properti tepi.
Untuk setiap vertex yang berdekatan, kolom menyimpan metadata tentang tepi tersebut. Penentu kolom berisi metadata tentang hubungan tepi dan tentang arah tepi, serta pointer ke vertex yang berdekatan. Nilai kolom berisi label tepi dan properti tepi tambahan. Karena traversal dapat diikuti dalam kedua arah, tepi disimpan dua kali, satu kali untuk setiap ujung hubungan tepi. Penyimpanan edge dua arah secara signifikan meningkatkan performa traversal, tetapi disertai dengan beberapa kompromi karena redundansi ruang penyimpanan tambahan dan mutasi edge non-atomik.
Diagram berikut adalah model data logis dari kolom properti vertex.
Ilustrasi sebelumnya memberikan detail tentang penentu kolom dan nilai untuk kolom tepi.
Setiap properti vertex disimpan sebagai kolom terpisah. Penentu kolom adalah ID unik untuk kunci properti. Nilai kolom berisi ID untuk properti dan nilai properti.
JanusGraph juga mengandalkan pengurutan leksikografis baris dan penentu kolom Bigtable untuk meningkatkan performa kueri.
Langkah berikutnya
- Baca selengkapnya tentang JanusGraph dan database grafik.
- Pelajari framework komputasi grafik Apache TinkerPop dan jelajahi bahasa traversal grafik Gremlin.
- Pelajari lebih lanjut cara JanusGraph menyimpan data di Bigtable.
- Pelajari kasus penggunaan grafik lebih dalam dengan men-deploy contoh aplikasi JanusGraph.