Anda di halaman 1dari 8

Pemanfaatan Neo4j sebagai No SQL Database

1.1 Pendahuluan
Penetrasi internet yang kini telah digunakan oleh lebih dari 171,7 juta pengguna di Indonesia
(APJII, 2019) telah memberikan banyak manfaat di berbagai bidang, salah satu diantaranya
adalah pada sektor bisnis online atau e-commerce. Hal ini dibuktikan dengan potensi bisnis
online dengan nilai penjualan global e-commerce tahun 2018 yang hampir mencapai 77,766
triliun rupiah atau tumbuh sebesar 151% dibandingkan tahun 2017 menurut Data Bank
Indonesia 2019.
Tingginya potensi dan peluang yang menjanjikan dari bisnis online yang di Indonesia,
pemanfaatan open source ecommerce berbasis CMS (Content Management System) yang
tersebar luas di internet menjadi andalan para pelaku bisnis dalam meningkatkan penjualan dan
pelayanannya kepada pelanggan. Adanya web e-commerce diharapkan dapat memudahkan
pelanggan saat berbelanja. Tidak hanya itu untuk membuat pelanggan tetap loyal, diperlukan
layanan ecommerce yang mampu memperlakukan setiap pelanggannya secara spesial, salah
satunya adalah sistem rekomendasi. Sistem rekomendasi memberikan usulan produk yang
terkustomisasi sesuai ketertarikan setiap pelanggan secara unik. Namun, tidak semua platform
atau website penjualan pribadi yang digunakan menyediakan sistem rekomendasi sehingga
dapat membatasi layanan e-commerce yang digunakan. Setiap bisnis menggunakan platform
yang berbeda sesuai dengan kebutuhan dan memiliki alasannya masing-masing dalam
pemilihan platform yang sesuai dengan bisnis yang dijalankan (Safitri 2017).
Developer akan merasa kesulitan atau tidak efisien jika developer harus membuat sistem
rekomendasi satu per satu pada setiap platform yang berbeda. Belum lagi keterbatasan pada
implementasi berbasis relational database kurang efektif dalam merepresentasikan informasi
dan hubungan antara produk dan pelanggan dengan segara transaksi yang terjadi (Wibowo
2013). Oleh karena itu, diperlukan suatu sistem untuk mengelola data dalam jumlah yang
sangat besar dan juga fleksibel.
Sudah kurang lebih 20 tahun bahasa SQL digunakan oleh para developer. Dengan adanya
teknologi internet semua hal dapat berubah dengan cepat. Transaksi data setiap hari semakin
bertambah dan para developer merasakan adanya kekurangan pada bahasa SQL. Salah satunya
adalah saat data diminta SQL memerlukan memori yang besar, karena harus melihat pada tabel
– tabel yang ada pada database. Jika database kecil hal tersebut tidak masalah, namun jika
database besar itu akan mengurangi kinerja dari database. Dari latar belakang kondisi tersebut
banyak developer mulai mencari cara untuk mengatasinya, dan ditahun 2000 muncul sebuah
gerakan yang disebut “NoSQL Movement” yang diprakasai oleh Johan Oskarsson.
Pergerakkan ini menghasilkan sebuah mekanisme dimana untuk mengambil data tidak lagi
menggunakan bahasa SQL.
NoSQL bukan merupakan bahasa. NoSQL adalah sebuah mekanisme untuk menyimpan data
dan mengambil data yang dilakukan oleh database. NoQSL tidak membutuhkan data model
relational dan bahasa SQL untuk melakukan hal tersebut. NoSQL menggunakan metadata pada
database dan memanfaatkan index dari data tersebut. NoSQL mempunyai empat mekanisme:
• Table-oriented, contoh: Google dengan Big Table dan juga Facebook dengan
Cassandra,
• Graph-oriented,
• Document-oriented database, contoh: MongoDB dan juga CouchDB,
• Key-value store, contoh: Memcache dan Redis
Database No SQL merupakan database yang tidak memiliki perintah SQL dan konsep
penyimpanan yang semistruktural atau tidak terstruktur. No SQL juga bekerja tidak harus
memiliki relasi seperti layaknya table-tabel MySQL, Postgre SQL, atau Oracle database.
Database NoSQL digunakan dengan tujuan untuk memiliki skema yang fleksibel dalam
membuat aplikasi modern. Kebanyakan dalam beberapa kasus penggunaan database NoSQL
berfungsi dalam pengembangan aplikasi yang real time. NoSQL bekerja dengan menggunakan
berbagai model database untuk mengelola dan mengakses data, seperti dokumen, key-value,
grafik, in-memory dan search-engine. Salah satu model database untuk mengelola data-data
tidak terstruktur adalah model grafik. Database jenis grafik menggunakan node sebagai entitas
data dan edge sebagai hubungan antar entitas. Setiap edge memiliki node awalan dan node
akhir. Edge juga menggambarkan hubungan antara orangtua, anak, kepemilikan, tindakan, dan
lain sebagainya. Tujuan dari database jenis grafik ini adalah jaringan sosial media,
pengetahuan, dan mesin rekomendasi. Neo4j bekerja dengan fleksibel dan mudah dibanding
dengan pengolahan data dengan SQL. Dengan adanya layanan pengolahan data NoSQL ini,
diharapkan dapat memberikan kemudahan bagi setiap pengguna e-commerce untuk
mengetahui rekomendasi dari berbagai data transaksi yang berbeda dengan pemrosesan yang
lebih efisien melalui basis data grafik.

1.2 Pembahasan
1.2.1 Fitur Neo4j graph DBMS
Neo4J adalah sistem manajemen basis data graph yang dikembangkan oleh Neo4J, Inc., sebuah
perusahaan yang berbasis di San Francisco Bay Area, Amerika Serikat. Hasil perhitungan
peringkat DB-Engines menunjukkan Neo4J menempati peringkat pertama sistem basis data
graph paling populer mengalahkan Microsoft Azure Cosmos DB, ArangoDB, OrientDB, dan
beberapa sistem manajemen basis data graph lain. Neo4J menggunakan bahasa query bernama
Cypher. Cypher adalah sebuah bahasa deklaratif yang terinspirasi dari SQL untuk
mendeskripsikan pola graph. Cypher pada awalnya dikembangkan eksklusif untuk Neo4J tapi
kemudian dengan dirilisnya openCypher kini Cypher bisa diterapkan pada SAP Hana dan
AgensGraph. Cypher Query mendefinisikan node relationship dengan syntax CREATE dan
MATCH (Robbani dan Wibowo 2018).
Neo4J seperti database graph lainnya bisa digunakan, dalam mempermudah, penyimpanan dan
pengambilan data dalam bentuk graph. Misalnya adalah media sosial, sistem rekomendasi,
fraud detection dsb-nya.Pada Neo4J data direpresentasikan dalam bentuk Node dan Edge.
Node meupakan titik edge adalah penghubung antar dua Node. Baik Node dan Edge memiliki
atribut yang bisa kita sesuaikan. Sebelum menciptakan Node atau Edge, bisa kita definisikan
atribut yang ada di tiap Node atau Edge tersebut. Hal ini opsional tidak wajib tapi merupakan
best practice untuk dilakukan (Septiamsyah dan Heryandi 2013).
Pada Neo4J data direpresentasikan dalam bentuk Node dan Relasi. Node merupakan titik.
Relasi adalah penghubung antar dua node. Baik Node dan Relasi memiliki property yang bisa
kita sesuaikan. Sebelum menciptakan node atau Relasi, bisa kita definisikan atribut yang ada
di tiap node atau Relasi tersebut. Hal ini opsional tidak wajib tapi merupakan best practice
untuk dilakukan. Perancangan database di Neo4J hanya sebatas desain node dan relasi. Tidak
ada istilah tabel atau database dalam Neo4J. Hal ini berbeda dengan basis data RDBMS atau
NoSQL lainnya. Untuk Neo4J, dalam satu database server Neo4J hanya ada satu database, kita
tidak perlu mendefinisikan nama database, juga tidak ada table didalam database tersebut.
Sehingga ketika kita ingin mengubah database maka seluruh file di direktori data di Neo4J
harus dihapus secara manual. Cara ini yang paling cepat dibanding menghapus node dan relasi.
Neo4j telah dikembangakan sejak tahun 2003, dapat ditulis dengan Bahasa Java, JRuby, Scala,
Python, Clojure dan sebagainya (Neo4j Team, 2012). Karakteristik tipe data dari neo4j adalah:
1. Bersifat optional, tidak memiliki struktur data, mudah saat melakukan perubahan
skema.
2. Mudah untuk dimodelkan pada domain data sets yang umum seperti pada permodelan
CMS (Compact Motion Switch) sebagai access control list, database objek, Triple
stores dll.
3. Penggunaannya pada semantic web dan EDF (External Data Format), linkedData, GIS
(Geographic Information System), situs jejaring sosial dan lain sebagainya.
Bagian penting pembentuk graph database dalam Neo4j terdiri dari 6 bagian yaitu, Node,
Relationship, Properties, Path, Traversal dan Query (Ali et.al, 2012).
• Node adalah bagian yang paling mendasar yang membentuk sebuah graph.Dalam neo4j
node dapat memiliki relationship dan properti (Neo4j Team, 2012).
• Relationship merupakan salah satu kunci pembentuk graph database. Dengan adanya
relationship memungkinkan untuk mencari data atau informasi yang berkaitan. Seperti
halnya node, relationship juga dapat memiliki properti.
• Properti merupakan key pada setiap node yang umumnya adalah sebuah tipe data
string. Dan nilai atau isi properti pada setiap key yang bertipe string dapat mencakup
semua tipe data dan memungkinkan untuk fungsi array (Neo4j Team, 2012).
• Path merupakan node yang memiliki hubungan (relationship) disebut path. Misalnya
hubungan antara node 1 dengan node 2, biasanya path berasal dari pengambilan secara
query maupun hasil dari kunjungan traversal.
• Traversal memiliki arti mengunjungi setiap node, mengikuti setiap hubungan satu
node ke node yang lain yang tentu saja berdasarkan aturan yang ada. Dalam banyak
kasus, tiap node yang dikunjungi merupakan subgraph.
• Query merupakan kemampuan untuk menampilkan suatu data dari database. Bahasa
query yang dipakai oleh Neo4j sekarang mendukung kemampuan untuk mengambil
seluruh jalur terpendek, mengekstrak dengan mudah nilai pertama dari list dengan null
menggunakan COALESCE, alias column dan menangani hubungan panjang variabel.
Gambar 1. Node have relationship and properties

Gambar 1. Cakupan relationship

Perancangan Optimasi Sistem Pencarian

Optimasi pencarian yang menjadi fokus pada penulisan ini adalah dengan pemanfaatan
graph database yang dirancang untuk menjadi knowledge graph, agar dapat
memberikan hasil yang akurat dengan pencarian similarity search (Wang, 2012) serta
hasil relationship yang didapatkan juga jelas. Dengan Neo4j pendekatan hasil pencarian
tersebut dapat dilakukan pada penggunaan Cypher Query Language (Neo4j Team,
2012). Berikut adalah beberapa pemodelan masalah untuk mengoptimalkan pencarian
guna pendeteksian masalah:

a. Pencarian dengan Kesamaan Lokasi

Kasus seperti penggunaan ruangan atau kampus yang sama kadang terjadi dan tidak
jarang menjadi masalah karena mungkin terlalu jauh untuk beberapa dosen atau karena
faktor lainya. Berikut ini adalah pencarian mata kuliah dengan jadwal lokasi kampus
yang dibuat dalam bentuk graph. Algoritma mata kuliah dengan lokasi kampus
“double” yang dipakai mahasiswa. Cari lokasi mata kuliah yang ”double” lokasi
digunakan oleh beberapa mahasiswa:
1. Menentukan matakulaih yang sudah mendapat jadwal di kampus E dan G
2. Menentukan mata kuliah lain yang belum mendapat lokasi.
Query:
START subject
= node:node_auto_index(name = "IMK")
WHERE subject<-[:learn]-person-[: learn]->location
RETURN stuff.name, count(*)
ORDER BY count(*) DESC, stuff.name

Gambar 3 Graph pencarian kesamaan lokasi

Subject Count
“AKUN” 2
“SOD” 1
“IMK” 1
Tabel 1 Hasil dari Graph pencarian kesamaan lokasi

b. Pencarian dengan Kesamaan Skill


Berikut adalah optimasi pencarian tenaga ahli dengan tingkat kemiripan yang di
ranking. Algoritma pencarian skill yang juga dikuasai oleh mahasiswa yang lain.
1. Tentukan tag yang berhubungan dengan apa yang diminati.
2. Apa lagi yang ditandai dengan tag tersebut?
3. Minat siapasaja yang ditandai dengan tag yang sama?
4. Sortir berdasarkan banyaknya hitungan
5. ORDER BY similar_skill DESC
Query
START me=node(9)
MATCH me-[:skill]->mySkill-[:tagged]->tag<-[:tagged]-theirSkill<-[:skill]-people
WHERE NOT(me=people)
RETURN people.name as name, count(*) as similar_skill
5. ORDER BY similar_skill DESC
Gambar 4 Graph pencarian kesamaan skill

Name Similar_skill
“DIN” 2
“ABI” 1

1.2.2 Kelebihan dan kekurangan Neo4j

Perbedaan SQL dan NoSQL terletak pada cara penulisan database. SQL menggunakan
relasional sebagai penyambung antara data-data di dalam tabel database. Sedangkan
NoSQL tidak menggunakan Relasional sebagai cara mereka untuk menyambungkan
antar data. NoSQL tidak menggunakan schema relational. SQL user harus
mendefinisikan table yang akan digunakan. Pada NoSQL tidak perlu untuk
mendefinisikan terlebih dahulu Table yang akan digunakan. Dalam Database SQL data
berbentuk tabel yang terdiri dari sejumlah baris, sedangkan pada NoSQL data tidak
memiliki definisi skema standar yang harus dipatuhi. NoSQL memiliki skema yang
dinamis sedangkan pada database SQL mengikuti skema yang telah ditetapkan.

a. Kelebihan Neo4j sebagai NoSQL database

• NoSQL bisa menampung data yang terstruktur, semi terstruktur dan tidak
terstuktur secara efesien dalam skala besar (big data/cloud).
• Menggunakan Object Oriented Programming dalam pengaksesan atau
manipulasi datanya.
• NoSQL tidak mengenal schema tabel yang kaku dengan format data yang kaku.
NoSQL sangat cocok untuk data yang tidak terstruktur, istilah singkat untuk
fitur ini adalah Dynamic Schema.
• Autosharding, merupakan keadaan jika database NoSQL di jalankan di cluster
server (multiple server) maka data akan tersebar secara otomatis dan merata
keseluruh server.

b. Kekurangan Neo4j sebagai NoSQL database


• Hosting yang tergolong mahal dengan beberapa layanan di luar negeri yang
berharga 100-200 USD untuk hosting database NoSQL.
• Sulit mencari hosting Cpanel yang mendukung database Neo4j atau NoSQL
lainnya.
• Karena bervariasinya produk dan format penyimpanan, berpindah antar satu
produk database ke produk NoSQL lainnya perlu waktu untuk belajar.
Contohnya ketika pindah dari Azure Cosmos ke Neo4j, maka harus belajar lagi
dari awal. Berbeda dengan database RDMS, command untuk beberapa RDBMS
pada dasarnya sama.

1.2.3 Perusahaan yang menggunakan Neo4j sebagai NoSQL


Beberapa perusahaan yang sudah menggunakan Neo4j di Indonesia merupakan industri jasa
perhotelan. Hotel merupakan fasilitas yang terpenting dalam kebutuhan travelling. Mengingat
banyaknya jumlah tamu yang berkunjung, persediaan kamar, layanan kamar maka masalah
dalam pengelolaan penyimpanan database menjadi cukup besar. Data yang semakin banyak
membuka peluang dalam pembuatan sistem yang lebih efisien dalam pengorganisasian dan
pengoptimalan pencarian data. Data - data yang nantinya menjadi sebuah informasi harus dapat
disimpan dengan baik sehingga sewaktu-waktu data tersebut dibutuhkan dapat diakses secara
cepat.
Generasi terbaru dari perangkat lunak pada suatu sistem sangat tergantung pada penggunaan
sistem database. Menurut jurnal penelitian Yubin, Park et al. (2014). Graph Database in Large
Scale Healthcare System A Proposal for Efficient Data Management and Uilization. University
of Texas at Austin TX. USA. Menjelaskan tentang pemakaian graph database dalam jumlah
besar untuk sistem kesehatan. Jurnal tersebut membanding sistem kerja query antara database
MySql dengan graph database Neo4j. Hasil dari penelitian tersebut menjelaskan pegunaan
query pada database Neo4j lebih cepat dan stabil dibandingkan dengan pengunaan query pada
database MySql. baik dalam volume dan keterkaitan. Salah satu model database NoSQL adalah
Graph Database (Widyayanti dan Nurhidayat 2016).
Dengan mulai meningkat data Graph Database adalah basis data yang menggunakan struktur
grafik yang berisi node, relasi, dan property untuk mewakili dan menyimpan informasi.
Keunggulan lain dalam GraphDB adalah biasanya lintasan grafik digunakan sebagai pengganti
operasi join yang berpengaruh dalam efisiensi query. Neo4j merupakan jenis dari GraphDB.
Pada sistem ini dibuatlah sistem informasi hotel menggunakan Graph Database (Neo4j). Dari
hasil uji menggunkana Neo4j dan MySql, berikut hasil perbandingan waktu performa Neo4j
dan MySql
Membandingkan Perbandingan waktu
Neo4j MySql
Menambahkan data 231 ms 89ms
Mengedit data 869 ms 93 ms
Menghapus data 372 ms 124 ms
Merelasikan data 942 ms 890 ms
Menampilkan 100 data 387 ms 432 ms
check-in
Menampilkan 100 data 129 ms 109 ms
check-out
Rata-rata 488.33 ms 289.5 ms
Tabel 2 Hasil perbandingan database

Dari hasil rata-rata tersebut membuktikan bahwa database MySQL lebih cepat dan stabil
dibandingkan database Neo4j. Akan tetapi perbandingan antara waktu proses antara database
Neo4j dengan database MySQL memiliki kecepatan sendiri. Kecepatan rata-rata yang dimiliki
database MySQL adalah 289.5 ms sedangkan database Neo4j memiliki kecepatan 488.33 ms.
Kecepatan tersebut membuktikan bahwa database MySql lebih cepat dibandingkan dengan
database Neo4j. Keuntungan menggunakan database Neo4j adalah relasi antar node dapat
dibuat tanpa membutuhkan banyak operasi JOIN TABLE seperti pada MySQL. Sedangkan
kelemahannya, database Neo4j masih baru sehingga perlu ada pengembangan lebih jauh untuk
menggunakannya.

DAFTAR PUSTAKA
“Database Engine” [Online]. Available: https://db-engines.com/en/ranking/graph+dbms
[Accessed: 11-Jan-2019].
“Staff and Leadership - Neo4j Graph Database.” [Online]. Available: https://neo4j.com/staff/.
[Accessed: 11-Jan-2019].
Ali et.al, 2012. Pencarian dengan Knowledge Graph. Prosiding Seminal Ilmiah Nasional
Komputer dan Sistem Intelijen.
Safitri, Marina. 2017. Rancang Bangun Restful Web Service pada Sistem Rekomendasi E-
commerce Berbasis Graf Neo4j dengan Metode Collaborative Filtering. Institut Teknologi
Sepuluh November.
Septiamsyah Moch Tegar P dan Andri Heryandi. 2013. Pembangunan Aplikasi Mobile Silsilah
Keluarga.
Widyayanti Claudia Mei dan Andi Iwan Nurhidayat. 2016. Rancang Bangun Sistem Informasi
Hotel Menggunakan Graph Base. Jurnal Manajemen Informatika. Volume 6 (2).

Anda mungkin juga menyukai