Ayo Eksplorasi Graph Database


Graph Database adalah model penyimpanan data menggunakan prinsip Teori Graf, dimana entri data dilambangkan sebagai Node dan juga Edge yang menjadi penghubung setiap Node. Contoh Node bisa berupa aktor, tempat, atau kejadian. Setiap Node bisa mempunyai banyak properti, misalkan untuk Node Aktor, saya pilih Andi dengan properti adalah seorang mahasiswa, laki laki, tinggal di Bogor, mempunyai binatang piaraan berupa ikan dan informasi lain lainnnya yang jumlahnya tak terbatas. Untuk Node Tempat misalkan Telkom University, dengan properti jumlah fakultas, Nama Rektor, Jumlah Mahasiswa, Alamat, Nomer Telpon dan lain lainnya. Edge menghubungkan aktor dengan aktor, aktor dengan tempat, aktor dengan kejadian atau kombinasi ketiganya. Edge juga mempunyai properti bermacam macam. Nah, contohnya detailnya seperti pada gambar dibawah ini.  

Query1

Saya mengetahui Graph Database sejak dua tahun lalu setelah membaca buku terbitan O’Reilly ini , akan tetapi tidak pernah benar benar mempunyai waktu untuk eksplorasi, walaupun secara prinsipnya saya mengetahui cara bekerjanya dan apa keunggulannya dibandingkan database biasa. Graph Database termasuk dalam keluarga database NoSQL (Non Relational / Not Only SQL). NoSQL merubah struktur penyimpanan data konvensional dengan tujuan bisa mendukung data data tidak terstruktur, scalable (Big Data), pencarian yang cepat, ekstraksi pola / informasi tersembunyi, konstruksi informasi dari keping keping data. Salah satu implementasi yang paling kita ingat adalah pada Graph API Facebook . Sayangnya perusahaan pendukung / pembuat Graph Database masih sedikit, salah satu yang terkenal adalah Neo4J, karena sistemnya open source, sehingga paling banyak dipakai rujukan untuk belajar dan penelitian.

Kebetulan  salah satu riset terakhir saya mengenai ekstraksi dokumen yang cukup kompleks, maka saya melihat melihat pilihan solusi yang ada dan yang paling sesuai ternyata adalah database berbasis graf ini. Karena jika kita menyimpan semua informasi ke dalam dokumen relasional, maka menjadi tidak praktis dan akan sulit fokus kepada hal hal / hubungan hubungan yang penting dari setiap cerita yang ada di dokumen tersebut, sehingga pada akhirnya high level document abstraction tidak akan tercapai dengan mudah.

Contoh pencarian / query mulai dari yang mudah sampai yang kompleks bisa dilihat sebagai berikut :

  • Mencari orang yang bernama Andi, maka querynya seperti berikut :  MATCH (as:Orang) WHERE as.nama = “Andi” RETURN as;
  • Mencari temen teman dari Andi, maka querynya seperti berikut : MATCH (as:Orang) -[:TEMAN]-(friends)WHERE as.nama = “Andi” RETURN as, friends
  • Mencari teman teman Andi, yang berteman dengan Andi sejak tahun 2006, maka querynya adalah : MATCH (as:Orang) -[:TEMAN]-(friends {since : 2006} ) WHERE as.nama = “Andi” RETURN as, friends
  • Mencari temannya teman teman Agus yang hobi sepakbola, sehingga Agus bisa mempunyai teman baru yang sehobi : MATCH (as:Orang) – [:TEMAN]-()-[:TEMAN] – (Sepakbola)WHERE as.nama = “Agus” AND hobby = “Sepakbola” RETURN DISTINCT Sepakbola
Setelah melihat contoh contoh query untuk pencarian, kita bisa ambil kesimpulan bahwa model ini sangat cocok untuk data data media sosial yang datangnya tidak pernah lengkap, dan properti yang bermacam macam, contohnya seperti data percakapan. Kebutuhan untuk membuat kesimpulan yang cepat dan bahkan kalau perlu secara Real-Time, tentu membutuhkan sistem yang mendukung penyimpanan dan ekstraksi data yang cepat, maka Graph Database adalah salah satu  solusinya.
 
Ayo kita eksplorasi … 


Leave a Reply

Your email address will not be published. Required fields are marked *