Friday, August 12, 2016

SQL vs NoSQL: Siapa yang lebih baik?

Jawaban Leonardo Camilius dari Pertanyaan SQL vs NoSQL: Siapa yang lebih baik? di SETO.CO.ID

Lihat jawaban selengkapnya di SETO.CO.ID

Gunakan NoSQL jika: 

  1. Saat kita membutuhkan penyimpanan data yang “relatif” besar, namun terdapat keterbatasan resources (komputer/server). Mengapa saya tambahkan syarat “keterbatasan resources”? Karena sebenarnya relational database scalable untuk data besar bahkan untuk skala >PetaByte (e.g. Facebook menggunakan MySQL). Namun demikian butuh resources yang sangat besar untuk membuat database relasional memiliki performa yang baik bila datanya besar.
  2. Data tidak terstruktur (Misal Dokumen) atau biasa disebut sebagai Schemaless Data Representation. Bayangkan data yang masuk ke database terkadang hanya memiliki 4 kolom, tapi dilain waktu memiliki jumlah kolom yang berbeda lagi. Di Database relasional kejadian seperti ini akan memaksa kita mengubah struktur DB (schema) yang biasanya sangat fatal, terutama apabila datanya besar. Perubahan schema adalah bencana besar bagi sistem IT. Karena aplikasi harus direvisi mengikuti perubahan tersebut. Pada terminologi Big Data, ini terkait dengan “Variety”, yaitu semakin beragamnya tipe/struktur/format data yang masuk ke database.
  3. NoSQL (MongoDB) sangat cocok dengan aplikasi yang berorientasi objek. Dengan tidak adanya Join di NoSQL dan query yang rumit, NoSQL terkenal mempercepat para developer dalam membangun sebuah aplikasi.
  4. NoSQL sangat cocok bila aplikasi/system membutuhkan proses Write/Insert dalam jumlah yang sangat besar dan dalam waktu yang singkat. Dikaitkan dengan terminology di Big Data, NoSQL sangat cocok jika sistem kita memiliki Velocity data yang besar.
  5. Data anda mengandung informasi lokasi (e.g. Latitude/Longitude).
  6. Data complexity – data disimpan (& manage) tersebar di berbagai lokasi (data centres) yang berbeda (distributed).

Jangan gunakan NoSQL jika: 

  1. Saat data yang diinput memiliki nilai yang sangat berharga (misal transaksi pemabayaran/transfer uang). NoSQL cepat dalam melakukan input namun tradeoff-nya ia tidak se-reliable tipe database lain.
  2. Analytic: walau memiliki implementasi map reduce-nya sendiri, NoSQL bukan pengganti Hadoop atau analytic engine lainnya. Ia sifatnya komplementari (membantu) analytic engine.
    Multi-Object Transactions: NoSQL (MongoDB) tidak mendukung input beberapa hal ke satu atau lebih “table”. Misal, MongoDB hanya support untuk penyimpanan ke sebuah dokumen.
    Complex Query: Jika aplikasi yang dibangun membutuhkan query yang rumit (complex), biasanya NoSQL kurang cocok. Walau NoSQL memiliki querynya sendiri, namun lebih terbatas ketimbang database konvensional.
  3. ‘Nature’ dari datanya memang relasional (A==>nB, B==>nA).

Tulisan ini dipost melalui Aplikasi Seto di tanya jawab seputar Database, Sistem Admin, Programming, dan MySQL.

No comments: