Saya sudah belajar tentang Database NoSQL selama seminggu sekarang.
Saya benar-benar memahami kelebihan dari Database NoSQL dan banyaknya kasus penggunaan yang bagus untuknya.
Tetapi sering orang menulis artikel mereka seolah-olah NoSQL dapat menggantikan Database Relasional. Dan ada satu hal yang tidak bisa saya pahami:
Database NoSQL adalah (sering) toko nilai kunci.
Tentu saja mungkin untuk menyimpan semuanya menjadi penyimpanan nilai kunci (dengan menyandikan data dalam JSON, XML, apa pun), tetapi masalah yang saya lihat adalah Anda perlu mendapatkan sejumlah data yang cocok dengan kriteria tertentu, dalam banyak gunakan kasing. Dalam database NoSQL Anda hanya memiliki satu kriteria yang dapat Anda cari secara efektif - kuncinya. Database Relasional dioptimalkan untuk mencari nilai apa pun di baris data secara efektif.
Jadi Basis Data NoSQL sebenarnya bukan pilihan untuk menyimpan data yang perlu dicari oleh konten mereka. Atau apakah saya salah mengerti sesuatu?
Sebuah contoh:
Anda perlu menyimpan data pengguna untuk toko web.
Dalam basis data relasional, Anda menyimpan setiap pengguna sebagai baris dalam users
tabel, dengan ID, nama, negaranya, dll.
Dalam Database NoSQL Anda akan menyimpan setiap pengguna dengan ID-nya sebagai kunci dan semua datanya (dikodekan dalam JSON, dll.) Sebagai nilai.
Jadi, jika Anda perlu mendapatkan semua pengguna dari negara tertentu (untuk beberapa alasan orang pemasaran perlu tahu sesuatu tentang mereka), mudah untuk melakukannya di Database Relasional, tetapi tidak terlalu efektif dalam Database NoSQL, karena Anda harus dapatkan setiap pengguna, uraikan semua data dan filter.
Saya tidak mengatakan itu tidak mungkin , tetapi itu menjadi jauh lebih rumit dan saya kira tidak efektif jika Anda ingin mencari dalam data entri NoSQL.
Anda bisa membuat kunci untuk setiap negara yang menyimpan kunci dari setiap pengguna yang tinggal di negara ini, dan mendapatkan pengguna dari negara tertentu dengan mendapatkan semua kunci yang disimpan di kunci untuk negara ini. Tapi saya pikir teknik ini membuat dataset yang kompleks bahkan lebih kompleks - lebih sulit untuk diterapkan dan tidak seefektif kueri Database SQL. Jadi saya pikir itu bukan cara yang akan Anda gunakan dalam produksi. Atau itu?
Saya tidak begitu yakin apakah saya salah memahami sesuatu atau mengabaikan beberapa konsep atau praktik terbaik untuk menangani kasus penggunaan semacam itu. Mungkin Anda bisa memperbaiki pernyataan saya dan menjawab pertanyaan saya.