मैं अभी कुछ समय से NoSQL DB का उपयोग कर रहा हूं, और इस विषय में मेरा योगदान है:
NoSQL डेटाबेस के लिए एक महान उपयोग का मामला सांख्यिकी और / या रिपोर्ट जनरेशन के लिए एक एप्लिकेशन है , स्पष्ट रूप से जब डेटा किसी तीसरे पक्ष के स्रोत से प्रदान किया जाता है।
इस तरह की स्थिति में एक NoSQL डेटाबेस एक बढ़िया विकल्प हो सकता है
आइए विचार करें, उदाहरण के लिए, MongoDB :
एक बार जब आप JSON में अपना डेटा रखते हैं, (यह एक तीसरी पार्टी एपीआई से आ सकता है, या MongoDB में एक sql-application से निर्यात किया जा सकता है) डेटाबेस में JSON डेटा को आयात करने और अपडेट करने के लिए बहुत सख्त है ; उदाहरण के लिए कमांड-लाइन उपयोगिता का उपयोग करनाmongoimport
इस बिंदु पर फ़िल्टरिंग और समूहीकरण के साथ गतिशील प्रश्नों का निर्माण करना बहुत सरल है , जो इस तरह के अनुप्रयोग के साथ अच्छी तरह से फिट है।
उदाहरण के लिए, एकत्रीकरण फ्रेमवर्क का उपयोग करना :
$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 );
मैं उस सहजता को इंगित करना चाहता हूं जिसके साथ हम php डेटा संरचनाओं का उपयोग करके फ़िल्टर जोड़ सकते हैं / हटा सकते हैं और हमारे प्रश्नों का निर्माण करने के लिए थकाऊ स्ट्रिंग संघनन से बच सकते हैं। इस दृष्टिकोण के साथ फिल्टर जोड़ना / हटाना डाइनैमिक रूप से एक सरणी से तत्वों को जोड़ना / निकालना उतना ही आसान है
एक और महान लाभ इस तथ्य से आता है कि इस तरह का समाधान एक संबंधपरक डेटाबेस का उपयोग करने की तुलना में तेजी से होने की संभावना है , जहां हमें सभी डेटा प्राप्त करने के लिए विभिन्न तालिकाओं के साथ जुड़ना पड़ता है।
इसके अलावा, यह उपयोग मामला इष्टतम है क्योंकि NoSQL डेटाबेस की सभी प्रमुख सीमाओं से बचा जाता है:
लेन-देन में कमी: आवेदन लिखना नहीं करता है, लेकिन केवल पढ़ता है, इसलिए हमें लेनदेन की आवश्यकता नहीं है
तालिकाओं के बीच जुड़ने की कमी: हमें जुड़ने की जरूरत नहीं है, क्योंकि हम संग्रह में अपने असामान्य डेटा को संग्रहीत करने के लिए अतिरेक का उपयोग कर सकते हैं । जैसा कि हम केवल डेटा पढ़ते हैं, हमें अपडेट के बीच डिनरलाइज्ड डेटा को सिंक्रनाइज़ करने के बारे में चिंतित होने की आवश्यकता नहीं है।
इस तरह हम अतिरेक के साथ डेटा को स्टोर करने पर ध्यान केंद्रित कर सकते हैं जो हमारे प्रश्नों पर अच्छी तरह से फिट बैठता है , जो कि एकल संग्रह पर केंद्रित होगा।
मैं यह सिर्फ इसलिए लिख रहा हूं क्योंकि मैंने कुछ समय पहले ऐसा कुछ पढ़ा था, इसने मुझे शोध करने के लिए कुछ समय बचाया होगा
आशा है कि यह किसी के लिए उपयोगी होगा