2013-01-10 15 views
7

मैंने एक मोंगोडीबी बनाया। मैं कुछ समूह द्वारा एकत्रीकरण करना चाहता हूं। मुझे यह document मिला, जो मेरे लिए यह करेगा। सब कुछ ठीक है, लेकिन कुछ limitations बताया जाता है: पाइपलाइन सेमोंगो एकत्रीकरण/मोंगो एकत्रीकरण के प्रदर्शन के साथ क्या किया जा सकता है

  1. आउटपुट केवल 16 मेगाबाइट हो सकते हैं। यदि आपका परिणाम सेट इस सीमा से अधिक है, तो कुल आदेश एक त्रुटि उत्पन्न करता है।

  2. यदि कोई एकल एकत्रीकरण ऑपरेशन सिस्टम रैम के 10 प्रतिशत से अधिक का उपभोग करता है तो ऑपरेशन एक त्रुटि उत्पन्न करेगा।

  3. समेकन प्रणाली वर्तमान में स्मृति में $group संचालन को संग्रहीत करती है, जो बड़ी संख्या में समूहों को संसाधित करते समय समस्याएं पैदा कर सकती है।

मैं मोंगोडीबी एकत्रीकरण के साथ कितनी पंक्ति/दस्तावेज संसाधित कर सकता हूं? मैं इसका इस्तेमाल करने से डरता हूं। क्या कोई मुझे इस बारे में मार्गदर्शन कर सकता है?

+1

+1 देखें। – trashgod

उत्तर

16

मुझे Google समूहों से वैध और सहायक उत्तर मिला।आप सभी के साथ साझा करना चाहते हैं।

सीमा दस्तावेजों की संख्या पर नहीं है: सीमा अंतिम परिणाम (या मध्यवर्ती परिणाम) द्वारा उपयोग की जाने वाली स्मृति की मात्रा पर है।

तो: यदि आप 200 000 दस्तावेज़ एकत्र करते हैं लेकिन परिणाम 16 एमबी परिणाम में फिट बैठता है, तो आप ठीक हैं। यदि आप 100 दस्तावेज एकत्र करते हैं और परिणाम 16 एमबी में फिट नहीं होता है, तो आपको एक त्रुटि मिल जाएगी।

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

क्या मैं किसी भी सेटिंग के माध्यम से 16 एमबी बढ़ा सकता हूं?

केवल अंतिम परिणाम के लिए 16 एमबी सीमा है या क्या वह विशेष एकत्रीकरण (साधन, मध्यवर्ती परिणाम + कोई अस्थायी होल्डिंग्स + अंतिम परिणाम) के लिए है?

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

एपीआई लिंक और सीमाओं के सारांश के लिए इस post

+1

प्राप्त होगा, इस बात से पहले कि इस जवाब से पहले या उससे पहले एकत्रीकरण में '$ आउट' जोड़ा गया था, लेकिन: http://docs.mongodb.org/manual/reference/operator/aggregation/out/ – user3467349

1

एकत्रीकरण ढांचे के साथ होने वाली प्रसंस्करण की मात्रा आपकी स्कीमा पर निर्भर करती है।

एकत्रीकरण ढांचे केवल उत्पादन इस समय एक दस्तावेज़ के रिश्तेदार (बड़ा उत्पादन के लिए आप देखना चाहते हैं जाएगा: https://jira.mongodb.org/browse/SERVER-3253) कर सकते हैं और यह के रूप में उत्पादन होगा:

{ 
    result: { //the result }, 
    ok: 1/0 
} 

तो तुम करने के लिए है सुनिश्चित करें कि आप अपने $group/$project से वापस क्या प्राप्त करते हैं, इतना बड़ा नहीं है कि आप अपने इच्छित परिणामों को वापस न लें। अधिकांश समय यह मामला नहीं होगा और लाखों पंक्तियों पर भी एक साधारण $group का परिणाम 16 मेग से कम की प्रतिक्रिया हो सकता है।

हमें आपके दस्तावेज़ों के आकार या समेकित प्रश्नों के बारे में कोई जानकारी नहीं है, जैसे कि हम नाउट की सलाह नहीं दे सकते।

यदि कोई एकल एकत्रीकरण ऑपरेशन सिस्टम रैम के 10 प्रतिशत से अधिक उपभोग करता है तो ऑपरेशन एक त्रुटि उत्पन्न करेगा।

यह वास्तव में सुंदर आत्म व्याख्यात्मक है। यदि एक ऑपरेशन के लिए कामकाजी सेट इतना बड़ा है कि यह गणना या समूह वाले क्षेत्रों पर 10 प्रतिशत से अधिक RAM ($group/संगणित फ़ील्ड/$sort) लेता है तो यह काम नहीं करेगा।

जब तक आप अपने ऐप तर्क को करने के लिए एकत्रीकरण ढांचे का प्रयास और दुरुपयोग नहीं करते हैं तो आपको वास्तव में इस समस्या में कभी भी भाग नहीं लेना चाहिए।

समेकन प्रणाली वर्तमान में स्मृति में $ समूह संचालन संग्रहीत करती है, जो बड़ी संख्या में समूहों को संसाधित करते समय समस्याएं पैदा कर सकती है। (यह "groupes" क्षेत्र)

$group के बाद से वास्तव में कड़ी मेहनत करने के लिए स्मृति में ऐसा नहीं है इसका मतलब है कि उस समूह पर कार्रवाई की स्मृति में भी कर रहे हैं, यानी $sort इस जगह है जहाँ आप कि 10% का उपयोग शुरू कर सकते हैं अगर आप सावधान नहीं हैं।

+0

यदि मेरे पास 4 लाख दस्तावेज़ हैं और यदि मैं इस तरह सरल एकत्रीकरण करता हूं >>> db.store.aggregate ({$ समूह: {_id: "$ SO", कुल: {$ sum: "$ net"}}}); क्या यह किसी भी प्रदर्शन की समस्या का कारण बन जाएगा? यह शायद 250 समूहों का उत्पादन करेगा। – user10

+0

@ user10 हम्म कहने में कठोर है, मैं कह सकता हूं कि समेकन ढांचा उस सेट पर काम करेगा, लेकिन यह कहना मुश्किल है कि आपको बेंचमार्क – Sammaye

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