Senin, 16 September 2013

NoSQL ( MongoDB )

Sedikit tentang NoSQL

Sebelum membahas MongoDB, kita perlu kenali dulu konsep NoSQL. NoSQL singkatan dari Not Only SQL. NoSQL sendiri adalah tipe database yang sangat jauh berbeda dengan konsep RDBMS atau ODBMS. Perbedaan utamanya sendiri adalah karena tidak mengenal istilah relation dan tidak menggunakan konsep skema. kalau biasanya menggunakan query "Join" disini tidak bisa menggunakannya karena setiap tabel berdiri sendiri tanpa tergantung dengan tabel lainnya (independen).

Selain itu kalau di dalam konsep DBMS biasanya sebelum insert data diharuskan untuk mendefinisikan terlebih dahulu struktur tabel seperti tipe data dan ukurannya, di konsep NoSQL ini bisa menyimpan data tanpa perlu mendefinisikan tipe data dan ukurannya lagi. Jadi lebih fleksibel bila ada perubahan di masa mendatang.  Adapun beberapa database NoSQL yang ada saat ini yaitu MongoDB, Cassandra, Big Table, CouchDB, Redis, Riak, Dynamo dan lainnya. Tentunya yang akan di bahas di sini secara khusus adalah MongoDB..



Perbedaan NoSQL dengan SQL :

1. Perbedaan utama yang menyolok antara SQL dan NoSQL ada di dalam cara penulisan database mereka. Jika SQL menggunakan relasional sebagai penyambung antara data – data di dalam tabel database mereka. Dan NoSQL tidak menggunakan Relasional sebagai cara mereka untuk menyambungkan antar data mereka. NoSQL menggunakan 4 metode dalam cara mereka untuk menstored data, Key Values stores, Document oriented, Table Oriented, dan terakhir Graph Oriented.
2. Perbedaan yang kedua NoSQL tidak menggunakan Schema relational, jika di dalam SQL kita harus mendefinisikan table yang akan digunakan. Berbeda dengan SQL, NoSQL tidak perlu untuk mendefinisikan terlebih dahulu Table yang akan digunakan.
3. Ketiga NoSQL memiliki kemampuan elastisa yang lebih baik dibandingkan SQL. Untuk menambah jumlah server basis data di dalam NoSQL lebih mudah.
4. Integrated Caching, NoSQl memiliki kemampuan untuk mentransformasikan data dengan lebih cepat hal ini dikarenakan NoSQL menggunakan cache-nya di dalam sistem memori.



MongoDB
  • Apa itu MongoDB?
MongoDB merupakan database open source berbasis dokumen (Document-Oriented Database) yang awalnya dibuat dengan bahasa C++. MongoDB sendiri sudah dikembangkan oleh 10gen sejak Oktober 2007, namun baru dipublikasikan pada Februari 2009. Selain karena performanya  4 kali lebih cepat dibandingkan MySQL serta mudah diaplikasikan, karena telah tergabung juga sebagai modul PHP.




Dalam konsep MongoDB tidak ada yang namanya tabel, kolom ataupun baris yang ada hanyalah collection (ibaratnya tabel), document (ibaratnya record). Data modelnya sendiri disebut BSON dengan struktur mirip dengan JSON. Strukturnya cukup mudah dibaca, contohnya seperti ini.


{
       "nama" : "Ika",
       "kontak" : {
           "alamat" : "Jl. Imogiri Barat Km. 5",
           "kota" : "Yogyakarta",
           "kodepos" : "55187",
           "telp" : "62857432",
       }
}


Dengan konsep key-value yang ada pada MongoDB, setiap document otomatis memiliki index id yang unik. Hal ini membantu mempercepat proses pencarian data secara global.


  • Sejarah MongoDB:

MongoDb ditulis menggunakan C++, pertama kali di rilis tahun 2009. Saat ini Mongodb telah banyak digunakan dan salah satu penggunanya, MTV Networks, Craiglist, Foursquare, UIDA Aadhaar.
Mongodb dikembangkan oleh 10gen. Pertama kali di kembangkan dimulai tahun Oktober 2007. Dan dipublish pada februari 2009, saat ini Mongodb telah rilis mencapai 2.2.2 saat November 2012. MongoDB dirilis menggunakan GNU Affero General Public License.

  • Kelebihan MongoDB:
1. Performa yang ditawarkan MongoDB lebih cepat dibandingkan MySQL ini disebabkan oleh     memcached dan format dokumennya yang berbentuk seperti JSON
2. Replikasi, adalah fitur yang sangat bermanfaat untuk backup data secara realtime. MongoDB sangat cocok digunakan untuk portal berita ataupun blog, namun belum cocok untuk digunakan pada sistem informasi yang berkaitan dengan keuangan karena MongoDB tidak mendukung transaction SQL
3. Auto-sharding, merupakan fitur untuk memecah database yang besar menjadi beberapa bagian demi optimalisasi performa database. Penggunaannya sendiri sangat berguna ketika memiliki website dengan database yang jutaan baris, sharding akan membantu memecahnya menjadi beberapa bagian
4. MongoDB juga sudah mendukung C, C++, C#, Erlang, Haskell, Java, JavaScript, .NET(C# F#, PowerShell), Lips, Perl, PHP, Python, Ruby dan Scala 
5. Cross-platform, sehingga dapat digunakan di Windows, Linux, OS X dan Solaris
6. Proses CRUD (Create, Read, Update, Delete) terasa sangat ringan
7. Map/Reduce, akan sangat membantu ketika kita melakukan operasi agregasi. Dimana semua entry datangnya dari collection dan outputnya pun akan menjadi collection juga. Kalau di MySQL biasanya kita menggunakan query GROUP BY
8. GridFS, spesifikasi yang digunakan untuk menyimpan data yang sangat besar

  • Kekurangan MongoDB :

1. MongoDB harus diinstall di sebuah server.
2. MongoDB belum support di banyak hosting.
3. Tidak cocok untuk aplikasi proses transaksi.


  • Fitur utama dari mongoDB antara lain:

1. Model document-oriented storage
2. Dukungan penuh untuk indexing data
3. Mendukung replikasi database dan trafik data tinggi
4. Auto-sharding (partisi database otomatis)
5. Mendukung fitur map and reduce


  • Instalasi MongoDB
Sebagai contoh kali ini mencoba untuk menginstalasi MongoDB di Windows. Sebelum memulai, Anda harus mengunduh dari link berikut ini (tersedia untuk 32-bit dan 64-bit) http://www.mongodb.org/downloads

Setelah diunduh silahkan diekstrak di drive C (bisa juga di drive lainnya). Buatlah folder sebagai lokasi penyimpanan database misalnya folder DB, dengan path seperti ini :

C:\Mongo\DB

Setelah folder di atas dibuat, lalu buka command prompt dan ketikkan perintah berikut ini:

C:\Mongo\bin>mongod –dbpath=C:\Mongo\DB

Perintah di atas digunakan untuk menjalankan MongoDB, jangan tutup jendela command prompt, tapi buka 1 lagi yang baru ( jadi ada 2 jendela command prompt dibuka). Ketik perintah berikut ini :

C:\Mongo\bin>mongo
MongoDB shell version: 1.8.2
connecting to: test
>
Untuk melihat database apa saja yang ada di MongoDB, ketikkan perintah berikut :

> show dbs;



Demikian sedikit ulasan mengenai MongoDB. Semoga bermanfaat :)

Sumber: