Showing posts with label algoritma. Show all posts
Showing posts with label algoritma. Show all posts

Sunday, December 19, 2021

Berkenalan Dengan Database Graph

Btw saya mau sedikit menulis tentang "database graph" apasih yang dinamakan database graph itu? Mari kita sadur beberapa tulisan yang saya kumpulkan sehingga dapat kita ambil benang merah apa sih database graph itu.

Database graph


A graph database stores nodes and relationships instead of tables, or documents. Data is stored just like you might sketch ideas on a whiteboard. Your data is stored without restricting it to a pre-defined model, allowing a very flexible way of thinking about and using it. (Sc: Neo4J)

Jadi dari pengertian yang kita ambil dari website neo4j bisa kita artikan bahwa database graph menyimpan node dan relasi, database graph sendiri tidak termasuk tabel dan dokumen. Data tersimpan sama halnya ketika kita menulis di papan tulis. Data yang kita simpan tidak membatasi model seperti yang sudah kita tentukan sebelumnya , data tersebut sangat flexible sehingga memungkinkan kita untuk berfikir dan menggunakannya.

Graph database dalam dunia ilmu komputer menggunakan struktur data grafik yg memiliki komponen node, edge dan properties untuk merepresentasikan penyimpanan data. Graph database menyediakan index-free adjacency yang artinya setiap elemen berisi direct pointer ke adjacent element dan tidak membutuhkan lagi suatu index lookups.

Graph adalah kumpulan simpul yang mewakili entitas dan edge yang memiliki hubungan di antara mereka

Database graph adalah sistem manajemen database online dengan metode create, read, update dan delete yang menggunakan model data graph(properti).

Graph terdiri dari dua elemen: node dan relationship

1. Setiap node mewakili entitas (orang, tempat, benda, kategori, atau data lainnya)

2. Setiap relationship mewakili bagaimana dua node yang dikaitkan

Notes: Berbeda dari database relational, database graph tidak memiliki skema seperti tabel dan kolom yang berbeda dengan isi (record). 

Beberapa contoh graph database sistem

Berikut beberapa sistem yang berfokus pada graph database antara lain:

1. Neo4J (paling populer)

2. Sparksee

3. Titan

4. InfiniteGraph

NoSQL multimodel yang support untuk graph antara lain:

1. OrientDB

2. AranggoDB

Perbedaan database graph dan database relational

Relational

1. Hubungan digunakan untuk menggabungkan entitas untuk mendapatkan hasil

2. Integritas data dikuatkan melalui batasan (constraint)

Graph

1. Hubungan dianggap data

2. Dapat dengan mudah "berjalan" dari satu titik ke titik lainnya menggunakan hubungan

3. Dapat "menjalankan" graph dalam berbagai arah secara paralel

Model Relational

Berikut adalah contoh database relation


Model Graph Database

Berikut adalah contoh database graph secara sederhana


Ketika didetailkan perdatanya menjadi seperti berikut

Gambar di atas adalah penjelasan detail dari database graph dimana gambar lingkaran menjadi node, title dan role menjadi properti, matrix sebagai value, garis yang menghubungkan antar node adalah relation dimana keseluruhan data tersebut kita sebut sebagai path.

Selanjutnya di bawah ini kita akan membahas tentang Neo4J

Neo4J
Neo4J adalah graph database yang paling awaldan paling mature diantara database lainnya. Mature disini maksudnya database neo4j itu merupakan database yang populer dan yang banyak digunakan karena paling siap untuk menangani database graph.

Neo4j berkembang sekitar tahun 2000an dan telah dipakai oleh banyak perusahaan seperti contohnya eBay. CQL atau cypher Query Language merupakan bahasa Query dari Neo4J dengan ditulis menggunakan bahasa Java dan merupakan open source pertama untuk graph database.

Pada perancangan database di Neo4J hanya sebatas desain Node (Titik) dan Edge (penghubung), tidak ada istilah tabel atau database.

Cypher
Cyper adalah bahasa query graph database yang bersifat ekspresif, cypher sendiri dirancang agar mudah dibaca dan dipahami oleh pengembang, profesional database dan stakeholder bisnis. Kunci dari cypher sendiri adalah yang memungkinkan untuk menemukan data yang cocok dengan pola tertentu, mengikuti intusi kita dalam mendeskripsika grafik menggunakan diagram.
Berikut adalah contoh gambaran cypher


Operasi Cypher
Di chypher ada fungsi atau keyword yang dipakai antara lain yaitu:
START : Menentukan titik awal dalam graoh (mis. Node atau Hubungan)
MATCH : Mendeskripsikan spesifikasi dengan contoh, menggunakan karakter untuk mempresentasekan node dan hubungan, untuk menggambar data yang diminati.
RETURN : Mendefinisikan Node, hubungan dan/atau atribut yang harus dikembalikan.
WHERE : Memberikan kriteria untuk pemfilteran.
CREATE (UNIQUE) : Untuk pembuatan node dan relationship.
HAPUS : Menghapus node, relationship dan properties.
SET : menetapkan nilai properties ke node dan properties
FOREACH : memungkinkan untuk melakukan tindakan pemutakhiran untuk daftar elemen.
Secara lengkap semua fungsi atau keyword tersebut ada di Neo4J.

Berikut beberapa contoh sederhana dan penulisannya
START  user=node:nodeIndexName(name={“Bob”})
MATCH (user)-[FRIEND{since:”2001-01-01”}]->(friend)
RETURN friend.name

Akan menghasilkan semua node yang berteman dengan Bob sejak tanggal 01-01-2001

Berikut contoh lebih lengkap tetapi hampir sama
START  user=node:nodeIndexName(name={“Bob”})
MATCH (user)-[FRIEND{since:”2001-01-01”}]->(friend)
WITH user,count(friend)as friends
WHERE friends>10
RETURN friend.name
ORDER BY friend.name
LIMIT 100
Akan menghasilkan semua node yang berteman dengan Bob dalam 11. s.d 100 orang secara unit A to Z berdasarkan nama 
Secara lengkap teman-teman bisa explore lebih lanjut di Neo4J 

Implementasi Database Neo4j

Download server
Download Neo4j Community Server untuk dapat mendownload dengan gratis dan teman-teman dapat download berdasarkan kebutuhan dan sistem operasi masing-masing: Http://neo4j.com/download-center/#realeases-



Mengaktifkan Server
1. Setelah itu download dan instasl terlebih dahulu environment berupa JDK (ketika java belum diinstall) : https://www.oracle.com/java/technologies/downloads/


2. Buka CMD, arahkan ke folder bin Neo4j server (berikut adalah instalasi yang dilakukan oleh sumber yang saya peroleh, saya belum melakukan instalasi langsung)
Arahkan ke bin
Ketika muncul remote interface available at http://localhost:7474/ berarti instalasi telah berhasil


3. Panggil Neo4j melalui browser : Http://localhost:7474/. Masukan pasword default neo4j, lalu ganti password baru sesuai yang diinginkan kita contohkan saya password menjadi : 123456


Ubah password sesuai keinginan

4. Sampai pada tahap ini, Neo4j siap digunakan. Ikuti tutorial yang ada.
Secara sederhana berikut tampilan neo4j

MEMBANGUN DATABASE GRAPH
1. Membuat node terlebih dahulu 


2. Membuat relationship antara kedua nodes tersebut

3. Menghapus relationship


4. Menghapus node
Berikut sedikit ulasan saya mengenai database dan penggunaan dasar Neo4J, semoga sedikit tulisan ini dapat bermanfaat. Mohon maaf atas segala kekurangan, untuk sumber saya sertakan di bawah. Terima kasih.






Sumber:

1. https://id.wikipedia.org/wiki/Graph_database

2. https://neo4j.com/

3. https://www.youtube.com/watch?v=53NcVlh6VNw&ab_channel=KuliahAtmaja

4. https://www.oracle.com/java/technologies/downloads/