2011-12-19 14 views
8

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

क्या आप स्पष्टीकरण में मदद कर सकते हैं?

धन्यवाद।

उत्तर

4

अक्सर दावा किया जाता है कि मोंगोडब बहुत तेजी से लिखता है। जबकि वे वास्तव में धीमी नहीं हैं, यह काफी अधिक है। मोंगोडब में थ्रूपुट लिखें वैश्विक लेखन लॉक द्वारा सीमित है। हां, आपने मुझे सही सुना है, केवल एक किसी भी पल में सर्वर पर हो रहा है लिखना ऑपरेशन हो सकता है।

यह भी सुझाव है कि आप मोंगोडब की स्कीमालेस प्रकृति का लाभ उठाएं और अपने डेटा को denormalized स्टोर करें। प्रायः एक डिस्क केवल सभी आवश्यक डेटा लाने के लिए करना संभव है (क्योंकि यह सब एक ही दस्तावेज़ में है)। कम डिस्क चाहता है - तेजी से पूछताछ।

यदि डेटा रैम में बैठता है - कोई डिस्क की आवश्यकता नहीं है, तो डेटा मेमोरी से सही तरीके से परोसा जाता है। तो, सुनिश्चित करें कि आपके पास पर्याप्त रैम है।

Map/Reduce, group, $where प्रश्न धीमे हैं।

उदाहरण के लिए, $push का उपयोग करके, एक बड़े दस्तावेज़ को लिखना तेज़ नहीं है। दस्तावेज़ अपनी डिस्क सीमाओं को बढ़ा देगा और उसे दूसरी जगह पर कॉपी करना होगा, जिसमें अधिक डिस्क ऑपरेशंस शामिल होंगे।

और मैं @AurelienB से सहमत हूं, कुछ बुनियादी सिद्धांत सभी डेटाबेस में सार्वभौमिक हैं।

+0

जो मैंने आपको सुना है वह है "मोंगोडब बहुत तेज़ व्यक्ति लिखता है, लेकिन लॉक सिस्टम आपको एक समय में एक तक सीमित करता है।" क्या यह शेरिंग के साथ भी लागू होता है? – Abe

+0

नहीं, sharding इस मुद्दे को कम करता है। प्रत्येक शार्ड को अपना ताला मिलता है। –

1

यह सभी डेटाबेस सिस्टम से बहुत अलग नहीं है।

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

इसके विपरीत, डेटा के बिना डिस्क (RAM में नहीं) पर डेटा पढ़ने से बहुत धीमा हो सकता है जब आपके पास अरबों दस्तावेज़ हैं।

3

मेरी अभ्यास एक बात यह है कि उल्लेख किया जाना चाहिए से कि MongoDB नहीं रिपोर्टिंग के लिए बहुत अच्छा फिट, हमेशा की तरह, क्योंकि रिपोर्ट से आपको विभिन्न संग्रह से डेटा की जरूरत है (' में शामिल होने') और MongoDB डेटा कई तरह इकट्ठा करना अच्छा तरीका प्रदान नहीं करता है संग्रह (और प्रदान नहीं किया जाना चाहिए)। कुछ रिपोर्टों के लिए निश्चित रूप से मानचित्र/कम या incremental मानचित्र/कमी अच्छी तरह से काम कर सकती है, लेकिन यह दुर्लभ स्थितियां हैं।

रिपोर्ट के लिए कुछ लोग डेटा डेटाबेस को डेटा माइग्रेट करने का सुझाव देते हैं, जिसमें रिपोर्टिंग के लिए बहुत सारे टूल हैं।

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