2012-02-19 13 views
8

मैं वर्तमान में मोंगोडीबी के साथ एक सर्वर पर अपनी वेबसाइट चलाता हूं। मेरे सर्वर पर मेरे पास दो घटक हैं (1) एक क्रॉलर जो प्रति घंटा चलता है और मेरे मोंगोडीबी इंस्टेंस (2) को डेटा को जोड़ता है जो क्रॉलर इंडेक्स से पढ़ता है और उपयोगकर्ता वैयक्तिकरण डीबी को भी लिखता है। मैं ऑटो-स्केलिंग के लिए अमेज़ॅन ईसी 2 में जा रहा हूं, ताकि वेब-सर्वर ऑटो-स्केल कर सके, इसलिए मैं वेब-ट्रैफिक बढ़ने के रूप में सर्वर की संख्या बढ़ा सकता हूं। मुझे अपने क्रॉलर के लिए ऑटो-स्केलिंग की आवश्यकता नहीं है। यह मोंगो डीबी का उपयोग करने के लिए एक चुनौती है। मैं सोच रहा हूँ कि मेरी सबसे अच्छा विकल्पईसी 2 पर मोंगो डीबी स्केलिंग या क्या मुझे डायनेमो डीबी पर स्विच करना चाहिए?

  • मेरी कोड के लिए कम से कम परिवर्तन पर अनुकूलन करने के लिए है (कोड पर्ल में है) मूल DB में डेटा को खोने के बारे में चिंता किए बिना जोड़ने के लिए/वेब सर्वर को दूर
  • की क्षमता
  • कम लागत

अल्पकालिक में, डीबी निश्चित रूप से सभी machies भर में स्मृति में फिट करने के बाद से यह 2 जीबी के तहत किया जाएगा सक्षम हो जाएगा। उपयोगकर्ता वैयक्तिकरण डीबी को पुनर्निर्मित नहीं किया जा सकता है, इसलिए यह अधिक महत्वपूर्ण है, जबकि इंडेक्स को आसानी से फिर से बनाया जा सकता है। वर्तमान मोंगोडीबी क्रॉल इंडेक्स में लगभग 100k प्रविष्टियां हैं जो ~ 15 अलग-अलग कॉलम पर हैं। यह गति के लिए बनाया गया है, क्योंकि मैं एक ऑनलाइन डेटिंग साइट पर काम कर रहा हूं (जो कई तरीकों से खोजने योग्य है)।

मैं कुछ ही विकल्प

  1. उपयोगकर्ता निजीकरण की दुकान के लिए SimpleDB का प्रयोग करें, और सूचकांक के लिए MongoDB के बारे में सोच सकते हैं। इंडेक्स सभी मशीनों में दोहराना है, हालांकि, मुझे मोंगोडीबी प्रतिकृति के बारे में बहुत कुछ पता नहीं है। SimpleDB
  2. को
  3. चाल सब कुछ
  4. DynamoDB

के लिए सब कुछ ले जाएँ मैं SimpleDB और/या DynamoDB बारे में बहुत ज्यादा नहीं जानता। लेखों के आधार पर ऐसा लगता है जैसे डायनेमो डीबी एक प्राकृतिक विकल्प होगा, लेकिन मुझे अच्छा पर्ल समर्थन के बारे में निश्चित नहीं है, भले ही मेरे पास सभी कॉलम, इंडेक्स इत्यादि हो। क्या किसी के पास अनुभव है या कोई सलाह है?

उत्तर

3

आप ईसी 2 पर एक सर्वर पर मोंगो की मेजबानी कर सकते हैं जो वेब फार्म में से प्रत्येक बॉक्स से जुड़ता है। फिर आप एक ही वेब इंस्टेंस को आसानी से स्पिन कर सकते हैं जो एक ही डीबी बॉक्स का उपयोग करता है।

वर्तमान में हमारे पास तीन मोंगो सर्वर हैं क्योंकि हम एक प्रतिकृति सेट चलाते हैं और जब हम उस बिंदु पर पहुंच जाते हैं जहां हमें मोंगो के साथ क्षैतिज पैमाने पर स्केल करने की आवश्यकता होती है तो हम कुछ नए उदाहरणों को स्पिन करेंगे और बड़े संग्रह को दाढ़ी देंगे।

+0

धन्यवाद जो! यह बहुत अंतर्दृष्टिपूर्ण है। तो स्पष्टीकरण के लिए, क्या आपका मोंगो डेटा 3 मशीनों में फैला है या क्या यह 3 मशीनों में दोहराया गया है? मेरे मोंगो स्केलिंग के साथ मेरे वेब सर्वर के स्केलिंग को अलग करने का यह एक अच्छा विचार है। क्या आपके मोंगो सर्वर स्केल करते समय कोई डाउनटाइम है? क्या आपको अधिक क्षमता की आवश्यकता होने पर मोंगो को स्केल करने के अच्छे तरीकों पर कोई पॉइंटर्स/लिंक हैं? – ZenoriInc

+0

हम एक प्रतिकृति सेट, एक मास्टर, दो प्रतिकृतियों के साथ 3 अलग मशीनों का उपयोग करते हैं। यह मुख्य रूप से स्वत: असफल होने के लिए है, इसलिए यदि हमारा मास्टर मर जाता है, तो प्रतिकृतियों में से एक को मास्टर बनने के लिए प्रोत्साहित किया जाता है। प्रत्येक प्रतिकृति डेटा में डेटा वही है। – Joe

+0

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

3

मैं वर्तमान में मोंगोडीबी के साथ एक सर्वर पर अपनी वेबसाइट चलाता हूं।

सबसे पहले, यह एक बड़ा लाल झंडा है। उत्पादन पर चलते समय, कम से कम तीन पूर्ण नोड्स के साथ प्रतिकृति सेट चलाने की हमेशा अनुशंसा की जाती है।

प्रतिकृति स्वचालित रिडंडेंसी और असफलता प्रदान करती है। मूल डीबी

MongoDB में डेटा को खोने के बारे में चिंता किए बिना जोड़ने के लिए/वेब सर्वर को दूर

की क्षमता एक अवधारणा sharding कहा जाता है का समर्थन करता है। शेडिंग डेटा को स्वचालित रूप से विभाजित करके क्षैतिज रूप से स्केल करने का एक तरीका प्रदान करता है। विभाजन shard key के माध्यम से किया जाता है।

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

वर्तमान मोंगोडीबी क्रॉल इंडेक्स में लगभग 100k प्रविष्टियां हैं जो ~ 15 अलग-अलग कॉलम पर हैं।

यह शेरिंग के साथ एक समस्या होगी। शेर्डिंग केवल उन प्रश्नों को स्केल कर सकती है जो शार्ड कुंजी का उपयोग करती हैं। शार्ड कुंजी पर एक क्वेरी सीधे एक मशीन पर रूट किया जा सकता है। एक माध्यमिक सूचकांक पर एक क्वेरी सभी मशीनों पर जाती है।

आपके पास 15 अलग-अलग इंडेक्स हैं, इसलिए मूल रूप से ये सभी प्रश्न सभी shards पर जाएंगे। वह बिल्कुल "ऑटो-स्केल" नहीं करेगा।

1

सावधान रहें कि इस समय ईसी 2 में 64 बिट छोटे उदाहरण नहीं हैं, जिससे प्रतिकृति संभावित रूप से महंगी हो जाती है। चूंकि मोंगोडीबी मेमोरी मैप्स फाइलें, 32 बिट ओएस की सलाह नहीं दी जाती है।

+1

पिछले हफ्ते अमेज़ॅन ने अंततः सभी उदाहरण आकारों और एक नए मध्यम आकार के लिए 64 बिट की घोषणा की – Bryce

1

मुझे सरल डीबी के साथ बहुत बुरे अनुभव हुए हैं और लगता है कि यह मूल रूप से त्रुटिपूर्ण है, इसलिए मैं इससे बचूंगा। http://d36cz9buwru1tt.cloudfront.net/AWS_NoSQL_MongoDB.pdf

मैं EC2 पर MongoDB की स्थापना पर शक बनाम पुनर्लेखन के लिए/DynamoDB माइग्रेट करने सबसे तेजी से समाधान है:

तीन कैसे अमेज़न EC2 पर MongoDB स्थापित करने के लिए पर एक अच्छा श्वेत पत्र है।

शुभकामनाएँ!

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