2013-10-20 17 views
6

मैं NoSQL के बारे में और अधिक सुन रहा हूं, लेकिन अभी तक मुझे कोई स्पष्ट स्पष्टीकरण देता है कि relational databases के चरण में इसका उपयोग कैसे किया जाए।नोएसक्यूएल बनाम रिलेशनल डेटाबेस बनाम संभावित हाइब्रिड

मैंने पढ़ा है कि यह left joins नहीं कर सकता है, इसलिए मैं यह पता लगाने की कोशिश कर रहा था कि आप इस तरह के डेटा संग्रहण का उपयोग कैसे कर सकेंगे। पढ़ने से: Preserve Joins by code in MongoDB ऐसा लगता है कि एक बड़ी टेबल बनाने के लिए एक सुझाव है, जैसे कि आप पहले से ही इसमें शामिल हो गए हैं।

यदि उपरोक्त कथन सत्य है, तो मैं देख सकता हूं कि इसका उपयोग कैसे किया जा सकता है। हालांकि मैं इस बात पर उत्सुक हूं कि आप दोहराए गए डेटा को कैसे संभालेंगे ... सामान्यीकरण की अवधारणा के रूप में, आपको अनावश्यकता को हटाने में मदद मिलती है और डेटा में स्थिरता सुनिश्चित होती है (उदाहरण के लिए पूंजीकरण, सफेद स्थान इत्यादि जैसे थोड़ा बदलाव) ...

क्या हम आसानी से स्केलेबल गति के लिए डेटा की स्थिरता का त्याग कर रहे हैं, या क्या मुझे कुछ याद आ रही है? मेरी समझ को पुल करने में मदद के लिए किसी भी स्पष्टीकरण की सराहना की जाती है, साथ ही साथ कोई भी संसाधन।

EDT

मैं कुछ और खुदाई और पाया जवाब मेरी समझ स्पष्ट करने के लिए निम्न सवालों उपयोगी कर रहा हूँ:

मेरे स्थिरता की समझ उन answ से सही प्रतीत होता है ईआरएस। और ऐसा लगता है कि NoSQL विशिष्ट समस्याओं के प्रकारों के लिए उपयोग किया जाता है और यदि आपको संबंधों की आवश्यकता है तो आपको एक संबंधपरक डेटाबेस का उपयोग करना चाहिए।

लेकिन इस तरह के और अधिक सवाल उठे:

  1. यह मुझे जब NoSQL बनाम जब के लिए नहीं का उपयोग करने के वास्तविक जीवन उदाहरण के बारे में चिंता है?
  2. denormalizing डेटा के साथ, आप डेटाबेस से संबंधित सभी समस्याओं को हल करने में सक्षम होना चाहिए ... लेकिन normalize संबंधपरक डेटाबेस के साथ डेटा के नियम हैं। क्या ऐसे नियम हैं जिनका उपयोग denormalizeNoSQL समाधान का उपयोग करने के लिए डेटा की मदद के लिए कर सकते हैं?
  3. relational database के साथ समानांतर में NoSQL समाधान दोनों का उपयोग करने पर विचार करने के लिए कोई उदाहरण हो सकता है?
+0

नोएसक्यूएल सिर्फ मोंगोडीबी नहीं है। पूरी तरह से अलग दर्शन और उपयोग-मामलों के साथ लेबल के तहत समूहित नई डेटाबेस प्रौद्योगिकियों का एक पूरा समूह, और वे सभी समान हैं, वे SQL डेटाबेस के साथ समान हैं। – Philipp

उत्तर

13

मोंगोडीबी में दस्तावेजों की क्षमता है जिसमें अन्य दस्तावेजों के सरणी शामिल हैं। यह कई मामलों को हल करता है जहां आप तर्कसंगत डेटाबेस में संबंध रखेंगे।

जब किसी चालान में एकाधिक पद होते हैं, तो आप इन पदों को एक अलग संग्रह में नहीं डाल पाएंगे। आप उन्हें एक सरणी के रूप में एम्बेड करेंगे।

यह मुझे वास्तविक जीवन उदाहरणों के बारे में आश्चर्यचकित करता है जब नोएसक्यूएल बनाम उपयोग नहीं किया जाता है?

कई अलग-अलग नोएसक्यूएल डेटाबेस हैं, प्रत्येक को अलग-अलग उपयोग-मामलों के साथ डिजाइन किया गया है। लेकिन आपने इस सवाल को मोंगोडीबी के रूप में टैग किया है, इसलिए मुझे लगता है कि आप विशेष रूप से मोंगो डीबी का मतलब है।

मोंगोडीबी के संबंधपरक डेटाबेस पर दो मुख्य लाभ हैं।

सबसे पहले, यह अच्छी तरह से स्केल करता है।

जब डेटाबेस बहुत धीमा या बहुत बड़ा होता है, तो आप क्लस्टर या प्रतिकृति-सेट को कई शर्ड्स बनाकर आसानी से अधिक सर्वर जोड़ सकते हैं। यह लगभग रिलेशनल डेटाबेस के साथ लगभग काम नहीं करता है।

दूसरा, यह विषम डेटा की अनुमति देता है।

उदाहरण के लिए, कंप्यूटर हार्डवेयर स्टोर का उत्पाद डेटाबेस कल्पना करें। उत्पादों के पास क्या गुण हैं? सभी उत्पादों में एक मूल्य और एक विक्रेता है। लेकिन सीपीयू के पास घड़ी की दर है, हार्ड ड्राइव और रैम चिप्स की क्षमता है (और ये क्षमता तुलनीय नहीं हैं), मॉनिटर के पास एक रिज़ॉल्यूशन है और इसी तरह। आप इसे एक रिलेशनल डेटाबेस में कैसे डिजाइन करेंगे? आप या तो एक बहुत ही लंबी उत्पाद आईडी-प्रॉपर्टी-वैल्यू टेबल बनायेंगे या आप अपनी संपत्ति के साथ एक बहुत विस्तृत और स्पैस उत्पाद तालिका तैयार करेंगे, लेकिन उनमें से अधिकतर अधिकांश उत्पादों के लिए NULL हैं। दोनों समाधान वास्तव में सुरुचिपूर्ण नहीं हैं। लेकिन मोंगोडीबी इसे बेहतर तरीके से हल कर सकता है क्योंकि यह संग्रह में प्रत्येक दस्तावेज़ को गुणों का एक अलग सेट रखने की अनुमति देता है।

यह क्या नहीं कर सकता है?

एक नई तकनीक के रूप में, इसके बारे में इतना साहित्य नहीं है। इसके चारों ओर सॉफ्टवेयर पारिस्थितिकी तंत्र अच्छी तरह से नहीं है। संबंधपरक डेटाबेस के लिए आप जो टूल प्राप्त कर सकते हैं वे अक्सर अधिक चमकदार होते हैं।

कुछ उपयोग-मामले भी हैं मोंगोडीबी के लिए उपयुक्त नहीं है।

  • MongoDB जॉइन नहीं करता है। जब आपका डेटा बहुत संबंधपरक और denormalizing है यह काउंटर-उत्पादक होगा, यह आपके उत्पाद के लिए एक खराब विकल्प हो सकता है। लेकिन हो सकता है कि आप ग्राफ डेटाबेस जैसे Neo4j पर नज़र डालें, जो संबंधपरक डेटाबेस से संबंधों पर और भी अधिक ध्यान केंद्रित करे। अद्यतन 2016: मोंगोडीबी 3.2 में अब $lookup aggregation stage के साथ प्राथमिक जॉइन समर्थन है, लेकिन यह संबंधपरक और ग्राफ डेटाबेस की तुलना में कार्यक्षमता में अभी भी बहुत सीमित है।
  • मोंगोडीबी लेनदेन नहीं करता है। कम से कम जटिल लेनदेन नहीं। कुछ क्रियाएं जो केवल एक दस्तावेज़ को प्रभावित करती हैं, परमाणु होने की गारंटी दी जाती है, लेकिन जैसे ही आप एक से अधिक दस्तावेज़ों को प्रभावित करते हैं, आप गारंटी नहीं दे सकते कि एक असंगत स्थिति के बीच में कोई और प्रश्न नहीं होगा।
  • मोंगो डीबी विज्ञापन-प्रसार रिपोर्टिंग के लिए खराब है। डेटा खनन के लिए इसके विकल्प गंभीर रूप से सीमित हैं। बल्कि नए समेकन फ़ंक्शन सहायता और मैपराइडस कुछ आश्चर्यजनक जटिल समस्याओं को भी हल कर सकता है जब आप इसे स्मार्ट का उपयोग करना सीखते हैं, लेकिन एसक्यूएल आमतौर पर इस तरह की चीजों के लिए बेहतर टूल होता है।

डेटा denormalizing करके, आप एक ही समस्या है कि रिलेशनल डेटाबेस कर के सभी को हल करने में सक्षम होना चाहिए ... लेकिन वहाँ रिलेशनल डेटाबेस के साथ डेटा को सामान्य करने के लिए कैसे पर नियम हैं। क्या ऐसे नियम हैं जिनका उपयोग किसी भी एसएसएसक्यूएल समाधान का उपयोग करने के लिए डेटा को denormalize करने में मदद करने के लिए कर सकते हैं?

रिलेशनल डेटाबेस लगभग 40 वर्षों तक हैं। उनका सिद्धांत कंप्यूटर विज्ञान में एक अच्छी तरह से शोध विषय है। उनके पीछे सिद्धांत के बारे में लिखी पुस्तकों की पूरी पुस्तकालय हैं। अब तक हर कल्पनीय कोने-मामले के लिए एक बाय-द-बुक समाधान है।

लेकिन दूसरी ओर, नोएसक्यूएल डेटाबेस, बल्कि एक नई तकनीक है। हम अभी भी सर्वोत्तम प्रथाओं को समझ रहे हैं। सबसे लगातार सलाह है: "अपने सिर का प्रयोग करें। इस बारे में सोचें कि अक्सर कौन से प्रश्न किए जाते हैं, और उनके लिए अपनी डेटा स्कीमा अनुकूलित करें।"

किसी भी उदाहरण पर जब आप एक रिलेशनल डेटाबेस के साथ समानांतर में नोएसक्यूएल समाधान दोनों का उपयोग करने पर विचार करना चाहते हैं?

जब संभव हो मैं एक ही उत्पाद में दो अलग-अलग डेटाबेस प्रौद्योगिकी का उपयोग कर के खिलाफ सलाह देंगे:

  • जो कोई रखता है और समर्थन करता है उत्पाद
  • समस्या निवारण एक बहुत कठिन हो जाता है दोनों प्रौद्योगिकियों से परिचित होना चाहिए
  • sysadmins को अतिरिक्त डेटाबेस चलाने और अद्यतन करने की आवश्यकता है
  • आपके पास विफलता का एक अतिरिक्त बिंदु है जो डाउनटाइम

मैं केवल अपनी आवश्यकताओं को पूरा करते समय डेटाबेस तकनीकों को मिश्रण करने की सिफारिश करता हूं, यह मुश्किल नहीं होता है लेकिन शारीरिक रूप से असंभव। अन्यथा, अपना चयन करें और इसके साथ रहें।

संबंधित मुद्दे