यदि MongoDB की एड़ी में दर्द होता है तो यह तथ्य है कि यह केवल सिंगल-थ्रेडेड राइट्स और सिंगल-थ्रेडेड मैप-कम का समर्थन करता है।
हमेशा की तरह, यहां ट्रेड-ऑफ हैं। सिंगल-थ्रेडेड राइट्स लॉक की समस्याओं से बचने और ओवरहेड को कम करने का सबसे सरल तरीका है। उसी तरह मल्टी-थ्रेडेड मैप-रिड्यूस आपके डेटा को लॉक करने का एक शानदार तरीका है। इसलिए उत्पादन प्रणाली पर सिंगल-थ्रेडेड मैप-रिड्यूस शायद आसान और सुरक्षित है।
हालाँकि, आप यहाँ उपकरण के बिना नहीं हैं। MongoDB प्रत्येक उदाहरण के लिए एक लेखन धागा प्रदान करेगा। इसलिए यदि आप MongoDB को शार्प करते हैं, तो आपको प्रत्येक शार्प के लिए एक राइट थ्रेड मिलेगा।
यदि आप 2 अरब पंक्तियों पर एकाधिक अनुक्रमणिका चाहते हैं, तो आप वैसे भी शार्डिंग देखना चाहेंगे। यहाँ कुछ त्वरित गणित:MongoID 12 बाइट्स है। MongoID पर इंडेक्स 2B * 12 बाइट्स =22GB+ होगा। यदि आप अब दो और अनुक्रमणिकाएँ जोड़ना चाहते हैं (यहां तक कि केवल दो 4-बाइट पूर्णांक) तो हम प्रत्येक के लिए 7.5GB की बात कर रहे हैं।
तो 2B पंक्तियों में, आप इंडेक्स में 37GB से अधिक होने की बात कर रहे हैं (न्यूनतम ) ज़्यादातर 8-कोर सर्वर पर, इसका मतलब है कि आप अपने इंडेक्स को मेमोरी में भी नहीं रख पाएंगे, किसी भी डेटा को छोड़ दें।
इसलिए यदि आप यहां गंभीर प्रदर्शन चाहते हैं, तो आप शार्किंग को देखना शुरू करना चाहेंगे। केवल सामान्य संख्या के आधार पर। FWIW, MySQL अब 2B दस्तावेज़ों को संभालने में सक्षम नहीं होगा। इतने अधिक डेटा के साथ, आप वास्तव में चाहते हैं कि कई सर्वर लोड के साथ बने रहें।