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.
a.
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.
b.
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.
c.
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.
d.
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.
1 Komentar
You really make it seem so easy with your presentation but I
BalasHapusfind this topic to be actually something that I think I would never understand.
It seems too complex and extremely broad for me.
I'm looking forward for your next post, I will try to get
the hang of it!
Also visit my web blog: louis vuitton Outlet