Pengenalan MongoDB untuk Pengguna Relational-DBMS


MongoDB

MongoDB

Pada artikel saya akan membahas tentang MongoDB sebuah sistem basis data yang menganut paham NoSQL. NoSQL itu bukan berarti anti menggunakan SQL (No-SQL), tapi NoSQL itu singkatan dari Not Only SQL. Artinya sebuah sistem basis data tidak hanya harus menggunakan perintah SQL untuk melakukan proses manipulasi data. Kali ini saya akan membahas MongoDB dari sudut pandang pengguna sistem basis data relasional seperti MySQL, Oracle dan sejenisnya.

Apa itu MongoDB

MongoDB merupakan sebuah sistem basis data yang berbasis dokumen (Document Oriented Database). Bagi pengguna RBDMS mungkin agak membingungkan, karena dalam MongoDB tidak ada yang namanya tabel, kolom dan baris. Dalam MongoDB yang ada hanyalah koleksi dan dokumen. Koleksi dalam MongoDB bisa kita anggap sebuah Folder (Directory) dan Dokumen bisa kita anggap berkas (File) dalam Folder (Koleksi) tersebut.

Jika dibandingkan dengan RDBMS seperti MySQL, Koleksi dapat diibaratkan dengan Tabel dan Dokumen dapat diibaratkan dengan Baris dalam Tabel tersebut. Namun berbeda dengan Baris pada RDBMS, dokumen yang terdapat dalam MongoDB dapat memiliki berbeda atribut dengan dokumen lain walaupun berada dalam satu koleksi. Hal ini tidak dapat dilakukan dalam RBMS dimana sebuah baris dalam Tabel tidak mungkin memiliki kolom yang berbeda dengan baris yang lain jika berada dalam satu tabel.

Bahasa Perintah MongoDB

MongoDB tidak menggunakan bahasa yang biasa digunakan RDBMS (SQL atau PL/SQL). MongoDB menggunakan bahasa BSON, dimana BSON merupakan singkatan dari Binary JSON. Jika Anda terbiasa menggunakan JavaScript, pasti tidak akan terlalu sulit menggunakan MongoDB. Dibawah ini adalah contoh perintah MongoDB untuk menyimpan sebuah data Mahasiswa :

data = {
   "nim" : "10106031",
   "nama" : "Eko Kurniawan Khannedy"
}

db.mahasiswa.insert(data)

Mengapa MongoDB

MongoDB merupakan sistem basis data yang menggunakan konsep key-value, artinya setiap dokumen dalam MongoDB pasti memiliki key. Hal ini berbeda dalam RDMBS yang kita bisa tidak menggunakan primary key ketika membuat sebuah tabel. Sehingga walaupun kita membuat sebuah dokumen tanpa menggunakan primary key, tapi secara otomatis MongoDB memberinya sebuah key. Penggunaan konsep key-value sangat berperan penting, karena hal ini membuat MongoDB menjadi sistem basis data yang sangat cepat jika dibandingkan dengan non key-value seperti RDBMS.

MongoDB mendukung replikasi, selain itu konfigurasi replikasi pada MongoDB sangatlah mudah jika dibandingkan sistem basis data RDBMS (IMHO). Hal ini membuat pemilik sistem yang memiliki traffic membaca tinggi (seperti portal berita, forum dan blog) akan sangat terbantu ketika sistemnya akan menggunakan replikasi.

Selain replikasi, MongoDB juga mendukung sharding. Jika Anda pernah melakukan sharding di RDBMS yang sangat berdarah-darah 😀 , maka akan sangat kagum dengan sharding di MongoDB. Kapan kita menggunakan sharding? Saat Anda memiliki website yang sudah sangat besar jumlah penggunanya, datanya mencapat jutaan giga byte. Anda dapat menggunakan sharding, misal membasis basis data Anda menjadi per regional.

Salah satu kelebihan MongoDB lainnya adalah, MongoDB mendukung model pemrograman MapReduce, sebuah konsep yang sangat fenomenal yang pernah dikeluarkan oleh Google dan saat ini banyak diimplementasikan seperti pada Apache Hadoop.

Dukungan Bahasa Pemrograman

Saat ini hampir semua bahasa pemrograman modern mendukung MongoDB, seperti Java, C/C++, Python, Ruby, PHP, C# dan lain-lain. Jika Anda membutuhkan driver MongoDB untuk bahasa pemrograman yang anda gunakan, Anda dapat mencarinya disini http://www.mongodb.org/display/DOCS/Drivers

Kapan Tidak Menggunakan MongoDB

Hampir semua sistem basis data NoSQL tidak mendukung proses transaksi. Padahal hal ini sangat penting jika kita membangun sistem yang selalu memerlukan proses transaksi seperti sistem Bank misalnya. Oleh karena itu MongoDB sangat tidak cocok jika digunakan untuk membangun sistem berbasis transaksi, karena jika sistem basis data NoSQL (seperti MongoDB) digunakan dalam kasus ini, maka bisa dipastikan akan banyak terjadi kegagalan dalam sistem, terutama saat proses transaksi.

Kapan Menggunakan MongoDB

MongoDB merupakan basis data yang tidak relasional, hal ini membuat MongoDB sangat cepat saat melakukan proses manipulasi data dari pada sistem basis data relasional, selain itu MongoDB berbasis dokumen yang tidak memiliki struktur data yang teratur seperti tabel. MongoDB sangat cocok untuk membangun sebuah sistem seperti blog, forum, portal berita, social networking, dan website yang tidak membutuhkan proses transaksi seperti sistem bank.

MongoDB di Dunia Nyata

Saat ini MongoDB sudah banyak digunakan di dunia nyata. Walaupun MongoDB merupakan sistem basis data yang bisa dibilang masih muda (Tidak seperti MySQL dan Oracle), tp MongoDB sudah banyak digunakan pada website-website besar seperti foursquare dan lain-lain.

Dari mana Belajar MongoDB

Jika Anda tertarik mempelajari lebih jauh tentang MongoDB, Anda dapat mencari informasinya disini http://www.mongodb.org/display/DOCS/Home, namun jika Anda fakir bandwitdh (Seperti Saya :D), Anda dapat mengunduk dokumentasi MongoDB disini http://dl.mongodb.org/dl/docs/

Selamat belajar 😀

21 pemikiran pada “Pengenalan MongoDB untuk Pengguna Relational-DBMS

  1. wih…
    makasih infonya kang eko…
    dpt info apa itu sharding,,

    trus kayanya emang bakalan cepet ya Kang,,karna tiap field jadi *index* key..

    klu bedanya dgn CouchDB gmn Kang Eko ?? agak sama y sepertinya…

  2. assalam..
    mas,,,masih agak bingung ne dengan database sharding,
    kalo implementasinya db sharding di RDBMS sendiri gimana mas?
    apa hanya cuma memanajemen primary key di level aplikasi ud dikatakan sharding?
    kalo cuma demikian knp dbsharding bisa dikatakan mempercepat query?hehe…

    maaf mas masih agak awam…:D
    –met menjalankan ibadah puasa–

    • implementasi sharding di rdmbs ya tergantung databasenya sendiri, konsepnya sih di semua database baik itu NoSQL ataupun RDBMS, semuanya sama. sharding itu memecah database menjadi beberapa database, hal ini dilakukan agar data dapat didistribusikan secara merata, tidak terpusat, bayangkan jika kita punya satu DBMS yang menangani 1TB data, dan bandingkan jika data 1TB itu kita pecah menjadi 10 dan berjalan pada 10 DBMS, sehingga 1 DBMS menghandle 100GB, itu pastinya lebih ringan dan lebih cepat kan? walaupun dari segi integrasi pastinya lebih kompleks 😀

Tinggalkan komentar