मैं अब एक सप्ताह के लिए NoSQL डेटाबेस के बारे में सीख रहा हूं।
मैं वास्तव में NoSQL डेटाबेस के फायदे और कई उपयोग के मामलों को समझता हूं जिनके लिए वे महान हैं।
लेकिन अक्सर लोग अपने लेख लिखते हैं जैसे कि NoSQL रिलेशनल डेटाबेस को प्रतिस्थापित कर सकता है । और वह बिंदु है जो मुझे अपना सिर नहीं मिल सकता है:
NoSQL डेटाबेस (अक्सर) कुंजी-मूल्य स्टोर हैं।
बेशक यह सब कुछ एक कुंजी-मूल्य की दुकान में स्टोर करना संभव है (JSON, XML, जो भी हो) में डेटा एन्कोडिंग करके, लेकिन मुझे जो समस्या दिखाई देती है वह यह है कि आपको कुछ मात्रा में डेटा प्राप्त करने की आवश्यकता है जो एक विशिष्ट मानदंड से मेल खाती है, कई में बक्सों का इस्तेमाल करें। NoSQL डेटाबेस में आपके पास केवल एक मानदंड है जिसे आप प्रभावी रूप से खोज सकते हैं - कुंजी। रिलेशनल डेटाबेस को प्रभावी रूप से डेटा पंक्ति में किसी भी मूल्य की खोज करने के लिए अनुकूलित किया जाता है।
इसलिए NoSQL डेटाबेस वास्तव में डेटा को बनाए रखने के लिए एक विकल्प नहीं है जिसे उनकी सामग्री द्वारा खोजे जाने की आवश्यकता है। या मैंने कुछ गलत समझा है?
एक उदाहरण:
आपको एक webshop के लिए उपयोगकर्ता डेटा संग्रहीत करने की आवश्यकता है।
एक संबंधपरक डेटाबेस में आप प्रत्येक उपयोगकर्ता को users
एक आईडी, नाम, उसका देश, आदि के साथ तालिका में एक पंक्ति के रूप में संग्रहीत करते हैं ।
NoSQL डेटाबेस में आप प्रत्येक उपयोगकर्ता को कुंजी के रूप में उसकी आईडी और उसके सभी डेटा (JSON, इत्यादि में एन्कोडेड) के रूप में संग्रहीत करेंगे।
इसलिए यदि आपको किसी विशिष्ट देश से सभी उपयोगकर्ताओं को प्राप्त करने की आवश्यकता है (किसी कारण से विपणन लोगों को उनके बारे में कुछ जानना आवश्यक है), तो रिलेशनल डेटाबेस में ऐसा करना आसान है, लेकिन NoSQL डेटाबेस में बहुत प्रभावी नहीं है, क्योंकि आपको करना है हर उपयोगकर्ता प्राप्त करें, सभी डेटा को पार्स करें और फ़िल्टर करें।
मैं नहीं कहता कि यह असंभव है , लेकिन यह बहुत अधिक मुश्किल हो जाता है और मुझे लगता है कि यदि आप NoSQL प्रविष्टियों के डेटा में खोज करना चाहते हैं तो यह उतना प्रभावी नहीं है।
आप प्रत्येक देश के लिए एक कुंजी बना सकते हैं जो इस देश में रहने वाले प्रत्येक उपयोगकर्ता की कुंजी संग्रहीत करता है, और इस देश के लिए कुंजी में जमा की गई सभी कुंजी प्राप्त करके एक विशिष्ट देश के उपयोगकर्ता प्राप्त करता है। लेकिन मुझे लगता है कि यह तकनीक जटिल डेटासेट को और भी जटिल बना देती है - इसे लागू करना कठिन है और SQL डेटाबेस को क्वेरी करने जितना प्रभावी नहीं है। इसलिए मुझे लगता है कि यह ऐसा तरीका नहीं है जिसका आप उत्पादन में उपयोग करेंगे। या यह है?
मुझे यकीन नहीं है कि अगर मैंने कुछ गलत समझा या इस तरह के उपयोग के मामलों को संभालने के लिए कुछ अवधारणाओं या सर्वोत्तम प्रथाओं की अनदेखी की। हो सकता है कि आप मेरे बयानों को सही कर सकें और मेरे सवालों का जवाब दे सकें।