JanusGraph di GKE dengan Bigtable

Database grafik dapat membantu Anda menemukan insight dengan memodelkan entity data dan hubungan antar-entity. JanusGraph adalah database grafik yang mendukung penggunaan data dalam jumlah besar. Halaman ini menyajikan 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 untuk 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 sudah 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.

Contoh grafik properti.

Ilustrasi sebelumnya adalah contoh grafik properti.

Database grafik membantu Anda memodelkan berbagai domain dan aktivitas:

  • Jaringan sosial
  • Transaksi keuangan (untuk analisis penipuan)
  • Jaringan sistem fisik atau virtual

Saat membuat database grafik, terkadang Anda membuat jutaan atau bahkan miliaran vertex dan edge. Saat menggunakan JanusGraph dengan Bigtable sebagai lapisan penyimpanan yang mendasarinya, Anda dapat menjalankan kueri cepat (dikenal sebagai graph traversals) dan menskalakan lapisan penyimpanan secara independen sesuai dengan ukuran dan throughput yang Anda butuhkan. JanusGraph juga menggunakan backend pengindeksan yang dapat di-plug untuk menyediakan pengindeksan teks lengkap untuk properti vertex dan edge.

Anda dapat men-deploy infrastruktur JanusGraph yang dapat diskalakan 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 cara elemen-elemen ini cocok.

Deployment JanusGraph dengan Bigtable di GKE.

Diagram sebelumnya menunjukkan deployment JanusGraph di GKE dengan Elasticsearch dan Bigtable.

Data JanusGraph di Bigtable

Data grafik disimpan oleh JanusGraph sebagai daftar ketetanggaan. Setiap baris mewakili vertex, vertex yang berdekatan (edge), dan metadata properti tentang vertex dan edge. Kunci baris adalah ID unik untuk vertex. Setiap hubungan antara vertex dan vertex lain serta properti apa pun yang lebih lanjut menentukan hubungan tersebut disimpan sebagai kolom edge atau properti edge. Penentu kolom dan nilai kolom menyimpan data yang menentukan edge, sesuai dengan praktik terbaik Bigtable. Setiap properti vertex disimpan sebagai kolom terpisah, sekali lagi menggunakan penentu kolom dan nilai kolom untuk menentukan properti.

Diagram berikut menunjukkan struktur penyimpanan ini.

Struktur penyimpanan daftar adjasensi JanusGraph.

Diagram ini menunjukkan struktur penyimpanan logis untuk fragmen grafik kecil dengan detail logis untuk dua baris vertex. Dalam diagram, dua baris contoh mewakili dua vertex. Vertex pertama diberi label dengan satu properti vertex dan terkait dengan dua vertex lainnya oleh dua edge terpisah. Vertex kedua berisi kolom yang berisi dua properti dan satu edge.

Ilustrasi berikut dari model data logis edge vertex memberikan beberapa detail tentang penentu dan nilai kolom untuk kolom edge atau properti edge.

Kolom properti tepi dan tepi JanusGraph.

Untuk setiap vertex yang berdekatan, kolom menyimpan metadata tentang edge tersebut. Penentu kolom berisi metadata tentang hubungan edge dan tentang arah edge, serta pointer ke vertex yang berdekatan. Nilai kolom berisi label edge dan properti edge tambahan. Karena traversal dapat diikuti di kedua arah, edge disimpan dua kali, sekali untuk setiap ujung hubungan edge. Penyimpanan edge dua arah meningkatkan performa traversal secara signifikan, tetapi memiliki beberapa pertimbangan karena redundansi ruang penyimpanan tambahan dan mutasi edge non-atomik.

Diagram berikut adalah model data logis kolom properti vertex.

Nilai kolom JanusGraph untuk kolom properti.

Ilustrasi sebelumnya memberikan detail tentang penentu dan nilai kolom untuk kolom edge.

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