Tidak ada yang namanya NoSQL!
NoSQL adalah kata kunci.
Selama beberapa dekade, ketika orang berbicara tentang database, itu berarti database relasional. Dan ketika orang-orang berbicara tentang basis data relasional, itu berarti mereka yang Anda kendalikan dengan Structured Query Language dari Edgar F. Codd. Menyimpan data dengan cara lain? Kegilaan! Yang lainnya hanyalah flatfiles.
Tetapi dalam beberapa tahun terakhir, orang mulai mempertanyakan dogma ini. Orang-orang bertanya-tanya apakah tabel dengan baris dan kolom benar-benar satu-satunya cara untuk merepresentasikan data. Orang-orang mulai berpikir dan mengkode, dan muncul dengan banyak konsep baru bagaimana data dapat diorganisir. Dan mereka mulai membuat sistem basis data baru yang dirancang untuk cara-cara baru bekerja dengan data ini.
Filosofi dari semua database ini berbeda. Tapi satu hal yang dimiliki semua database ini, adalah bahwa Structured Query Language tidak lagi cocok untuk menggunakannya. Jadi setiap database menggantikan SQL dengan bahasa query mereka sendiri. Maka lahirlah istilah NoSQL, sebagai label untuk semua teknologi basis data yang menentang model basis data relasional klasik.
Jadi apa kesamaan yang dimiliki database NoSQL?
Sebenarnya tidak banyak.
Anda sering mendengar frasa seperti:
- NoSQL dapat diskalakan!
- NoSQL untuk BigData!
- NoSQL melanggar ASAM!
- NoSQL adalah toko kunci / nilai yang dimuliakan!
Benarkah itu? Nah, beberapa pernyataan ini mungkin benar untuk beberapa database yang biasa disebut NoSQL, tetapi setiap satu juga salah untuk setidaknya satu lainnya. Sebenarnya, satu-satunya kesamaan yang dimiliki oleh database NoSQL adalah bahwa mereka adalah database yang tidak menggunakan SQL. Itu dia. Satu-satunya hal yang mendefinisikan mereka adalah apa yang membuat mereka berbeda satu sama lain.
Jadi apa yang membedakan database NoSQL?
Jadi kami membuat jelas bahwa semua database yang biasa disebut sebagai NoSQL terlalu berbeda untuk mengevaluasi mereka bersama-sama. Masing-masing dari mereka perlu dievaluasi secara terpisah untuk memutuskan apakah mereka cocok untuk menyelesaikan masalah tertentu. Tapi dari mana kita mulai? Untungnya, database NoSQL dapat dikelompokkan ke dalam kategori tertentu, yang cocok untuk berbagai kasus penggunaan:
Berorientasi pada dokumen
Contoh: MongoDB, CouchDB
Kekuatan: Data heterogen, berorientasi objek kerja, pengembangan gesit
Keuntungan mereka adalah bahwa mereka tidak memerlukan struktur data yang konsisten. Mereka berguna ketika kebutuhan Anda dan dengan demikian tata letak basis data Anda berubah terus-menerus, atau ketika Anda berurusan dengan kumpulan data yang menjadi satu tetapi masih terlihat sangat berbeda. Ketika Anda memiliki banyak tabel dengan dua kolom yang disebut "kunci" dan "nilai", maka ini mungkin layak untuk dilihat.
Database grafik
Contoh: Neo4j, GiraffeDB.
Kekuatan: Penambangan Data
Sementara sebagian besar basis data NoSQL meninggalkan konsep mengelola hubungan data, basis data ini menerimanya bahkan lebih dari yang disebut basis data relasional.
Fokus mereka adalah mendefinisikan data berdasarkan hubungannya dengan data lain. Ketika Anda memiliki banyak tabel dengan kunci utama yang merupakan kunci utama dari dua tabel lainnya (dan mungkin beberapa data yang menggambarkan hubungan di antara mereka), maka ini mungkin sesuatu untuk Anda.
Toko Nilai Kunci
Contoh: Redis, Cassandra, MemcacheDB
Kekuatan: Pencarian cepat nilai dengan kunci yang dikenal
Mereka sangat sederhana, tetapi itu membuatnya cepat dan mudah digunakan. Ketika Anda tidak memerlukan prosedur tersimpan, kendala, pemicu, dan semua fitur basis data canggih itu dan Anda hanya ingin penyimpanan dan pengambilan data yang cepat, maka itu untuk Anda.
Sayangnya mereka menganggap bahwa Anda tahu persis apa yang Anda cari. Anda membutuhkan profil User157641? Tidak masalah, hanya akan mengambil mikrodetik. Tapi bagaimana bila Anda ingin nama semua pengguna yang berusia antara 16 dan 24, memiliki "wafel" sebagai makanan favorit mereka dan login dalam 24 jam terakhir? Keberuntungan yang cukup. Ketika Anda tidak memiliki kunci yang pasti dan unik untuk hasil tertentu, Anda tidak bisa mengeluarkannya dari toko KV Anda dengan mudah.
Apakah SQL sudah usang?
Beberapa pendukung NoSQL mengklaim bahwa basis data NoSQL favorit mereka adalah cara baru dalam melakukan sesuatu, dan SQL adalah sesuatu dari masa lalu.
Apakah mereka benar
Tidak, tentu saja tidak. Meskipun ada masalah yang tidak cocok untuk SQL, tetap saja ada kelebihannya. Banyak model data yang hanya direpresentasikan sebagai kumpulan tabel yang merujuk satu sama lain. Terutama karena kebanyakan programmer basis data dilatih selama beberapa dekade untuk memikirkan data dengan cara yang berhubungan, dan mencoba untuk menekan pola pikir ini ke teknologi baru yang tidak dibuat untuk itu jarang berakhir dengan baik.
Database NoSQL bukan pengganti untuk SQL - mereka adalah alternatif.
Sebagian besar ekosistem perangkat lunak di sekitar basis data NoSQL yang berbeda belum matang. Meskipun ada kemajuan, Anda masih belum memiliki alat tambahan yang setua dan sekuat yang tersedia untuk database SQL populer.
Juga, ada lebih banyak pengetahuan untuk SQL di sekitar. Generasi ilmuwan komputer telah menghabiskan beberapa dekade karir mereka dalam penelitian yang berfokus pada database relasional, dan itu menunjukkan: Literatur yang ditulis tentang database SQL dan pemodelan data relasional, baik yang praktis maupun teoretis, dapat mengisi beberapa perpustakaan yang penuh dengan buku. Bagaimana membangun basis data relasional untuk data Anda adalah topik yang diteliti dengan baik, sehingga sulit untuk menemukan kasus sudut di mana tidak ada praktik terbaik dari buku yang diterima secara umum.
Sebagian besar database NoSQL, di sisi lain, masih dalam masa pertumbuhan. Kami masih mencari cara terbaik untuk menggunakannya.