मोंगोडीबी में दस्तावेजों की क्षमता है जिसमें अन्य दस्तावेजों के सरणी शामिल हैं। यह कई मामलों को हल करता है जहां आप तर्कसंगत डेटाबेस में संबंध रखेंगे।
जब किसी चालान में एकाधिक पद होते हैं, तो आप इन पदों को एक अलग संग्रह में नहीं डाल पाएंगे। आप उन्हें एक सरणी के रूप में एम्बेड करेंगे।
यह मुझे वास्तविक जीवन उदाहरणों के बारे में आश्चर्यचकित करता है जब नोएसक्यूएल बनाम उपयोग नहीं किया जाता है?
कई अलग-अलग नोएसक्यूएल डेटाबेस हैं, प्रत्येक को अलग-अलग उपयोग-मामलों के साथ डिजाइन किया गया है। लेकिन आपने इस सवाल को मोंगोडीबी के रूप में टैग किया है, इसलिए मुझे लगता है कि आप विशेष रूप से मोंगो डीबी का मतलब है।
मोंगोडीबी के संबंधपरक डेटाबेस पर दो मुख्य लाभ हैं।
सबसे पहले, यह अच्छी तरह से स्केल करता है।
जब डेटाबेस बहुत धीमा या बहुत बड़ा होता है, तो आप क्लस्टर या प्रतिकृति-सेट को कई शर्ड्स बनाकर आसानी से अधिक सर्वर जोड़ सकते हैं। यह लगभग रिलेशनल डेटाबेस के साथ लगभग काम नहीं करता है।
दूसरा, यह विषम डेटा की अनुमति देता है।
उदाहरण के लिए, कंप्यूटर हार्डवेयर स्टोर का उत्पाद डेटाबेस कल्पना करें। उत्पादों के पास क्या गुण हैं? सभी उत्पादों में एक मूल्य और एक विक्रेता है। लेकिन सीपीयू के पास घड़ी की दर है, हार्ड ड्राइव और रैम चिप्स की क्षमता है (और ये क्षमता तुलनीय नहीं हैं), मॉनिटर के पास एक रिज़ॉल्यूशन है और इसी तरह। आप इसे एक रिलेशनल डेटाबेस में कैसे डिजाइन करेंगे? आप या तो एक बहुत ही लंबी उत्पाद आईडी-प्रॉपर्टी-वैल्यू टेबल बनायेंगे या आप अपनी संपत्ति के साथ एक बहुत विस्तृत और स्पैस उत्पाद तालिका तैयार करेंगे, लेकिन उनमें से अधिकतर अधिकांश उत्पादों के लिए NULL
हैं। दोनों समाधान वास्तव में सुरुचिपूर्ण नहीं हैं। लेकिन मोंगोडीबी इसे बेहतर तरीके से हल कर सकता है क्योंकि यह संग्रह में प्रत्येक दस्तावेज़ को गुणों का एक अलग सेट रखने की अनुमति देता है।
यह क्या नहीं कर सकता है?
एक नई तकनीक के रूप में, इसके बारे में इतना साहित्य नहीं है। इसके चारों ओर सॉफ्टवेयर पारिस्थितिकी तंत्र अच्छी तरह से नहीं है। संबंधपरक डेटाबेस के लिए आप जो टूल प्राप्त कर सकते हैं वे अक्सर अधिक चमकदार होते हैं।
कुछ उपयोग-मामले भी हैं मोंगोडीबी के लिए उपयुक्त नहीं है।
- MongoDB जॉइन नहीं करता है। जब आपका डेटा बहुत संबंधपरक और denormalizing है यह काउंटर-उत्पादक होगा, यह आपके उत्पाद के लिए एक खराब विकल्प हो सकता है। लेकिन हो सकता है कि आप ग्राफ डेटाबेस जैसे Neo4j पर नज़र डालें, जो संबंधपरक डेटाबेस से संबंधों पर और भी अधिक ध्यान केंद्रित करे। अद्यतन 2016: मोंगोडीबी 3.2 में अब $lookup aggregation stage के साथ प्राथमिक जॉइन समर्थन है, लेकिन यह संबंधपरक और ग्राफ डेटाबेस की तुलना में कार्यक्षमता में अभी भी बहुत सीमित है।
- मोंगोडीबी लेनदेन नहीं करता है। कम से कम जटिल लेनदेन नहीं। कुछ क्रियाएं जो केवल एक दस्तावेज़ को प्रभावित करती हैं, परमाणु होने की गारंटी दी जाती है, लेकिन जैसे ही आप एक से अधिक दस्तावेज़ों को प्रभावित करते हैं, आप गारंटी नहीं दे सकते कि एक असंगत स्थिति के बीच में कोई और प्रश्न नहीं होगा।
- मोंगो डीबी विज्ञापन-प्रसार रिपोर्टिंग के लिए खराब है। डेटा खनन के लिए इसके विकल्प गंभीर रूप से सीमित हैं। बल्कि नए समेकन फ़ंक्शन सहायता और मैपराइडस कुछ आश्चर्यजनक जटिल समस्याओं को भी हल कर सकता है जब आप इसे स्मार्ट का उपयोग करना सीखते हैं, लेकिन एसक्यूएल आमतौर पर इस तरह की चीजों के लिए बेहतर टूल होता है।
डेटा denormalizing करके, आप एक ही समस्या है कि रिलेशनल डेटाबेस कर के सभी को हल करने में सक्षम होना चाहिए ... लेकिन वहाँ रिलेशनल डेटाबेस के साथ डेटा को सामान्य करने के लिए कैसे पर नियम हैं। क्या ऐसे नियम हैं जिनका उपयोग किसी भी एसएसएसक्यूएल समाधान का उपयोग करने के लिए डेटा को denormalize करने में मदद करने के लिए कर सकते हैं?
रिलेशनल डेटाबेस लगभग 40 वर्षों तक हैं। उनका सिद्धांत कंप्यूटर विज्ञान में एक अच्छी तरह से शोध विषय है। उनके पीछे सिद्धांत के बारे में लिखी पुस्तकों की पूरी पुस्तकालय हैं। अब तक हर कल्पनीय कोने-मामले के लिए एक बाय-द-बुक समाधान है।
लेकिन दूसरी ओर, नोएसक्यूएल डेटाबेस, बल्कि एक नई तकनीक है। हम अभी भी सर्वोत्तम प्रथाओं को समझ रहे हैं। सबसे लगातार सलाह है: "अपने सिर का प्रयोग करें। इस बारे में सोचें कि अक्सर कौन से प्रश्न किए जाते हैं, और उनके लिए अपनी डेटा स्कीमा अनुकूलित करें।"
किसी भी उदाहरण पर जब आप एक रिलेशनल डेटाबेस के साथ समानांतर में नोएसक्यूएल समाधान दोनों का उपयोग करने पर विचार करना चाहते हैं?
जब संभव हो मैं एक ही उत्पाद में दो अलग-अलग डेटाबेस प्रौद्योगिकी का उपयोग कर के खिलाफ सलाह देंगे:
- जो कोई रखता है और समर्थन करता है उत्पाद
- समस्या निवारण एक बहुत कठिन हो जाता है दोनों प्रौद्योगिकियों से परिचित होना चाहिए
- sysadmins को अतिरिक्त डेटाबेस चलाने और अद्यतन करने की आवश्यकता है
- आपके पास विफलता का एक अतिरिक्त बिंदु है जो डाउनटाइम
मैं केवल अपनी आवश्यकताओं को पूरा करते समय डेटाबेस तकनीकों को मिश्रण करने की सिफारिश करता हूं, यह मुश्किल नहीं होता है लेकिन शारीरिक रूप से असंभव। अन्यथा, अपना चयन करें और इसके साथ रहें।
नोएसक्यूएल सिर्फ मोंगोडीबी नहीं है। पूरी तरह से अलग दर्शन और उपयोग-मामलों के साथ लेबल के तहत समूहित नई डेटाबेस प्रौद्योगिकियों का एक पूरा समूह, और वे सभी समान हैं, वे SQL डेटाबेस के साथ समान हैं। – Philipp