Pengantar Database NoSQL dan MongoDB

Ketika kita berbicara tentang database, maka pikiran kita langsung tertuju ke perintah “select * from table”, atau Oracle, PostgreSQL, MySQL dan SQL server. Dua hal diatas adalah database Relasional yang cukup populer ditelinga programer atau mahasiswa IT. Namun Apa itu database NoSQL? Database NoSQL adalah database yang tidak menggunakan realasi antar tabel dan tidak menyimpan data dalam format tabel kaku (kolom yang fix) seperti layaknya Relasional Database.

Pengelompokan database noSQL

Secara umum, database noSQL dibagi menurut format penyimpanan dokmentnya . Berikut ini adalah pengelompokan database noSQL berdasarkan model (penyimpanan) datanya

  1. Document Database contohnya MongoDB, seiap satu object data disimpan dalam satu dokumen. Dokumen sendiri bisa terdiri dari key-value, dan value sendiri bisa berupa array atau key-value bertingkat.
  2. Graph , Format penyimpanan data dalam struktur graph. Format ini sering dipakai untuk data yang saling berhubungan seperti jejaring social. Contoh database noSQL dengan format ini adalah Neo4J dan FlockDB. FlockDB dipakai oleh twitter.
  3. Key – Value,  contoh database jenis ini adalah Apache Cassandra.
  4. Object Database. Format database yang disimpan dalam object object, Object disini sama dengan pengertian object di Pemrograman beroreintasi object , Contoh databasenya adalah Db4o.
  5. Tipe lainnya adalah tabular, tuple store dan berbagai jenis lain yang tidak terlalu populer.

Kelebihan NoSQL di banding Relasional Database

  1. NoSQL bisa menampung data yang terstruktur, semi terstruktur dan tidak terstuktur secara efesien dalam skala besar (big data/cloud).
  2. Menggunakan OOP dalam pengaksesan atau manipulasi datanya.
  3. 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.
  4. Autosharding, istilah sederhananya, jika database noSQL di jalankandi cluster server (multiple server) maka data akan tersebar secara otomatis dan merata keseluruh server.

Kekurangan dari database NoSQL sendiri , minimal bagi saya adalah Hostingnya mahal. beberapa layanan di luar negeri mencharge biaya 100-200USD untuk hosting database noSQL. Selain itu, saya belum pernah menemukan hosting Cpanel yang mendukung database MongoDB atau database noSQL lainnya.

Selain itu, karena bervariasinya produk dan format penyimpanan, berpindah antar satu produk database ke produk noSQL lainnya perlu waktu untuk belajar. Contohnya ketika anda pindah dari MongoDB ke Cassandra, maka anda harus belajar lagi dari awal, berbeda dengan database RDMS.

Pengantar MongoDB

mongodb

MongoDB adalah salah satu produk database noSQL  OPEN SOURCE yang menggunakan struktur data JSON untuk menyimpan datanya. MongoDB adalah salah satu database noSQL yang paling populer di internet. MongoDB sering dipakai untuk aplikasi berbasis Cloud, Grid Computing, atau Big Data.

Format Dokumen /Struktur data di MongoDB

crud-annotated-document

Terminologi dan konsep MongoDB 

berikut ini adalah terminologi dan konsep yang perlu anda tahu di MongoDB, untuk memudahkan anda, maka akan saya buat tabel perbandingan dengan konsep yang ada di SQL database.

Istilah RDBMS Istilah Mongo
 database  database
 table  Collection
 row  Document atau BSON document
 kolom  Field
 index  index
 table join  embeded document dan link
 Primary key*  Primary Key

Untuk primary key, walaupun penamaan istilahnya sama, namun dalam sisi implementasi sangat berbeda. Primary key di RDBMS adalah kolom unik di tabel yang didefinisikan sendiri oleh user . MongoDB secara otomatis membuatkan primary key di field _id dan akan terisi secara otomatis

Pemakai MongoDB

MongoDB telah dipakai oleh perusahaan besar seperti SourceForge.net, CodeAcademy, FourSquare dan Craiglist.

Download MongoDB

MongoDB tersedia untuk platform Linux, Windows dan Mac. Anda bisa mendownloadnya di http://www.mongodb.org/downloads.

Untuk instalasi dan perintah dasar MongoDB akan saya bahas di artikel selanjutnya.

Penjelasan Lisensi Open Source

Setiap karya digital mempunyai aturan dalam hal apa yang boleh dan apa yang tidak boleh. Apa yang boleh dan tidak boleh inilah yang namanya lisensi. Ketika kita berbicara masalah lisensi open source, sebenarnya kurang pas, karena lisensi Open source adalah puluhan jenis yang mempunyai kemiripan dalam hal “menggunakan, mempelajari dan menyebarkan” namun berbeda dalam hal rinciannya.

Tabel perbandingan lisensi open source

Artikel ini akan memberi penjelasan perbandingan lisensi open source dalam format tabel. Karena banyaknya lisensi open source, saya hanya akan menuliskan lisensi populer saja.

Hal GPLv2 GPLv3 MIT BSD 3 Apache v2
 Commercial Use  Ya  Ya  Ya  Ya  Ya
 Memodifikasi  Ya  Ya  ya  Ya  Ya
 mendistribusikan  Ya  Ya  Ya  Ya  Ya
 Menyertakan Warranty  Ya  Ya  –  Ya  Ya
 Sublisensi  Tidak  Tidak  Ya  Ya  Ya
 Bisa dituntut?/Hold liable  Tidak  Tidak  Tidak  Tidak  Tidak
 Menyertakan file asli  Harus  Harus  –  –  –
 Membuka source code Harus  Harus  –  –  –
 Menyertakan status perubahan  –  Harus  –  –  Harus
 Menyertakan hak cipta  –  – Harus  Harus Harus
 Menggunakan trademark  –  –  Tidak Boleh Tidak boleh

Penjelasan Tabel

Warranty & Hold liable

Waranty disini artinya, setiap programer tidak memberi jaminan apapun bahwa program akan berjalan sebagaimana mestinya, jadi warranty disini artinya berbalikan dengan kasus seperti beli barang. Bahasa mudahnya begini, anda mendapat source codenya free, maka jika program tidak berjalan atau error,pembuat software tidak bisa disalahkan didepan Hukum.  Poin waranty ini juga berhubungan dengan “Hold liable/bisa dituntut?”. Sepanjang yang saya tahu, setiap software yang ada, termasuk yang komersial dan close source seperti Windows pun menyertakan point ini. Bahwa pihak perusahaan /programer tidak bisa dituntut oleh pihak user karena softwarenya tidak bisa berjalan atau menyebabkan kerusakan pada sistem seperti kehilangan data.

sublisensi 

Lisensi yang membolehkan sublisensi biasanya sering dipakai di industri dan bisnis komersial. Lisensi apache contohnya, lisensi ini membolehkan anda mendistribusikan dalam lisensi lain yang tidak kompatibel dengan apache. Bahkan lisensi apache membolehkan anda mengedit code dan hasil editannya tidak perlu di open sourcekan.  Android adalah salah satu software open source yang memakai lisensi ini.

Penjelasan tambahan

Jika suatu lisensi bertanda ( – ) artinya hal tersebut tidak diatur oleh lisensi, anda diberi kebebasan untuk hal tersebut. Sebagai contoh di poin menyertakan file asli , jika lisensi bertanda (-) artinya anda bebas mau mendistribusikan file aslinya atau tidak.

Poin yang menekankan kata “harus” artinya, jika anda tidak melakukannya anda sudah melanggar lisensi tersebut. Contohnya pada lisensi MIT, harus menyertakan hak cipta. Sebuah sofware yang bertuliskan “Copyright (c) 2014 by Nama programer “ maka disetiap distribusinya, harus ada keterangan tentang copyright tersebut  sebagai bentuk terimakasih dan penghargaan bagi pembuat aslinya.

Lisensi Karya digital Non software

Jika karya yang ingin kita open source kan bukanlah sofware, maka ada baiknya menggunakan lisensi Creative Common (CC-BY). Penjelasan detail tentang lisensi ini bisa anda baca di artikel saya yang lain dengan judul memahami lisensi creative commons.

Saya bukan ahli hukum, namun penjelasan singkat diatas bisa memberi gambaran bagi anda variasi dari lisensi open source. Jika kita perhatikan kelima lisensi diatas, semuanya sepakat boleh dipakai untuk apapun termasuk untuk komersial, code boleh di edit dan boleh disebarluaskan kembali. 3 point inilah yang menjadi dasar dari Open source. Jika anda ingin melihat penjelasan singkat padat jelas dari lisensi open source lainnya, silahkan masuk ke tldrlegal.com.