2012-12-18 21 views
13

मैं बड़ी संख्या में उपयोगकर्ताओं (लगभग 100,000) को संभालने के लिए मोंगोडीबी (64 बिट संस्करण) के साथ एक प्रणाली तैयार कर रहा हूं और प्रत्येक उपयोगकर्ता के पास बड़ी मात्रा में डेटा (लगभग 1 मिलियन रिकॉर्ड) होंगे।मोंगो डीबी डाटाबेस बनाम संग्रह

डिज़ाइन की सबसे अच्छी रणनीति क्या है?

  1. डंप एकल संग्रह

  2. में सभी रिकॉर्ड प्रत्येक उपयोगकर्ता

  3. प्रत्येक उपयोगकर्ता के लिए एक डेटाबेस है के लिए एक संग्रह है।

कई धन्यवाद,

+1

निश्चित रूप से अंतिम नहीं 2. –

+0

डेटाबेस आर्किटेक्चर व्यूपॉइंट से मैं एक संग्रह का उपयोग करने की अनुशंसा करता हूं, लेकिन मुझे यकीन नहीं है कि क्या वे अभी भी बहुत अच्छे पैमाने पर स्केल करते हैं जब आपके पास सैकड़ों * अरबों रिकॉर्ड हैं। – Philipp

उत्तर

12

तो आप 100 अरब रिकॉर्ड (1 मिलियन रिकॉर्ड * 100,000 उपयोगकर्ता) के क्षेत्र में कहीं कहीं देख रहे हैं।

बड़ी मात्रा में डेटा से निपटने का पसंदीदा तरीका एक शर्मीला क्लस्टर बनाना है जो कई सर्वरों पर डेटा को विभाजित करता है जो मोंगो क्लाइंट के माध्यम से एकल लॉजिकल यूनिट के रूप में प्रस्तुत किए जाते हैं।

इसलिए आपके प्रश्न का उत्तर आपके सभी रिकॉर्ड एक ही शापित संग्रह में डाल दिया गया है।

क्लस्टर की आवश्यकता और क्लस्टर की कॉन्फ़िगरेशन की संख्या डेटा के आकार और अन्य कारकों जैसे कि पढ़ने और लिखने की मात्रा और वितरण से संबंधित है। उन प्रश्नों के उत्तर शायद आपकी अनूठी स्थिति के लिए बहुत विशिष्ट हैं, इसलिए मैं उन्हें अनुमान लगाने का प्रयास नहीं करूंगा।

मैं शायद यह तय करके शुरू करूंगा कि आपके पास कितने शर्ड्स हैं और मशीनों को सेट करने और सिस्टम की जांच करने के लिए कई मशीनों के समूह पर उपलब्ध हैं। इसके प्रदर्शन के आधार पर, आप यह तय कर सकते हैं कि आपको अपने क्लस्टर

+3

जबकि इस परिदृश्य में शेर्डिंग आर्किटेक्चर निश्चित रूप से प्रासंगिक है, आपकी पोस्ट ओपी के प्रश्न को संबोधित नहीं करती है, जो कि एक संग्रह, एकाधिक संग्रह या एकाधिक डेटाबेस का उपयोग करना है या नहीं। – Philipp

+3

आह हाँ, विकल्प 2 और 3 मेरे लिए इतने सहज थे कि मैं इसे स्पष्ट करने के लिए भूल गया था कि आपको इसे एक संग्रह में रखना चाहिए और – chrisbunney

+1

@chrisbunney "डेटाबेस या संग्रह के पैटर्न का उपयोग करने पर आपके 2 पेनी क्या हैं प्रत्येक उपयोगकर्ता "सुरक्षा और सरलीकृत पहुंच नियंत्रण प्रबंधन के एकमात्र उद्देश्य के लिए? – kommradHomer

3

प्रत्येक उन पर एक संग्रह के बारे में:

डिफ़ॉल्ट कॉन्फ़िगरेशन करके, MongoDB 12k संग्रह तक सीमित है। आप - को आकार के साथ इसका आकार बढ़ा सकते हैं लेकिन यह असीमित नहीं है। और आपको इस 12k में इंडेक्स गिनना होगा। (मोंगो दस्तावेज पर "नेमस्पेस" अवधारणा की जांच करें)।

प्रत्येक उपयोगकर्ता के लिए एक डेटाबेस के बारे में:

देखने के एक मॉडल बिंदु के लिए, कि बहुत उत्सुक है। तकनीकी के लिए, मोंगो पर कोई सीमा नहीं है, लेकिन आपके पास शायद फ़ाइल डिस्क्रिप्टर (आपके ओएस/सेटिंग्स से सीमा) के साथ एक सीमा है।

तो जैसा कि @ रोहित कहते हैं, दो अंतिम अच्छे नहीं हैं। शायद आपको अपने मामले के बारे में अधिक जानकारी देनी चाहिए। हो सकता है कि आप उपयोगकर्ताओं को विभिन्न संग्रहों में कटौती कर सकें (उदा: प्रत्येक नाम के पहले अक्षर के लिए, या कंपनी की प्रत्येक सेवा के लिए ...)। और, निश्चित रूप से शेर्डिंग का उपयोग करें।

संपादित करें: शायद आपके उपयोग के मामले में MongoDb सबसे अच्छा डेटाबेस नहीं है।

5

में अधिक या कम शर्ड्स की आवश्यकता है, तो आप 100K उपयोगकर्ताओं के लिए कुल 100,000,000 विवरण रिकॉर्ड ढूंढ रहे हैं?

कितने लोगों को यह समझ में नहीं आता है कि मोंगोडीबी क्षैतिज स्केलिंग पर अच्छा है। क्षैतिज स्केलिंग को आम तौर पर एक विशाल क्लस्टर में कई (कई) सर्वरों में डेटा के विशाल एकल संग्रह स्केलिंग के रूप में वर्गीकृत किया जाता है।

तो पहले से ही यदि आप सामान्य डेटा के लिए एक संग्रह का उपयोग करते हैं (यानी user नामक एक संग्रह और detail कहा जाता है) तो आप मोंगोडीबी के मूल उद्देश्य और निर्माण के लिए उपयुक्त हैं।

जैसा कि उल्लेख किया गया है, मोंगो डीबी कई संग्रहों में लंबवत पैमाने पर स्केलिंग में इतना अच्छा नहीं है। इसके साथ शुरुआत करने के लिए एक nssize सीमा है और भले ही 12K प्रारंभिक संग्रह अनुमानित वास्तविकता में इंडेक्स आकार के कारण आपके डेटाबेस में 5K संग्रह जितना कम हो सके।

तो प्रति उपयोगकर्ता एक संग्रह बिल्कुल व्यवहार्य नहीं है। यह अपने मूल सिद्धांतों के खिलाफ मोंगोडीबी का उपयोग करेगा।

प्रति उपयोगकर्ता डेटाबेस होने के कारण प्रति उपयोगकर्ता एकवचन संग्रह होने के समान समस्याएं हो सकती हैं।

मुझे कभी भी किसी ऐसे व्यक्ति का सामना नहीं हुआ है जो मोंगो डीबी को अरबों तक या अरबों (या शायद परे) के करीब अनुकूलित विकल्प पर स्केल करने में सक्षम नहीं है, हालांकि, मुझे नहीं लगता कि यह क्यों नहीं कर सकता; सभी फेसबुक के बाद MySQL स्केल को प्रति उपयोगकर्ता अरबों (32 के + शर्ड्स में) के 100 के दशक में बनाने में सक्षम है और शेडिंग अवधारणा दो डेटाबेस के बीच समान है।

तो ऐसा करने का सिद्धांत और संभावना है। यह सही स्कीमा और शार्ड अवधारणा और कुंजी (और सेवर्स और नेटवर्क आदि इत्यादि आदि) चुनने के बारे में है।

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

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