Saya tahu ada tiga jenis database non-sql yang berbeda dan populer.
- Kunci / Nilai: Redis, Kabinet Tokyo, Memcached
- KolomKeluarga: Cassandra, HBase
- Dokumen: MongoDB, CouchDB
Saya telah membaca blog panjang tentang itu tanpa memahami begitu banyak.
Saya tahu database relasional dan terbiasa dengan database berbasis dokumen seperti MongoDB / CouchDB.
Bisakah seseorang memberi tahu saya apa perbedaan utama antara ini dan 2 yang pertama dalam daftar?
Jawaban:
Perbedaan utama adalah model data dan kemampuan kueri.
Penyimpanan nilai kunci
Jenis pertama sangat sederhana dan mungkin tidak membutuhkan penjelasan lebih lanjut.
Model data: lebih dari penyimpanan nilai kunci
Meskipun ada beberapa perdebatan tentang nama yang benar untuk database seperti Cassandra, saya ingin menyebutnya penyimpanan kolom-keluarga . Meskipun pasangan nilai-kunci adalah bagian penting dari Cassandra, tidak hanya itu saja. Ini memungkinkan Anda untuk menyarangkan pasangan nilai kunci, sehingga sebuah kunci dapat merujuk ke beberapa pasangan sub-nilai kunci.
Namun, Anda tidak dapat menumpuk pasangan nilai kunci tanpa batas. Anda dibatasi pada tiga tingkat (kelompok kolom) atau empat tingkat bersarang (kelompok super-kolom). Dalam hal keluarga kolom istilah tidak membunyikan bel, lihat WTF adalah artikel SuperColumn , itu penjelasan yang baik tentang model data Cassandra.
Database dokumen , seperti CouchDB dan MongoDB menyimpan seluruh dokumen dalam bentuk objek JSON . Anda dapat menganggap objek ini sebagai pasangan nilai kunci bertingkat. Tidak seperti Cassandra, Anda dapat menumpuk pasangan nilai kunci sebanyak yang Anda inginkan. JSON juga mendukung array dan memahami tipe data yang berbeda, seperti string, angka, dan nilai boolean.
Menanyakan
Saya percaya penyimpanan kolom-keluarga hanya dapat ditanyai dengan kunci, atau dengan menulis fungsi pengurangan peta. Anda tidak dapat meminta nilai seperti yang Anda lakukan dalam database SQL. Jika aplikasi Anda membutuhkan kueri yang lebih kompleks, aplikasi Anda harus membuat dan memelihara indeks untuk mengakses data yang diinginkan.
Database dokumen mendukung kueri dengan kunci dan fungsi pengurangan peta juga, tetapi juga memungkinkan Anda untuk melakukan kueri dasar berdasarkan nilai, seperti "Beri saya semua pengguna dengan lebih dari 10 kiriman". Database dokumen lebih fleksibel dengan cara ini.
sumber
Ayende telah memberikan penjelasan yang bagus tentang perbedaan antara Key-Value dan Document database:
sumber