Kamis, 04 September 2014

Basis Data NoSQL MongoDB

Basis Data NoSQL
Anda mungkin pernah mendengar tentang Basis Data NoSQL sebelumnya, basis data ini memang sedang populer dalam kalangan pengembang aplikasi. Basis data NoSQL (kepanjangan dari : Not Only SQL) adalah sebuah teknologi penyimpanan data yang berbeda dari Relasional Database. Didalam basis data NoSQL tidak lagi terdapat relasi antar tabel dan tidak menyimpan data dalam format tabel kaku (kolom yang fix). Skema tabel dibuat se-flexibel mungkin untuk menangani perubahan pada konten aplikasi. Website-website populer di dunia (seperti: facebook, twitter) telah mengadopsi basis data NoSQL untuk menangani penyimpanan data mereka.

Mengapa Basis Data NoSQL ?
Kelebihan NoSQL dibandingkan Relasional Database adalah:
  1. NoSQL bisa menampung data yang terstruktur, semi terstruktur dan tidak terstuktur secara efesien dalam skala besar.
  2. Menggunakan OOP dalam pengaksesan atau manipulasi datanya.
  3. NoSQL tidak mengenal skema tabel yang kaku dengan format data yang kaku. NoSQL sangat cocok untuk data yang tidak terstruktur, istilah singkat untuk fitur ini adalah Dynamic Schema.
  4. Autosharding, istilah sederhananya, jika database noSQL di jalankan di cluster server (multiple server) maka data akan tersebar secara otomatis dan merata keseluruh server (Putra, 2014).

MongoDB
MongoDB merupakan salah satu database NoSQL yang paling populer di internet. MongoDB menggunakan struktur data BSON (Binary JSON) untuk menyimpan datanya. Database ini menggunakan konsep key-value, setiap dokumen akan otomatis memiliki indeks id yang unik sehingga dapat membantu mempercepat proses pencarian data secara global. MongoDB sering dipakai untuk aplikasi berbasis Cloud, Grid Computing, atau Big Data.
MongoDB sudah dikembangkan oleh 10gen sejak Oktober 2007, namun baru dipublikasikan mulai Februari 2009. Performa pada MongoDB sudah mencapai 4 kali lebih cepat dibandingkan dengn MySQL serta mudah diaplikasikan. Nama - nama besar yang telah menggunakan MongoDB seperti Foursqure, Disney, Forbes, Sourceforge, maupun Github

Mengapa MongoDB ?
  1. Mudah dipelajari
  2. Mengimplementasikan ide skema flexibel
  3. Skalabel
  4. MongoDB mendukung modul pemograman MapReduce. Yaitu sebuah konsep yang sangat fenomenal yang pernah dikeluarkan oleh Google dan saat ini banyak diimplementasikan seperti pada Apache Hadoop. MapReduce membantu ketika melakukan operasi agregasi. Dimana semua entry datangnya dari collection dan outputnya akan menjadi collection juga. Pada MySQL biasanya menggunakan query Group By.

MongoDB Konsep
Basis Data
Basis data adalah wadah dari data. Setiap basis data independen satu sama lain, yang artinya tidak ada hubungan antara basis data A dengan basis data B, maupun dengan basis data yang lain. Setiap basis data memiliki satu atau lebih koleksi. Sebagai contoh, sebuah basis data untuk aplikasi blogging diberi nama “blogging” memiliki koleksi seperti artikel, penulis, komen, kategori dan lain-lain.

Koleksi
Sebuah koleksi adalah kumpulan dari dokumen. Koleksi dapat dianalogikan seperti tabel dalam basis data relasional. Akan tetapi tidak seperti tabel, Anda tidak harus mendefinisikan struktur dari data sebelum dapat menggunakannya.

Dokumen
Dokumen disimpan didalam sebuah koleksi. Sebuah dokumen mengandung field atau key-value. Key adalah string, sedangkan value dapat berisi bermacam jenis seperti string, integer, float dan lain-lain. Contoh sebuah dokumen dalam mongodb:
{
   _id : ObjectId("4db31fa0ba3aba54146d851a")
   nama : "dindasigma"
   email : "hi@dindasigma.com"
   umur : 17
   apa_admin : true
   dibuat : "Sun Sept 04 2015 10:47:12 GMT+0700 (BDST)"
}
_id, nama, email umur, apa_admin dan dibuat  adalah key, sedangkan ObjectId("4db31fa0ba3aba54146d851a"), “dindasigma” dan seterusnya adalah value. Struktur ini sangat mirip dengan JSON. Yup, struktur data yang digunakan pada mongoDB adalah struktur data yang mirip dengan JSON.

Perbandingan Dengan Basis Data Relasional
Programmer/Developer/Pengembang dengan latar belakang bekerja dengan sistem database relasional akan cepat mengenali kesamaan antara model database relasional dengan model data Mongo. Gambar berikut membandingkan komponen dari model data relasional dengan komponen dari model data Mongo:
perbandingan rdbms dan nosql
Sebelumnya telah dijelaskan format data untuk mongoDB berbentuk BSON. Gambar dibawah menunjukkan perbandingan antara data pada basis data relasional dan mongoDB :
perbandingan table dan collection
Sama seperti tabel pada RDBMS, koleksi pada mongoDB juga memiliki fields index namun pengimplementasiannya berbeda. Walaupun dalam pengonsepan ada banyak kesamaan, namun MongoDB tidak mengenal adanya relasi antar tabel, itu berarti bahwa mongoDB tidak mengenal  primary key (kunci utama), foreign key (kunci tamu) ataupun JOIN Query. Terdengar lebih mudah bukan?

Kapan kita harus menggunakan dan tidak menggunakan NoSQL Database?
Yang jadi pertanyaan adalah, apakah dengan adanya NoSQL database lantas RDBMS akan mati atau tergantikan? Jawabannya adalah tidak. Akan ada suatu waktu dimana kita masih tetap membutuhkan RDBMS. Bahkan tidak sedikit perusahaan yang memilih menggunakannya secara bersamaan.
Jika data Anda ataupun struktur dari data Anda berubah dengan cepat dan Anda perlu skala yang besar, proses yang cepat dan efisien maka NoSQL adalah jawaban yang tepat.
Tetapi Jika data Anda tidak mengalami pertumbuhan data yang cepat, tidak punya masalah dengan skalabilitas, data membutuhkan banyak relasi yang harus dipetakan, lebih baik menggunakan teknologi SQL.

Tidak ada komentar:

Posting Komentar

Berkenalan dengan MEAN Stack

“ This MEAN stack (Mongo, Express, Angular, Node) may one day surpass the simplicity of the LAMP stack (Linux, Apache, MySQL, PHP) for we...