Senin, 28 April 2014

NoSQL

NoSQL merupakan basis data non relasional dengan schema-free yang memunculkan pertanyaan bagaimana NoSQL dapat melakukan partisi untuk data yang berukuran besar, melakukan query, replikasi data, dan mendukung adanya konsistensi. Bagian ini berisi penjelasan empat model data NoSQL, yaitu column-oriented, document-oriented, object-oriented dan graph-oriented [21].
Brewer membuat teorema basis data yang menjelaskan bahwa sebuah DBMS hanya dapat memilih paling banyak dua diantara tiga karakteristik ada, yaitu konsistensi data, ketersediaan data, dan toleransi untuk dipecah menjadi beberapa partisi [24].
RDBMS memilih untuk memprioritaskan konsistensi data dan ketersediaan data, sedangkan mayoritas NoSQL memilih untuk menggunakan ketersediaan data dan toleransi pemartisian data, karena kebanyakan basis data NoSQL digunakan pada aplikasi yang harus menyimpan dan memproses banyak data dengan cepat seperti website jejaring sosial, mesin pencari, dan lain sebagainya. Sebagai konsekuensi dari pilihan tersebut, NoSQL mengorbankan kemudahan untuk konsistensi data. Ketidak konsistenan sebuah basis data dapat menimbulkan kesalahan yang fatal dalam beberapa kasus [6].
Sebagai contoh dalam aplikasi penjualan online seperti pada Amazon, saat ada dua atau lebih pembeli yang melakukan transaksi pembelian pada barang yang sama, pada sistem basis data yang tidak konsisten akan mengijinkan kedua transaksi tersebut. Akibatnya, apabila stok barang yang bersangkutan hanya satu, maka salah satu dari pembeli akan dirugikan karena validasi transaksi dan pembayaran tetap berhasil, namun barang tidak tersedia[6].
Meskipun aplikasi yang menggunakan NoSQL dapat merekayasa validasi konsistensi data melalui pemrograman, Xiang [25] menawarkan solusi dengan membuat middleware layer yang menggunakan algoritma hash untuk mempartisi dan mereplikasi data. Algoritma yang digunakan dapat memastikan konsistensi data pada basis data NoSQL yang terpartisi pada beberapa node, bahkan juga mampu mengidentifikasi jika ada salah satu node server yang hilang (rusak atau tidak terhubung). Sayangnya solusi semacam ini juga mengakibatnya menurunnya performa server dan meningkatnya waktu pemrosesan query.
Meski demikian, kritikan tersebut juga mendapat sanggahan dari beberapa praktisi seperti Mark C dkk [27] dan [28]. Para penyanggah menekankan bahwa pembandingan NoSQL dengan basis data relasional adalah tidak tepat, karena keduanya memiliki tujuan penggunaan yang berbeda, basis data relasional untuk aplikasi yang sensitif terhadap konsistensi sedangkan NoSQL ditujukan untuk pemrosesan data skala besar dan tidak sensitif terhadap konsistensi. NoSQL juga memang bukan untuk menawarkan solusi yang baru, namun lebih pada solusi lama yang dapat digunakan untuk menangani permasalahan baru.
Konsep utama dari penerapan NoSQL adalah bagaimana mengatasi jumlah data yang sangat besar dan ledakan data dalam aplikasi web sebagai paridigma baru dalam penerapan teknologi basis data. Permasalahan dalam RDBMS mengenai skalabilitas dan partisi data dapat diatasi dengan menggunakan NoSQL. NoSQL memiliki beberapa keunggulan seperti basis data non-relasional (meliputi hirarki, graf, dan basis data object oriented); MapReduce yang diambil dari fungsi pemrograman diterapkan untuk menghasilkan dataset yang besar; Schema-free yang memungkinkan dimana tidak terdapat tabel, kolom, kunci primer dan sekunder, join, dan relasi.
Empat model data NoSQL juga telah berhasil diinvestigasi dalam penelitian ini, yaitu column-oriented, document-oriented, object-oriented, dan graph-oriented. Sistem pembagian data dapat dilakukan dengan memenuhi dua dari tiga teori CAP. Untuk peningkatan horizontal scaling, NoSQL mengorbankan konsistensi. Meskipun demikian NoSQL merupakan alternatif dari RDBMS dalam hal pendistribusian data, bukan penanganan masalah secara keseluruhan terutama transaksi yang tinggi. NoSQL tidak menerapkan konsistensi dan integritas data, hal ini membuat programmer harus bekerja ekstra dalam untuk mengatasinya dari sisis pemrograman.

DAFTAR PUSTAKA 
  1. N. Arif, NoSQL: the End of RDBMS? http://arifn.web.id/blog/2010/05/05/nosql-the-end-of-RDBMS.html, diakses pada 15 February 2011
  2. Wei, Kang, Sicong, Tan, Qian, Xiao, Amiri, Hadi, ”An Investigation of No-SQL Data Stores”. http://www.comp.nus.edu.sg/~ozsu/cs5225/Projects/CS5225Final_v15.pdf, diakses pada 10 February 2011.
  3. N. Lynch and S. Gilbert, “Brewer's Conjecture and The Feasibility of Consistent, Available, Partition-tolerant Web Services”, ACM  SIGACT News, 2002, vol. 33 Issue 2, pp. 51-59
  4. Xiang, P., Hou, R., and Zhou, Z., “Cache and Consistency in NOSQL,” 3rd IEEE International Conference on Computer  Science and Information Technology ICCSIT, 2010. Vol. 6, pp. 117-120
  5. Mark C. Chu-Carroll, Databases are hammers; MapReduce is a screwdriver, http://scienceblogs.com/goodmath/2008/01/database_are_hammers_mapreduc.php, diakses pada 10 February 2011.
  6. Relational Database Experts Jump The MapReduce Shark, http://typicalprogrammer.com/programming/mapreduce/,  diakses pada 10 Feb 2011.