NoSQL lebih evolusioner daripada revolusioner. Ini pada dasarnya menggabungkan ide-ide yang ada "penyimpanan database eksternal" dengan "menggunakan struktur data yang akrab, bukan tabel relasional."
Ada lebih banyak jenis database daripada relasional, misalnya database hirarkis . Meskipun kuno menurut standar saat ini, ia sangat cocok dengan struktur data datanya (misalnya catatan COBOL ). Intinya adalah, data dalam database dimodelkan erat dengan bagaimana catatan diletakkan dalam bahasa pemrograman yang menggunakannya.
Maju cepat ke penemuan basis data relasional , di mana akhirnya basis data memisah perhatian dan, ketika dinormalisasi dengan baik, adalah cara yang bagus untuk memvisualisasikan sebagian besar tipe data dan hubungan antar data. Hal ini benar-benar mudah dimengerti dibandingkan dengan jenis lain dari database. Apa yang benar-benar gagal di, bagaimanapun, adalah menyimpan data dengan cara yang mencerminkan objek dan kelas dalam suatu program. Oleh karena itu, penemuan pemetaan objek-relasional . Dengan kata lain, desain database sebenarnya merupakan penghalang untuk desain program yang menggunakannya, itulah sebabnya kita membutuhkan perpustakaan ORM seperti Hibernate. Meski bersih dan konsisten, selalu ada keraguan di benak saya bahwa ada sesuatu yang tidak beres di sana.
Ini memunculkan dua jenis database, database objek dan NoSQL .
Keduanya berusaha untuk memecahkan masalah yang diperkenalkan oleh database relasional sambil tidak memaparkan kita pada kengerian yang mengejutkan dari database hirarkis. Data masih ditata dalam repositori yang secara samar-samar menyerupai tabel, tetapi pada kenyataannya lebih seperti pemrograman struktur data daripada tabel relasional. Sementara database objek mengikuti sebagian besar aturan yang didefinisikan dengan baik, pemahaman saya adalah bahwa NoSQL agak arbitrer. Sebagai contoh, sebuah tabel dapat divisualisasikan sebagai tabel hash atau array. Tidak ada cara yang mudah dan jelas untuk meminta mereka menggunakan alat arbitrer yang analog dengan Oracle SQL Developer atau SQL Server Management Studio .
Idenya adalah bahwa seseorang dapat mendefinisikan struktur data yang mudah dicari dalam kode, daripada menyatukan pertanyaan SQL yang lebih cocok untuk mesin database SQL daripada mengekspresikan permintaan yang diinginkan. Misalnya, pencocokan fuzzy atau parsial lebih sulit dan berkinerja lebih buruk dalam basis data relasional, sementara basis data NoSQL mungkin memiliki struktur yang dioptimalkan untuk pencarian tersebut dan selesai dalam waktu singkat.
Ada bahasa untuk menanyakan NoSQL. Namun, tidak ada bahasa universal seperti apa SQL untuk database relasional.
Edit Terlambat:
Sementara saya cukup akrab dengan database NoSQL, pertanyaan ini adalah dorongan bagi saya untuk membeli buku berkualitas tentang topik tersebut dan untuk mulai membacanya dengan tujuan akhirnya menjadi seorang ahli nyata pada topik tersebut. Komentar yang tersisa didasarkan pada NoSQL Distilled: Panduan Singkat untuk Dunia yang Muncul dari Kegigihan Polyglot oleh Pramod Sadalage dan Martin Fowler .
Para penulis menyatakan bahwa basis data relasional tidak skala baik untuk cluster yang mampu melayani data yang diperlukan untuk situs-situs seperti Amazon dan Google: NoSQL dikembangkan agar sesuai dengan ceruk ini, mengendurkan konkurensi dan daya tahan dalam ACID untuk server sejumlah besar permintaan yang sebagian besar menggunakan data statis (karenanya, transaksi ACID tidak sepenting).
Lebih lanjut, mereka berpendapat bahwa basis data NoSQL beroperasi tanpa skema (halaman 10) yang memungkinkan basis data NoSQL untuk memodifikasi struktur data dengan lebih mudah. Saya tidak yakin bahwa ada atau tidak adanya skema formal penting dalam hal ini, karena database SQL memungkinkan memodifikasi skema juga. Terlepas dari itu, dua penulis terkenal membuat klaim sehingga layak untuk diteliti.
Saya percaya bahwa kedua poin utama ini hanya berfungsi untuk menegakkan poin utama saya bahwa NoSQL adalah evolusioner, bukan revolusioner. Mereka masih menyimpan data, dan melakukan peningkatan bertahap pada skala dan kemampuan modifikasi. Mereka juga membuat poin bahwa NoSQL tidak berusaha untuk merebut basis data relasional sebagai raja penyimpanan data, hanya untuk menyediakan cara alternatif penyimpanan data untuk jenis data yang perlu untuk skala dan berubah dengan cara yang (mereka percaya) relasional database tidak mendukung dengan cukup baik.