नोट :यह 2013 में वापस लिखा गया था जब मोंगोडीबी अभी भी काफी छोटा था, इसमें आज की विशेषताएं नहीं थीं, जबकि यह उत्तर अभी भी एमएमएपी के लिए सही है, यह अन्य स्टोरेज प्रौद्योगिकियों के लिए नहीं है जो मोंगोडीबी अब लागू करता है, जैसे वायर्ड टाइगर, या पेरकोना।
ठीक से समझने के लिए एक अच्छी जगह क्या है एक अनुक्रमणिका:http://docs.mongodb.org/manual/core/indexes/
आपके द्वारा उस पर ब्रश करने के बाद आप समझेंगे कि वे इतने अच्छे क्यों हैं, हालांकि, कुछ अधिक जटिल प्रश्नों को आगे बढ़ाते हुए।
<ब्लॉककोट>हम कैसे सुनिश्चित कर सकते हैं कि हमारे द्वारा क्वेरी किए गए डेटा मेमोरी से आएंगे या नहीं?
एक तरीका है yields
. को देखना किसी भी क्वेरी पर फ़ील्ड explain()
. यह आपको बताएगा कि रैम में डेटा नहीं होने के कारण रीडर ने कितनी बार अपना लॉक प्राप्त किया।
मोंगोस्टैट और ऐसे अन्य कार्यक्रमों जैसे कार्यक्रमों को देखना एक और अधिक गहन तरीका है। ये प्रोग्राम आपको बताएंगे कि आपके mongod
पर कौन से पेज फॉल्ट (जब डेटा को डिस्क से रैम में पेज करने की आवश्यकता होती है) हो रहे हैं ।
मैं समझता हूं कि मोंगोडीबी इस समय मुफ्त मेमोरी के बारे में डेटा को कैश करने के लिए मुफ्त मेमोरी का उपयोग करता है, लेकिन क्या कोई वैश्विक व्यवहार को और समझा सकता है?
यह वास्तव में गलत है। यह कहना आसान है कि MongoDB ऐसा करता है लेकिन वास्तव में ऐसा नहीं है। यह वास्तव में ओएस और इसके अपने पेजिंग एल्गोरिदम हैं, आमतौर पर एलआरयू, जो मोंगोडीबी के लिए ऐसा करता है। MongoDB एक निश्चित अवधि के लिए कैश इंडेक्स प्लान करता है, हालांकि इसे इंडेक्स के लिए लगातार जांच और परीक्षण नहीं करना पड़ता है।
<ब्लॉककोट>किस मामले में हमारे नोड सर्वर में एक वैरिएबल का उपयोग करना बेहतर हो सकता है जो मोंगोडीबी कैश सिस्टम पर भरोसा करने की तुलना में डेटा स्टोर करता है?
सुनिश्चित नहीं है कि आप कैसे काम करने की उम्मीद करते हैं ... मेरा मतलब है कि दोनों काफी अलग चीजें करते हैं और यदि आप उस संस्करण में स्टार्टअप पर अपने आवेदन में मोंगोडीबी से अपना डेटा पढ़ने का इरादा रखते हैं तो मैं निश्चित रूप से इसकी अनुशंसा नहीं करता।
इसके अलावा स्मृति प्रबंधन के लिए OS एल्गोरिदम अत्यंत परिपक्व और तेज़ हैं, इसलिए यह ठीक है।
<ब्लॉककोट>आप विश्व स्तर पर विशाल ट्रैफ़िक के लिए MongoDB का उपयोग करने की सलाह कैसे देते हैं?
हम्म, यह इतना बड़ा सवाल है। वास्तव में मैं आपको इस विषय में Google की थोड़ी सी सलाह दूंगा लेकिन जैसा कि दस्तावेज़ीकरण में कहा गया है कि आपको यह सुनिश्चित करने की आवश्यकता है कि आपका कार्य सेट एक के लिए RAM में फिट बैठता है।
यहाँ एक अच्छा प्रारंभिक बिंदु है:MongoDB के लिए RAM में "वर्किंग सेट" को फ़िट करने का क्या अर्थ है?