Model data Graf sangat ideal ketika fokus utama aplikasi adalah pada hubungan (relationships) yang kompleks dan saling terhubung antar data. Jika aplikasi Anda memiliki banyak hubungan many-to-many, model Graf adalah pilihan yang tepat.
Contoh Kasus Penggunaan: jejaring sosial, sistem rekomendasi, deteksi penipuan, pemetaan jaringan.
Edges (Relationships/Links): Merepresentasikan hubungan antara vertices. Edge selalu memiliki arah, label (nama hubungan), dan bisa memiliki properti.
Model Graf Utama
Ada dua model utama untuk merepresentasikan data graf:
1. Property Graph Model
Ini adalah model yang paling populer, digunakan oleh database seperti Neo4j.
Vertex: Memiliki ID unik, properti (pasangan kunci-nilai), serta daftar edge masuk dan keluar.
Edge: Memiliki ID unik, vertex awal (tail), vertex akhir (head), sebuah label (misalnya, LIVES_IN, MARRIED_TO), dan properti.
Cypher Query Language: Cypher adalah bahasa kueri deklaratif untuk property graph, dirancang agar mudah dibaca dan intuitif, menggunakan sintaks visual ASCII-Art.
(node:Label {property: 'value'}) merepresentasikan sebuah vertex.
-[:RELATIONSHIP]-> merepresentasikan sebuah edge.
Contoh: Mencari nama orang yang lahir di Amerika Serikat dan tinggal di Eropa.
MATCH (person)-[:BORN_IN]->()-[:WITHIN*0..]->(us:Location {name: 'United States'}), (person)-[:LIVES_IN]->()-[:WITHIN*0..]->(eu:Location {name: 'Europe'})RETURN person.name
2. Triple-Store Model
Model ini menyimpan semua informasi dalam bentuk tiga serangkai yang sangat sederhana: (Subject, Predicate, Object).
Subject: Setara dengan vertex.
Predicate: Setara dengan properti atau label edge.
Object: Bisa berupa nilai dari properti, atau vertex lain (jika predicate adalah sebuah hubungan).
Contoh:(Lucy, bornIn, Idaho)
SPARQL: SPARQL adalah bahasa kueri untuk model triple-store, sering digunakan dalam konteks Semantic Web. Sintaksnya lebih mirip SQL dibandingkan Cypher.
Property Graph: Lebih intuitif untuk pemodelan data yang mirip dengan dunia nyata. Kueri Cypher sering kali lebih mudah dibaca untuk penelusuran graf yang kompleks.
Triple-Store: Sangat terstandardisasi dan bagus untuk integrasi data dari berbagai sumber yang berbeda.
Summary
Model data Graf dirancang untuk aplikasi di mana hubungan antar data sangat penting, terdiri dariVertices(entitas) danEdges(hubungan). Dua model utamanya adalahProperty Graph(digunakan oleh Neo4j dengan bahasa kueri Cypher yang intuitif) yang sangat fleksibel untuk pemodelan, danTriple-Store(dikueri dengan SPARQL) yang menyimpan data dalam format (Subject, Predicate, Object) dan sangat baik untuk integrasi data terstandardisasi.
Additional Information
Pendalaman Teknis: Index-Free Adjacency
Kekuatan utama dari native graph database (seperti Neo4j) adalah konsep “Index-Free Adjacency”. Tidak seperti RDBMS yang memerlukan index untuk mempercepat JOIN, graph database menyimpan hubungan sebagai penunjuk (pointer) fisik langsung dari satu node ke node tetangganya.
Artinya, ketika Anda menjalankan kueri untuk menelusuri hubungan (misalnya, (person)-[:FRIEND_OF]->(friend)), database tidak perlu mencari di index global. Ia hanya mengikuti pointer dari nodeperson ke node-nodefriend-nya. Ini membuat performa penelusuran graf sangat cepat dan konstan, tidak peduli seberapa besar total data di dalam database. Waktu kueri hanya bergantung pada seberapa banyak bagian dari graf yang Anda telusuri, bukan ukuran keseluruhan graf.
Teori Graf Lanjutan
Model graf memungkinkan penerapan langsung algoritma-algoritma dari teori graf untuk analisis data yang canggih, seperti:
Shortest Path: Menemukan jalur terpendek antara dua node (misalnya, rute termurah dalam logistik atau koneksi terdekat dalam jejaring sosial).
Centrality Algorithms (e.g., PageRank): Mengidentifikasi node paling berpengaruh dalam jaringan (misalnya, influencer di media sosial).
Community Detection: Menemukan kelompok-kelompok node yang saling terhubung erat (misalnya, segmentasi pelanggan atau deteksi kelompok teroris).