JanusGraph di GKE dengan Bigtable

Database grafik dapat membantu Anda menemukan insight dengan memodelkan entitas data dan hubungan di antara entitas tersebut. JanusGraph adalah database grafik yang mendukung pekerjaan dengan 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 bagi arsitek sistem, administrator database, dan profesional DevOps yang tertarik untuk menjalankan database grafik JanusGraph diGoogle 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, entitas dikenal sebagai node atau verteks dan hubungan dikenal sebagai edge. Di JanusGraph, verteks dan tepi 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 verteks dan tepi. Saat menggunakan JanusGraph dengan Bigtable sebagai lapisan penyimpanan yang mendasarinya, Anda dapat menjalankan kueri cepat (yang dikenal sebagai penelusuran grafik) 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 skalabel di GKE, menggunakan Elasticsearch sebagai backend pengindeksan yang berjalan di Pod dalam StatefulSet, dan menggunakan Bigtable sebagai backend penyimpanan. Setelah selesai, Anda dapat menjelajahi hubungan yang ada dalam data grafik Anda.

Diagram berikut menunjukkan cara elemen-elemen ini saling terkait.

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 merepresentasikan verteks, verteks yang berdekatan (tepi), dan metadata properti tentang verteks dan tepi. Kunci baris adalah ID unik untuk verteks. Setiap hubungan antara verteks dan verteks lain serta properti apa pun yang lebih lanjut menentukan hubungan tersebut disimpan sebagai kolom tepi atau properti tepi. Penentu kolom dan nilai kolom menyimpan data yang menentukan tepi, sesuai dengan praktik terbaik Bigtable. Setiap properti verteks disimpan sebagai kolom terpisah, lagi-lagi menggunakan kualifikasi kolom dan nilai kolom untuk menentukan properti.

Diagram berikut menunjukkan struktur penyimpanan ini.

Struktur penyimpanan daftar adjasensi JanusGraph.

Diagram menunjukkan struktur penyimpanan logis untuk fragmen grafik kecil dengan detail logis untuk dua baris verteks. Dalam diagram, dua baris contoh mewakili dua verteks. Verteks pertama diberi label dengan satu properti verteks dan terkait dengan dua verteks lainnya oleh dua rusuk terpisah. Verteks kedua menyimpan kolom yang berisi dua properti dan satu tepi.

Ilustrasi model data logis tepi simpul berikut memberikan beberapa detail tentang kualifikasi dan nilai kolom untuk kolom tepi atau properti tepi.

Kolom properti edge dan edge JanusGraph.

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

Diagram berikut adalah model data logis kolom properti verteks.

Nilai kolom JanusGraph untuk kolom properti.

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

Setiap properti verteks 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 baris dan kualifikasi kolom secara leksikografis Bigtable untuk meningkatkan performa kueri.

Langkah berikutnya