NoSQL

Udah hari ke tiga liburan nih, masih aja belum kemana mana :v maklum lah diluar macet total dari pas sebelum natal -_- yo, mari hari ini saya akan berbagi sekalian belajar tentang NoSQL, nah apa sih NoSQL ini? 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.

NoSQL merupakan kombinasi dua kata, kata No dan SQL. NoSQL adalah teknologi yang menandingi SQL. Pembuat dan pengadopsi awal dari kata NoSQL menginginkan untuk berkata No RDBMS atau No Relational tetapi akhirnya disuarakan dengan kata NoSQL. NoSQL digunakan sebagai payung pengertian untuk semua basis data dan penyimpanan data yang tidak mengikuti dasar-dasar RDBMS. NoSQL mewakili kelas dari produk dan kumpulan yang berbeda konsep tentang penyimpanan data dan manipulasi.

Sejarah konsep NoSQL dimulai ketika Carlo Strozzi pada tahun 1998 menggunakannya untuk nama open source database relational yang tidak mengikuti standar SQL, kemudian Eric Evans (karyawan Rackspace) memperkenalkan kembali istilah NoSQL pada awal 2009 ketika Johan Oskarsson dari Last.fm ingin menyelenggarakan acara untuk membahas distributed database open source.

Sejarah NoSQL tidak lepas dari kesulitan-kesulitan yang terjadi dalam penanganan perkembangan database dengan menggunakan konsep relational database. Dalam praktiknya, database tidak hanya berkembang secara vertikal (adanya penambahan baris), tetapi juga berkembang secara horisontal (adanya penambahan field). Ketika field bertambah banyak permasalahan yang terjadi ketika menggunakan konsep RDBMS. Dalam konsep RDBMS, penambahan field merupakan masalah yang harus dihindari, akan tetapi pada kenyataannya hal itu sering terjadi. Konsep tersebut yang mendasari adanya konsep NoSQL. NoSQL tidak membutuhkan skema tabel dan umumnya menghindari operasi join karena berkembang secara horisontal. Kaum akademisi menyebutnya sebagai structured storage (penyimpanan terstruktur).

Eric Brewer menyatakan bahwa NoSQL didasarkan pada teori CAP yaitu pemilihan dua dari tiga aspek yang ada yang harus dipenuhi oleh basis data yaitu Consistency, Avaibility, dan Partition Tolerance. Consistency Avaibility (CA) berseberangan dengan Partition Tolerance dan biasanya berhubungan dengan replikasi. Consistency Partition Tolerance (CP) berseberangan dengan Avaibility dalam penyimpanan data. Avaibility Partition Tolerance sistem mencapai kondisi eventual consistency melalui replikasi dan verifikasi yang konsisten dalam node yang telah terbagi-bagi. Dalam basis data NoSQL penerapan konsep tersebut diterjemahkan dalam empat konsep dasar yaitu Non Relational, Map Reduce, Schema Free, dan Horizontal Scaling.

  1. Non Relational
    Konsep Non Relational dalam basis data NoSQL meliputi hirarki, graf, dan basis data berorientasi obyek yang sudah terlebih dahulu ada sejak tahun 1960 sebelum akhirnya basis data relational muncul pada tahun 1960. Penggunaan basis data non relational kembali merebak seiring dengan bertambahnya aplikasi berbasis web yang memerlukan banyak penyimpanan data. Meskipun memiliki kelemahan pada konsistensi dan redundansi data, namun basis data non relational dapat menyelesaikan beberapa permasalahan terkait dengan avaibility dan partition tolerance. Tugas pengecekan konsistensi dan redundansi data diserahkan pada sisi aplikasi, sedangkan basis data non relational hanya bertugas memanipulasi penyimpanan saja.
  2. Map Reduce
    Map reduce merupakan model pemrograman yang diadaptasi dari pemrograman fungsional yang diimplementasikan untuk mengolah dataset yang sangat besar. Tujuan dai Map Reduce adalah merancang suatu abstraksi baru yang memungkinkan pengguna untuk membuat antar muka pemrograman sederhana dan menyembunyikan detail yang rumit dari paralelisasi, fault-tolerance, distribusi data, dan load balancing dalam pustaka pemrogramannya. Hasilnya menunjukkan bahwa penerapan Map Reduce dapat menyederhanakan antar muka pemrograman yang dapat mendukung paralelisasi dan distribusi komputasi skala besar secara otomatis.
    Pemrograman dengan Map Reduce telah sukses diterapkan penggunaannya ole Google untuk berbagai tujuan, salah satunya adalah Google Indexing. Dalam kinerjanya, Google menerapkan ribuan mesin yang bekerja pada ratusan tera bytes data dengan lokasi server yang tersebar di beberapa lokasi. Jenis arsitektur seperti ini dapat mengurangi waktu kinerja yang diperlukan. Pembangunan arsitektur Google dengan menggunakan Map Reduce memerlukan waktu hanya dalam beberapa jam saja dibandingkan dengan tidak menerapkan Map Reduce yang memerlukan waktu selama berbulan-bulan. Penggunaan library dalam Map Reduce memiliki beberapa keuntungan seperti load balancing, optimasi perangkat penyimpanan yang nantinya akan meningkatkan keefisiensian sistem dan memudahkan dalam penggunaannya. Mudahnya Map Reduce bekerja dengan membagi proses menjadi dua fase, yaitu tahap map dan tahap reduce. Seorang programmer dapat memanfaatkan dua fungsi ini bersama fungsi key-value pairs sebagai input dan output untuk mencapai semua fase.
  3. Schema Free
    NoSQL dan RDBMS memiliki perbedaan dalam hal penerapan skema basis data. Dalam basis data relasional, sebuah tabel didesain dengan peraturan skema yang ketat. NoSQL menyimpan data dengan aturan yang lebih longgar, artinya tidak seperti basis data yang berdasarkan SQL tradisional. NoSQL tidak memiliki tabel, kolom, primary key, foreign key, join, relasi (Joe Lennon, 2009).
    Dalam pengembangan basis data relasional, developer/ database administrator harus berhati-hati dalam menentukan bagaimana tabel saling berelasi dan field yang ada dalam setiap tabel, karena perubahan skema dalam RDBMS dapat menimbulkan masalah ketergantungan dan integritas, seperti timbulnya kolom null dan relasi kunci yang tidak cocok. Hal tersebut bukan masalah dalam NoSQL karena adanya penerapan schema-free. Setiap dokumen bertanggung jawab terhadap isinya sendiri. Jadi null value dapat dihilangkan dalam beberapa baris, dan field baru dapat didefinisikan dalam setiap dokumen secara independen.
    Manfaat lain dalam penggunaan schema-free adalah penghematan dalam media penyimpanan. Dalam basis data relasional, setiap field yang ada dalam tabel harus mempunyai nilai, walaupun nilai itu null. Model data schema free artinya setiap baris memungkinkan memiliki nilai sebanyak yang telah didefinisikan dalam tiap field, dan tidak perlu menggunakan nilai yang memang tidak diperlukan. (Eben Hewitt, 2010).
    Kelemahan dalam penggunaan schema-free adalah memunculkan lemahnya pendefinisian struktur yang memungkinkan terjadinya penggunaan basis data yang tidak konsisten. Jika tujuan pembangunan basis data didasarkan pada konsistensi yang ketat, seperti wiki, document management systems, discussion forums, blogs, dan support management systems, maka basis data relasional masih merupakan pilihan yang tepat.
  4. Horizontal Scaling
    Horizontal scaling memungkinkan basis data dijalankan pada beberapa server untuk meningkatkan kemampuan perangkat penyimpanan dan meningkatkan efisiensi waktu. Hal ini memerlukan kemampuan dinamis pemartisian data dalam serangkaian node (storage host) dalam suatu cluster server. Kemampuan dengan menambahkan beberapa komputer sangatlah penting dilakukan untuk data yang jumlahnya banyak, karena vertical scaling dilakukan dengan meningkatkan kemampuan spesifikasi single server terbatas dan lebih mahal.
Pengelompokan database NoSQL

Secara umum, database NoSQL dibagi menurut format penyimpanan dokumennya . 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

  • NoSQL bisa menampung data yang terstruktur, semi terstruktur dan tidak terstuktur secara efesien dalam skala besar (big data/cloud).
  • Menggunakan OOP 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, 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 , menurut saya adalah Hosting yang cukup 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.

Nah sekian artikel tentang NoSQL ini. Semoga bermanfaat.. :D

 

Sumber : Insanjabal & Candra