Back to IF4031 Arsitektur Aplikasi Terdistribusi

Model Data Berbasis Graf

Questions/Cues

  • Kapan model Graf digunakan?

  • Apa saja komponen Graf?

  • Apa itu model Property Graph?

  • Apa itu Vertex dan Edge?

  • Apa itu Cypher?

  • Apa itu model Triple-Store?

  • Apa itu SPARQL?

  • Apa beda kedua model Graf?

Reference Points

  • 12-IF4031-XX-DataModel.pdf (hlm. 15-20)

Kapan Menggunakan Model Graf?

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.

Komponen Dasar Graf:

  • Vertices (Nodes): Merepresentasikan entitas (misalnya, orang, tempat, produk).

  • 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.

    SELECT ?personName WHERE {
      ?person :name ?personName .
      ?person :bornIn / :within* / :name "United States" .
      ?person :livesIn / :within* / :name "Europe" .
    }

Perbedaan Utama

  • 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 dari Vertices (entitas) dan Edges (hubungan). Dua model utamanya adalah Property Graph (digunakan oleh Neo4j dengan bahasa kueri Cypher yang intuitif) yang sangat fleksibel untuk pemodelan, dan Triple-Store (dikueri dengan SPARQL) yang menyimpan data dalam format (Subject, Predicate, Object) dan sangat baik untuk integrasi data terstandardisasi.