MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडब कुल नौकरियों के लिए स्मृति सीमा बढ़ाना

खैर नहीं, कोई सेटिंग नहीं है और अगर आप वास्तव में इसके बारे में सोचते हैं तो इसका एक अच्छा कारण है। इसलिए यदि आप पहले विचार करें कि समुच्चय क्या कर रहा है और MongoDB सामान्य रूप से क्या करता है तो यह स्पष्ट हो जाना चाहिए।

यह वही है जो "चाहिए" किसी भी समझदार एकत्रीकरण पाइपलाइन के "सिर" पर हो:

db.collection.aggregate([
    { "$match:{ /* Something here */ } },

और ये कारण हैं:

  1. यह अच्छी समझ बनाता है कोशिश करने के लिए किसी भी . में आप जिस वर्किंग सेट पर काम कर रहे हैं उसे कम करने के लिए ऑपरेशन।

  2. यह भी केवल . है जब आपको चयन खोजने में सहायता करने के लिए एक अनुक्रमणिका का उपयोग करने का अवसर मिलता है। जो हमेशा है संग्रह स्कैन से बेहतर।

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

अगली बात पर विचार करना MongoDB का सामान्य व्यवहार है। ताकि सर्वर प्रक्रिया चाहता है करना है, "खपत" . है जितना बहुत "work" के क्रम में "वर्किंग सेट" डेटा (संग्रह और/या इंडेक्स) को होल्ड करने के लिए उपलब्ध मशीन मेमोरी का उस डेटा पर सबसे कुशल माध्यम . में ।

तो यह वास्तव में है "सर्वोत्तम हित" . में डेटाबेस इंजन का अधिकांश . "खर्च" करने के लिए इसकी स्मृति आवंटन इस तरह से। इस तरह, आपके दोनों "कुल" नौकरी और सभी अन्य समवर्ती प्रक्रियाओं की मेमोरी स्पेस में "कार्यशील डेटा" तक पहुंच होती है।

तो इसलिए यह "इष्टतम नहीं" . है MongoDB के लिए "चोरी" यह स्मृति आवंटन अन्य समवर्ती संचालन से दूर है बस अपने चल रहे एकत्रीकरण संचालन की सेवा के लिए।

"हार्डवेयर आवश्यकताओं के लिए प्रोग्रामिंग" . में शर्तों, अच्छी तरह से आप जानते हैं कि भविष्य के रिलीज बड़े प्रसंस्करण की अनुमति देने के लिए एकत्रीकरण पाइपलाइन को "डिस्क उपयोग" को लागू करने की अनुमति देते हैं। आप हमेशा एसएसडी या अन्य तेज़ को लागू कर सकते हैं भंडारण प्रौद्योगिकियां। और निश्चित रूप से "10%" RAM की मात्रा सिस्टम में स्थापित RAM की मात्रा के अधीन है। तो आप हमेशा बढ़ा सकते हैं वह।

इसका राउंडअप है, MongoDB के पास एक वास्तविक नौकरी है एक "समवर्ती डेटास्टोर" . होने के नाते और यह अच्छी तरह से करता है। यह क्या है नहीं एक विशिष्ट है "एकत्रीकरण नौकरी करने वाला " और ऐसा नहीं माना जाना चाहिए।

तो या तो "ब्रेक-अप" आपका कार्यभार, या बढ़ाना अपने हार्डवेयर विनिर्देश, या बस बड़ी "कार्य चल रही" गतिविधि को किसी ऐसी चीज़ पर स्विच करें जो करती है चल रहे कार्य पर ध्यान केंद्रित करें जैसे कि Hadoop-style "mapReduce", और MongoDB को उसके नौकरी . पर छोड़ दें डेटा परोसने के लिए।

या निश्चित रूप से, अपने डिज़ाइन को केवल "प्री-एग्रीगेट" . में बदलें कहीं आवश्यक डेटा "लिखने पर"

जैसा कि कहा जाता है, "पाठ्यक्रम के लिए घोड़े" , या अपने टूल का उपयोग उनके डिज़ाइन के लिए करें के लिए



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. अगर mongoDB सर्वर चल रहा है, तो ड्राइवर से कैसे जांचें?

  2. मोंगोडब गतिशील ऑपरेटर की तरह

  3. उबंटू 16.04 एलटीएस पर मोंगोडब चलाना

  4. लूप और प्रदर्शन के लिए मोंगो एकत्रीकरण बनाम जावा

  5. पॉप्युलेट () रेफरी वस्तु सरणी में नेस्टेड