Gunakan kasing untuk NoSQL [ditutup]


144

NoSQL telah mendapatkan banyak perhatian di industri kami baru-baru ini. Saya benar-benar tertarik pada apa yang dipikirkan orang tentang kasus penggunaan terbaik untuk penggunaannya dibandingkan penyimpanan basis data relasional. Apa yang seharusnya memicu pengembang untuk berpikir bahwa kumpulan data tertentu lebih cocok untuk solusi NoSQL. Saya sangat tertarik dengan MongoDB dan CouchDB karena mereka tampaknya mendapatkan cakupan terbanyak sehubungan dengan pengembangan PHP dan itulah fokus saya.


6
Cassandra dan MongoDB adalah produk yang sama sekali berbeda - kategori yang sama sekali berbeda . Pertanyaan ini akan lebih mudah untuk jawaban jika itu bertanya tentang kasus penggunaan untuk spesifik jenis database (OODB, DODB, DKVS, dll) "NoSQL" hanya sebuah istilah umum untuk "sesuatu yang tidak SQL" - itu bisa sama seperti menjadi sesuatu seperti BerkleyDB atau sekelompok file datar yang duduk di jaringan berbagi.
Aaronaught

@Aaronaught saya menghargai perbedaan, saya kira saya mungkin bersalah menggunakan istilah payung dengan nosql
robjmills

Jawaban:


86

Berjanjilah pada diri sendiri bahwa Anda tidak akan pernah mencoba memetakan model data relasional ke database NoSQL seperti MongoDB atau CouchDB ... Ini adalah kesalahan paling umum yang dilakukan pengembang ketika mengevaluasi teknologi yang sedang berkembang.

Pendekatan itu analog dengan mengambil mobil dan mencoba menggunakannya untuk menarik kereta Anda ke jalan seperti kuda.

Ini adalah reaksi alami karena pengalaman semua orang tentu saja, tetapi nilai sebenarnya dalam menggunakan database dokumen adalah dapat menyederhanakan model data Anda dan meminimalkan penderitaan Anda sebagai pengembang. Basis kode Anda akan menyusut, bug Anda akan lebih sedikit dan lebih mudah ditemukan, kinerjanya akan luar biasa, dan skala akan jauh lebih sederhana.

Sebagai pendiri Joomla saya bias :-) tetapi berasal dari ruang CMS, sesuatu seperti MongoDB adalah peluru perak karena peta konten sangat alami untuk sistem dokumen.

Kasus hebat lainnya untuk MongoDB adalah analitik waktu-nyata, karena MongoDB memiliki kinerja dan skala yang sangat kuat terutama mengenai konkurensi. Ada studi kasus di situs web MongoDB.org yang menunjukkan atribut-atribut itu.

Saya setuju dengan gagasan bahwa setiap basis data memiliki tujuan dan penggunaan kasus sendiri; mengambil tujuan masing-masing database untuk evaluasi yang sesuai.


1
benar-benar kata spacemonkey, saya berada di posisi yang sama dengan seengee, jelas kita harus berpikir dengan cara baru dan harus bertanya pada diri sendiri bagaimana saya menyusun data aplikasi saya ke dalam struktur dokumen, menghapus diri kita dari cara berpikir RDBMS ketika kita melakukan analisis ini
on_



8

Apa yang saya sukai tentang NoSQL tidak ada hubungannya dengan kinerja dan semuanya terkait dengan kegunaan. Penyimpanan dokumen hanya lebih mudah untuk bekerja dengan ketika unit data atom Anda seperti dokumen, karena itu sepele untuk diserialisasi ke dan dari objek. Itu hanya lebih menyenangkan, dan itu merupakan faktor penting untuk proyek pribadi atau samping.


1
Saya tidak akan mengatakan itu sepele , tetapi ini adalah poin yang baik tentang Dokumen-Berorientasi Database. Kebalikannya sebenarnya berlaku untuk beberapa produk NoSQL lainnya - DKVSes cenderung lebih sulit untuk dipetakan daripada SQL / DB relasional.
Aaronaught

8

Saya telah menggunakan DB NoSQL untuk sementara waktu sekarang, dan ini adalah kontribusi saya untuk topik ini:

Sebuah kasus penggunaan yang besar untuk database NoSQL adalah aplikasi untuk statistik dan / atau laporan generasi , expecially ketika data disediakan dari sumber pihak ketiga.

Dalam situasi seperti itu, basis data NoSQL bisa menjadi pilihan bagus

Mari kita pertimbangkan, misalnya, MongoDB :

Setelah Anda memiliki data di JSON, (itu bisa berasal dari API pihak ketiga, atau diekspor dari aplikasi sql) di MongoDB cukup mudah untuk mengimpor dan memperbarui data JSON dalam database; misalnya menggunakan mongoimportutilitas baris perintah

Pada titik ini sangat sederhana untuk membangun kueri dinamis dengan penyaringan dan pengelompokan, yang sangat cocok dengan aplikasi semacam ini.

Misalnya, menggunakan Kerangka Kerja Agregasi :

$pipeline = [];

//filter by date
$pipeline[] = [ '$match' => [ 'created_at' => [ '$gte' => $starDate, '$lte' => $endDate ]  ]  ];

//if we want to filter by a specific field, we add the filter to the pipeline array
if( $filters->isFilterByField() )
    $pipeline[] = [ '$match' => [ 'field' => $fieldValue ] ];    

//group the results by date and get the count
$pipeline[] = [ '$group' => [ '_id' => '$created_at', 'num_elements' => [ '$sum' => 1 ] ] ];

return $collection->aggretate( $pipeline );

Saya ingin menunjukkan kemudahan yang kita dapat secara dinamis menambahkan / menghapus filter menggunakan struktur data php dan menghindari penggabungan string yang membosankan untuk membangun kueri kami. Dengan pendekatan ini menambahkan / menghapus filter secara dinamis semudah menambahkan / menghapus elemen dari array

Manfaat besar lainnya datang dari kenyataan bahwa solusi seperti ini kemungkinan akan lebih cepat daripada menggunakan database relasional , di mana kita harus bergabung dengan tabel yang berbeda untuk mendapatkan semua data yang kita butuhkan

Selain itu, use case ini optimal karena menghindari semua batas utama dari database NoSQL:

  • Kurangnya transaksi: Aplikasi tidak melakukan penulisan tetapi hanya membaca, jadi kita tidak perlu transaksi sama sekali

  • Kurangnya gabungan di antara tabel: Kami tidak perlu bergabung, karena kami dapat menggunakan redundansi untuk menyimpan data yang didenormalkan dalam koleksi. Karena kita hanya membaca data, kita tidak perlu khawatir tentang sinkronisasi data yang didenormalkan di antara pembaruan.

Dengan cara ini kita bisa fokus pada penyimpanan data dengan redundansi dengan cara yang cocok dengan permintaan kita , yang akan fokus pada koleksi tunggal.

Saya hanya menulis ini karena seandainya saya membaca sesuatu seperti itu beberapa waktu lalu, akan menghemat waktu saya untuk melakukan penelitian

Semoga bermanfaat bagi seseorang


3

Saya sangat merekomendasikan ceramah ini oleh Martin Fowler:

https://www.youtube.com/watch?v=qI_g07C_Q5I

ABSTRAK: Martin memberikan pengantar yang cepat untuk database NoSQL: dari mana asalnya, sifat model data yang mereka gunakan, dan cara berbeda yang harus Anda pikirkan tentang konsistensi. Dari sini ia menguraikan jenis keadaan apa yang harus Anda pertimbangkan untuk menggunakannya, mengapa mereka tidak membuat database relasional menjadi usang, dan konsekuensi penting dari kegigihan polyglot.

Ini menarik gambar yang bagus tentang apa NoSQL, kategori yang berbeda dan hal-hal yang semua orang harus mengerti ketika datang dari dunia basis data relasional. Salam.


Dipahami, akan mengingatnya untuk masa depan.
user3631881

3

Pertama, Anda harus memahami teori CAP (Konsistensi, Ketersediaan, dan Pemisahan, di mana Anda harus mengambil dua dari tiga) dan kasus penggunaan Bisnis kami. MongoDB memenuhi Konsistensi dan Partisi & Sofa DB memuaskan Ketersediaan & Partisi.

Video Edureka di youtube tentang NoSQL adalah beberapa tutorial video terbaik.

https://www.youtube.com/watch?v=gJFG04Sy6NY

https://www.youtube.com/watch?v=KSq6tMMXZ8s

https://www.youtube.com/watch?v=3z1KFA2qcSo

Presentasi yang baik tersedia di slideshare.net

http://www.slideshare.net/quipo/nosql-databases-why-what-and-when?qid=3bb9f7f6-a53d-41b1-8403-cd6f181d0ca7&v=qf1&b=&from_search=1

http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3 (Presentasi ini mendukung tutorial video di youtube)


1

Untuk beberapa kasus penggunaan yang Anda butuhkan, terutama untuk kueri analitik, Anda dapat menjalankan kueri SQL pada MongoDB dengan pembungkus ini dari Postgres.


1

Karena sekarang ada lebih banyak basis data NoSQL di pasar daripada sebelumnya, saya sarankan untuk melihat Gartner Magic Quadrant jika Anda mencari basis data yang juga bagus untuk aplikasi perusahaan berdasarkan dukungan, perluasan, manajemen, dan biaya.

http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb

Saya ingin menyarankan Couchbase kepada siapa saja yang belum mencobanya, tetapi tidak didasarkan pada versi yang ditunjukkan dalam laporan (2.5.1) karena hampir 2 revisi di belakang di mana CB Server hari ini, mendekati rilis 4.0 di 2H15 .

http://www.couchbase.com/coming-in-couchbase-server-4-0

Bagian lain tentang Couchbase sebagai vendor / produk adalah bahwa itu adalah tipe DB multi guna. Ini dapat bertindak sebagai toko K / V murni, Document Oriented Database dengan penskalaan multi-dimensi, Memcached, cache-samping dengan kegigihan, dan mendukung SQL ANSI 92 yang sesuai dengan sambungan otomatis, replikasi ke cluster DR dengan menekan tombol, dan bahkan memiliki komponen seluler bawaan untuk ekosistem.

Jika tidak ada yang lain, ada baiknya memeriksa tolok ukur terbaru:

http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.