2012-10-28 7 views
28

मैं mongodb के लिए एक सुपर नौसिखिया हूँ। मैं mongoose का उपयोग node.js से mongodb तक पहुंचने के लिए कर रहा हूं, और जानता हूं कि चीजों को कैसे काम करना है, लेकिन मुझे नहीं लगता कि मैं समझता हूं कि यह किस तरह से काम करता है।मोंगोज़ का स्कीमा क्यों उपयोग करता है जब मोंगोडब का लाभ माना जाता है कि यह स्कीमा-कम है?

सबसे महत्वपूर्ण बात यह है कि मुझे समझ में नहीं आता कि क्यों मोंगोज़ की 'स्कीमा' होती है जब मोंगोडब की स्टैंडआउट सुविधाओं में से एक यह है कि इसमें स्कीमा नहीं है। क्या कोई मुझे प्रबुद्ध कर सकता है? धन्यवाद।

+1

मुझे लगता है कि यह एक डिफ़ॉल्ट स्कीमा का मामला है, फिर भी आप तालिका को पूरी तरह से बदलने के बिना अपने ऐप कोड में गतिशील रूप से फ़ील्ड जोड़ सकते हैं। एक उदाहरण उत्पादों की एक बड़ी मेज है, जो एसक्यूएल में एक क्षेत्र जोड़ना गंदा और धीमा है, मोंगोडीबी में बस इसे क्लाइंट मॉडल में जोड़ें ... – Sammaye

+0

मोंगोडीबी स्कीमा-कम नहीं है। यह लचीला स्कीमा मिला है - इसमें एक बड़ा अंतर है। –

+0

यह स्वाद का विषय है, मोंगोस आपको वैधताओं के साथ एक टाइप स्कीमा देता है, अगर आप उस ड्राइवर का उपयोग करते हैं जिसे आप प्राप्त नहीं करते हैं और आपको अपना रोल करना होगा। दूसरी तरफ, मोंगोस की परत कुछ हद तक कच्चे प्रदर्शन को प्रभावित करेगी क्योंकि यह कुछ हाउसकीपिंग करता है जो कच्चे चालक पर अतिरिक्त समय लेता है। – christkv

उत्तर

22

स्कीमा के बिना डेटा बेकार है। आपको मोंगो डीबी से एक दस्तावेज मिलता है, आप इसके साथ क्या करते हैं? कुछ फ़ील्ड पढ़ें? आपको उन क्षेत्रों के नाम, प्रकार और अर्थ जानने की जरूरत है। यह एक स्कीमा है।

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

+4

पूरी तरह से सच नहीं है। रीयलटाइम ऐप्स हैं जो फ्लाई पर बनाए गए फ़ील्ड पर भरोसा कर सकते हैं। मोंगोस मॉडल में एक फ़ील्ड जोड़ने का मतलब है एक नई तैनाती प्रक्रिया। ऐसे ओडीएम हैं जिन्हें उदाहरण के लिए मोंगोरीटो की एक निश्चित स्कीमा परिभाषा की आवश्यकता नहीं है। –

+0

कभी कस्टम क्षेत्रों के बारे में सुना? मान लीजिए कि आप चाहते हैं कि आपके ग्राहक अपनी खुद की स्कीमा को परिभाषित करने में सक्षम हों, जिसे आप अपने संग्रह में स्टोर करना चाहते हैं, बिना प्रत्येक ग्राहक के लिए डेवलपर चेंज कोड के। यह स्कीमालेस डिजाइन के लिए एक आदर्श उपयोग-मामला है। –

+0

@ टिमहार्डी आप कहते हैं "अपनी खुद की स्कीमा परिभाषित करें", लेकिन फिर इसे "स्कीमलेस" कहते हैं - वहां एक विरोधाभास देखें? मैंने नहीं कहा "एक स्थिर स्कीमा के बिना डेटा बेकार है"। –

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