lifelong learner — urip iku urup, currently working on accenture.

Mengenal NoSQL

0
Degananda.com -

1. Selayang Pandang

NoSQL dibuat dengan tujuan untuk “big data”.  NoSQL memiliki arsitektur yang berbeda dibandingkan dengan SQL. NoSQL memiliki spesialisasi untuk menghandle data yang besar.  NoSQL dan SQL memiliki kelebihan dan kekurangan masing-masing. Pada ulasan ini akan membahas secara umum mengenai NoSQL (mongodb) dan menelusuri kelebihan dan kekurangan NoSQL dibandingkan dengan SQL. Sehingga, pada ahirnya kita dapat menentukan teknologi database(sql/nosql) yang akan digunakan dalam sebuah project secara tepat dan bijak.

2. NoSQL

NoSQL merupakan singkatan dari “Not Only SQL” dan sering juga disebut sebagai “Non relational database“.

2.1 Keuntungan penggunaan NoSQL

teknologi database tanpa relasional memiliki beberapa keuntungan yakni :

  1. Better scaling, scaling adalah sebuah istilah yang menunjukan kemampuan sebuah teknologi dalam menyesuaikan dengan suatu kondisi. Misalnya , terjadi kondisi dimana user menjadi sangat banyak dalam waktu yang cepat(membeludak). Maka NoSQL memiliki kemampuan yang lebih baik dalam menyesuaikan kapasitasnya untuk menghadapi kondisi tersebut.
  2. Biaya maintenance murah , karena tidak membutuhkan database administrator dengan skill yang sangat tinggi.
  3. Schema-less , kita tidak perlu mendefinisikan fields dan tipedata pada tabel seperti pada mysql.

dengan keuntungan diatas tidak menunjukan bahwa NoSQL lebih hebat(powerful) dibandingkan dengan SQL. Karena hal itu tergantung dari berbagai aspek. Menurut saya aspek yang menjadi pertimbangan dalam memilih NoSQL dan SQL untuk dijadikan sebagai teknologi database adalah :

  1. Jenis aplikasi
    Hal yang paling penting yakni apakah aplikasi tersebut membutuhkan sebuah query yang complex ? ataukah membutuhkan trigger untuk melakukan komputasi? jika hal tersebut dibutuhkan maka sql adalah pilihan yang terbaik. karena kedua case tersebut tidak dimiliki oleh nosql.
  2. Budget
    Jika memiliki budget yang sedikit(startup) gunakan NoSQL. karena NoSQL jauh lebih murah dibanginkan dengan Sql dan yang paling penting kita tidak perlu hire database administrator.
  3. Konsistensi Data
    Apakah project kita membutuhkan konsistensi data yang sangat TINGGI. Contohnya data stock membutuhkan konsistensi 100% karena berkaitan dengan jumlah barang(stock). Kesalahan stock akan berpengaruh pada banyak hal. Jika kondisinnya seperti ini maka SQL adalah pilihan terbaik karena memiliki fitur seperti : trigger, stored procedure, view, relasi yang dapat membantu menjamin konsistesi data
  4. Autosharding (baca pada bab 4)

Sehingga, pada ahirnya, tergantung dari kebijakan dan kebutuhan dari project untuk menentukan penggunaan SQL atau NoSQL. Bahkan ada beberapa perusahaan besar yang menggabungkan keduannya. Contohnya adalah uber yang menyimpan json dalam schema di mysql.

2.2 Scaling NoSQL

  • Data yang terdapat pada RDBMS (Relational database management system) akan sangat menjadi masalah ketika data mencapai jumlah tertentu. Misalnya performa mysql akan menurun jika jumlah row mencapai satu juta. Untuk menjaga performa saat data mencapai jumlah tertentu RDBMS memiliki banyak sekali fitur untuk itu. Namun, hal ini tentunnya membutuhkan database administrator dengan kemampuan yang sangat tinggi. Hal ini akan menambah beban (cost) untuk bisnis.
  • NoSQL melakukan scale-up(horizontal scaling) contohnya dengan menambahkan server baru(bukan mengupgrade kemampuan hardware pada satu server). Vertical scaling adalah menambah kemampuan suatu hardware misalnya, meningkatkan RAM , clock dari processor yang kemudian disatukan dalam sebuah node.

3. Schema-less

Pada No-SQL kita tidak perlu mendefinisikan tipe data ataupun struktur lainnya. Meski begitu, istilah schema-less ini tidak 100% benar karena kita harus tetap mendefinisikan suatu “Struktur” pada level aplikasi. Contohnya jika kita menggunakan mongoose, kita tetap perlu mendefinisikan model dari data.

4. Auto Sharding

  • Data dalam NoSQL database dapat diletakan pada suatu server yang berbeda-beda. Biaya menambah server jauh lebih murah daripada mengupgrade kapasitas suatu server.
  • Data secara otomatis akan diseimbangkan dari berbagai server kepada server pool, jika terdapat satu server yang down maka data dapat secara langsung dimigrasikan pada server yang lain. Sehingga kemungkinan untuk down kecil dibandingkan RDMBS.