में अरबों छोटे दस्तावेज़ों की तेज़ी से खोज के लिए रणनीतियां मुझे कई अरब छोटे डेटा संरचनाओं (लगभग 200 बाइट्स प्रत्येक) को स्टोर करने की आवश्यकता है। अब तक, प्रत्येक तत्व को एक अलग दस्तावेज़ के रूप में संग्रहीत करना अच्छी तरह से काम कर रहा है, मोंगो प्रति सेकंड लगभग 10,000 परिणाम प्रदान करता है। मैं 20-बाइट हैश का उपयोग प्रत्येक दस्तावेज़ के लिए _id और _id फ़ील्ड पर एक एकल इंडेक्स के रूप में कर रहा हूं। परीक्षण में, यह 5,000,000 दस्तावेजों के साथ डेटा सेट के लिए काम कर रहा है।MongoDB
ऑपरेशन में, हम प्रति सेकेंड लगभग 10,000 अनुरोध करेंगे, मौजूदा दस्तावेज़ों को प्रति सेकंड 1,000 बार अपडेट करेंगे, और नए दस्तावेज़ों को प्रति सेकंड या उससे कम 100 बार डालेंगे।
हम बड़े डेटा सेट कैसे प्रबंधित कर सकते हैं, जब हम रैम में एक संपूर्ण इंडेक्स स्टोर नहीं कर सकते हैं? अगर हम प्रत्येक दस्तावेज़ में कई तत्वों को जोड़ते हैं तो मोंगो डीबी बेहतर प्रदर्शन करेगा - सूचकांक के माध्यम से तेज खोज के लिए, लेकिन प्रत्येक क्वेरी में अधिक डेटा लौटाया जा रहा है?
SO पर अन्य प्रश्नों के विपरीत, मुझे केवल दिलचस्पी नहीं है कि हम मोंगो में कितना डेटा डाल सकते हैं। यह स्पष्ट रूप से उस डेटा की मात्रा का प्रबंधन कर सकता है जिसे हम देख रहे हैं। मेरी चिंता यह है कि हम विशाल संग्रह पर find
संचालन की गति को अधिकतम कैसे कर सकते हैं, बाधित रैम दिया गया है।
हमारी खोजों को क्लस्टर किया जाएगा; लगभग 50,000 तत्व प्रश्नों के बारे में 50% संतुष्ट होंगे, लेकिन शेष 50% यादृच्छिक रूप से सभी डेटा में वितरित किए जाएंगे। क्या हम रैम में सबसे अधिक इस्तेमाल किए गए डेटा की एक छोटी अनुक्रमणिका रखने के लिए उन 50% को अपने संग्रह में ले जाकर प्रदर्शन लाभ की उम्मीद कर सकते हैं?
20-बाइट्स से 8-बाइट्स तक _id फ़ील्ड के आकार को कम करने से MnogoDB की अनुक्रमण गति पर महत्वपूर्ण प्रभाव पड़ता है?
जैसा कि ऐसा लगता है कि आपके पास रैम की तुलना में कहीं अधिक दस्तावेज होंगे, मैं जितना संभव हो सके दस्तावेजों को कम कर सकता हूं ताकि रैम में फिट होने वाले डेटा की मात्रा में वृद्धि हो सके। सुनिश्चित करें कि फ़ील्ड नाम उदाहरण के लिए केवल एक या दो वर्ण हैं। क्या आप sharding पर योजना बना रहे हैं? उसी सर्वर पर डेटा को एक अलग संग्रह में स्थानांतरित करने से राम उपयोग नहीं बदलेगा - क्योंकि यह ओएस किसी भी तरह से प्रबंधित है। – WiredPrairie
डेटा बढ़ने के साथ ही हम sharding होगा। – Neil
रैम में इस छोटे संग्रह के लिए इंडेक्स को रखने के लिए और इसे स्वैप होने से रोकने की कोशिश करने के लिए, सबसे अधिक उपयोग किए गए रिकॉर्ड को एक अलग संग्रह में रखना एक विचार है। मुझे लगता है कि यह मूर्खतापूर्ण हो सकता है, लेकिन मुझे यकीन नहीं है कि क्यों या क्यों नहीं। – Neil