Latar Belakang

Larry Dignan dalam artikelnya “Data Management” mengemukakan bahwa ketidakmampuan database tradisional untuk menangani data berukuran petabytes (tak lama lagi exabytes) merupakan alasan migrasi teknologi ke in-memory database atau teknologi database lainnya yang memang dirancang untuk data berukuran besar.

 

Permasalahan utama database tradisional adalah arsitektur Database Management System (DBMS) terlalu lambat untuk membaca data secara real-time. Menurut Feinberg, aplikasi web dalam memenuhi kebutuhan pasar membutuhkan scalability yang lebih baik dibandingkan model DBMS yang ada saat ini. Hal ini merupakan alasan developer mulai mempelajari alternatif lain seperti caching dan NoSQL. Di samping itu, kebutuhan analisa real time juga mendorong penggunaan in-memory DBMS dan caching products untuk meningkatkan kecepatan dan mengurangi latency (Dignan, 2010).

 

Definisi NoSQL

Not Only SQL (NoSQL) merupakan sebuah konsep dimana ketika sebuah software dirancang, terdapat lebih dari satu mekanisme penyimpanan data yang bisa digunakan tergantung kebutuhan software tersebut. Secara sederhana, ketika masalah kompleks harus diselesaikan, masalah akan dipecah menjadi bagian-bagian kecil dan dalam setiap bagian tersebut diterapkan model database yang berbeda. Selanjutnya hasil dari masing-masing bagian digabungkan kedalam sebuah hybrid data storage. Konsep ini juga dikenal sebagai Polyglot Pesistence. Saat ini NoSQL masih belum memiliki definisi tetap, tetapi secara umum NoSQL dapat digambarkan sebagai berikut, tidak menggunakan model relational, berjalan dengan baik dalam cluster, kebanyakan open source, dibuat untuk struktur database abad ke 21, dan tidak menggunakan skema.

 

Mengapa NoSQL?

Developer aplikasi sering berhadapan dengan masalah ketidaksesuaian antara struktur data relasional dengan struktur data in-memory. NoSQL database memungkinkan developer untuk mengembangkan aplikasi tanpa perlu mengubah struktur in-memory ke struktur relasional.

gambar1

Pada gambar diatas, bagian kanan merupakan gambaran implementasi menggunakan database biasa sedangkan bagian kiri merupakan gambaran implementasi menggunakan database berkonsep NoSQL. Gambar ini menunjukkan perpindahan dari penggunaan database sebagai titik integrasi menjadi integrasi menggunakan services.
Database relasional tidak didesain untuk bekerja dengan baik dalam cluster, sedangkan perkembangan web sebagai platform membutuhkan dukungan untuk jumlah data yang besar dengan menjalankan aplikasi dalam cluster.

Dalam sistem yang terdistribusi, konsistensi, availability, dan toleransi partisi merupakan hal yang penting. Teori ini dikenal juga sebagai CAP dan menurut Eric Brewer, saat ini sistem terdistribusi hanya dapat memiliki dua konsistensi, yaitu availability atau partition tolerance. NoSQL database menyediakan pilihan bagi developer untuk menjalankan database sesuai kebutuhannya.

Pilihan yang dimungkinkan oleh database NoSQL memberikan dampak positif dan negatif. NoSQL memungkinkan kita untuk mendesain sistem sesuai kebutuhan, namun hal ini memungkinkan produk database yang sama digunakan dengan baik atau disalahgunakan. Fitur standard yang disediakan RDBMS menyebabkan developer tidak perlu memikirkan apa yang akan terjadi dengan transaksi data dalam database. Sebaliknya, sebagian besar NoSQL database tidak menyediakan fitur untuk mengatur transaksi data sehingga developer harus memikirkan bagaimana transaksi data berjalan dalam database.

Tipe Database NoSQL
Secara garis besar, tipe NoSQL database dapat dikelompokkan ke dalam 4 tipe, yaitu key-value database, document database, column family stores, dan graph database.

  • Key-value database secara umum berguna untuk menyimpan informasi session, user profiles, preference, dan data shopping cart. Hindari penggunaan key-value database ketika membutuhkan query berdasarkan data, relationship pada data yang disimpan, atau perlu menjalankan multiple keys pada waktu yang bersamaan.
  • Document database secara umum berguna untuk content management systems, blogging platforms, web analytics, real-time analytics, dan e-commerce application. Hindari penggunaan document database untuk sistem yang membutuhkan transaksi kompleks dengan multiple operation atau query dengan beragam struktur aggregate.
  • Column family database secara umum berguna untuk content management systems, blogging platform, menangani counters, expiring usage, heavy write volume seperti log aggregation. Hindari penggunaan column family database untuk sistem yang masih dalam tahap awal pengembangan dan sistem yang memiliki pola query yang berubah-ubah.
  • Graph database sangat cocok untuk menyelesaikan problem space dimana data harus saling terhubung seperti social networks, spatial data, routing information untuk barang dan uang, dan mesin pemberi rekomendasi.

Menurut Pramod Sadalage, NoSQL database tidak akan menggantikan posisi RDBMS, namun merupakan awal era polyglot persistence dimana teknologi penyimpanan data yang berbeda digunakan untuk menangani berbagai kebutuhan penyimpanan (Sadalage, 2014).
Referensi
Dignan, L. (2010, October 21). Retrieved September 10, 2015, from Traditional databases vs. the threat from in-memory, NoSQL: http://www.zdnet.com/article/traditional-databases-vs-the-threat-from-in-memory-nosql/
Sadalage, P. (2014, October 3). NoSQL Databases: An Overview. Retrieved September 10, 2015, from toughtworks.com: https://www.thoughtworks.com/insights/blog/nosql-databases-overview