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 mongoimport
utilitas 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