Apa yang dimaksud dengan "Berorientasi dokumen" vs. Nilai-Kunci ketika berbicara tentang MongoDB vs Cassandra?

Jawaban:

153

Sebuah penyimpanan kunci-nilai menyediakan model data yang paling sederhana mungkin dan apa namanya: itu adalah sistem penyimpanan bahwa nilai-nilai toko diindeks oleh kunci. Anda dibatasi untuk membuat kueri berdasarkan kunci dan nilainya buram , toko tidak tahu apa - apa tentang mereka. Hal ini memungkinkan operasi baca dan tulis yang sangat cepat (akses disk sederhana) dan saya melihat model ini sebagai jenis cache yang tidak mudah menguap (yaitu cocok jika Anda memerlukan akses cepat dengan kunci ke data berumur panjang).

Sebuah database dokumen-berorientasi memperluas model sebelumnya dan nilai-nilai yang disimpan dalam terstruktur format yang (dokumen, maka nama) bahwa database dapat mengerti. Misalnya, dokumen dapat berupa postingan blog dan komentar serta tag disimpan dengan cara yang diubah keadaannya. Karena datanya transparan , penyimpanan dapat melakukan lebih banyak pekerjaan (seperti bidang pengindeksan dokumen) dan Anda tidak terbatas pada kueri berdasarkan kunci. Seperti yang saya nyatakan, database semacam itu memungkinkan untuk mengambil seluruh data halaman dengan satu kueri dan sangat cocok untuk aplikasi berorientasi konten (itulah sebabnya situs besar seperti Facebook atau Amazon menyukainya).

Jenis database NoSQL lainnya termasuk penyimpanan berorientasi kolom , database grafik , dan bahkan database objek . Tapi ini melampaui pertanyaannya.

Lihat juga

Pascal Thivent
sumber
2
Penyimpanan nilai kunci tidak harus dilakukan dengan akses disk dan menyebutnya non-volatile salah dalam beberapa implementasi. Anda dapat membuat penyimpanan nilai kunci dalam memori tanpa tulis-tayang atau tulis-balik ke media penyimpanan non-volatil. Memanggil data berumur panjang juga menyesatkan karena masa pakai data tidak ada hubungannya dengan cara Anda mengambilnya.
Anthony
17

Yah, saya sendiri sudah menyelidiki NoSQL sekitar sebulan terakhir ini. Saya pikir secara umum bisa dikatakan sesuatu seperti

  • Toko KV tidak mengetahui konten nilai yang sebenarnya disimpan untuk sebuah kunci
  • Berbasis dokumen memungkinkan Anda menentukan indeks sekunder dalam konten nilai, karena db mengetahui struktur dokumen (mis. Tag posting blog).
  • Solusi NoSQL masing-masing memiliki fitur khusus yang harus dipertimbangkan, seperti
    • Jenis data khusus di penyimpanan KV (misalnya, set dengan pop / push kiri / kanan seperti di redis)
    • skala naik / turun mudah seperti yang dikatakan riak (saya belum mencobanya ... belum)
    • penyimpanan data yang dapat dicolokkan seperti di Voldemort
    • konfigurasi web bawaan dan dukungan aplikasi web seperti di CouchDB / couchapp
Niels Wind
sumber
2

Database berorientasi dokumen, atau penyimpanan dokumen, adalah untuk menyimpan, mengambil, dan mengelola informasi berorientasi dokumen, yang merupakan data semi-terstruktur. Penyimpanan nilai-kunci merupakan warisan dari database Berorientasi Dokumen. Perbedaannya terletak pada cara pemrosesan data; dalam penyimpanan nilai kunci, data dianggap tidak tembus pandang secara inheren ke database, sedangkan sistem berorientasi dokumen mengandalkan struktur internal dalam dokumen untuk mengekstrak metadata yang digunakan mesin database untuk pengoptimalan lebih lanjut.

Jika kita membahas tentang perbedaan antara MOngoDb dan Cassandra. MongoDB bertindak seperti database relasional. Model datanya terdiri dari database di tingkat atas, kemudian koleksi seperti tabel di MySQL (misalnya) dan kemudian dokumen yang ada di dalam koleksi, seperti baris di MySQL. Setiap dokumen memiliki kolom dan nilai yang mirip dengan kolom dan nilai di MySQL. Field dapat berupa kunci / nilai sederhana misalnya {'name': 'David Mytton'} tetapi dapat juga berisi dokumen lain misalnya {'name': {'first': David, 'last': 'Mytton'}}. Dalam dokumen Cassandra dikenal sebagai “kolom” yang sebenarnya hanyalah sebuah kunci dan nilai. mis. {'key': 'name', 'value': 'David Mytton'}. Ada juga bidang cap waktu yang untuk replikasi dan konsistensi internal. Nilainya dapat berupa nilai tunggal tetapi juga dapat berisi "kolom" lain. Kolom ini kemudian ada dalam kelompok kolom yang mengurutkan data berdasarkan nilai tertentu di kolom, direferensikan oleh sebuah kunci.

Tapi, Di tingkat atas ada ruang kunci, yang mirip dengan database MongoDB.

Big Data Guy
sumber