2013-01-09 20 views
5

में कैशिंग दोहराए जाने वाले प्रश्नों के परिणाम मैं एक पृष्ठ बनाने जा रहा हूं जिसे "देखा" के लिए डिज़ाइन किया गया है, लेकिन बहुत कम उपयोगकर्ता डेटाबेस में "लिखेंगे"। उदाहरण के लिए, 100 उपयोगकर्ताओं में से केवल 1 ही मेरी साइट पर अपनी खबर पोस्ट कर सकते हैं, और शेष केवल समाचार पढ़ेंगे।मोंगोडीबी

उपरोक्त मामले में, वास्तविक डेटाबेस परिवर्तन कम होने पर वे मेरे मुखपृष्ठ पर जाते समय 100 समान प्रश्नों का प्रदर्शन किया जाएगा। वास्तव में उन प्रश्नों में से 99 कंप्यूटर शक्ति का अपशिष्ट है। क्या कोई ऐसी विधियां हैं जो पहली क्वेरी के परिणामों को कैश कर सकती हैं, और जब वे एक ही समय में एक ही क्वेरी का पता लगाते हैं, तो कैश किए गए परिणाम दे सकते हैं?

मैं मोंगोडीबी और टोरनाडो का उपयोग करता हूं। हालांकि, कुछ पदों का कहना है कि मोंगोडीबी कैशिंग नहीं करता है।

एक स्थिर, कैश किए गए HTML को Nginx जैसे कुछ के साथ बनाना पसंद नहीं है, क्योंकि मैं हर बार टोरनाडो द्वारा व्यक्तिगत पृष्ठ प्रस्तुत करना चाहता हूं।

उत्तर

3

मोटर (मोंगो + बवंडर) पैकेज के लेखक श्रेणियों की अपनी सूची यहाँ कैशिंग का एक उदाहरण देता है: http://emptysquare.net/blog/refactoring-tornado-code-with-gen-engine/

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

6

मैं मोंगोडीबी और टोरनाडो का उपयोग करता हूं। हालांकि, कुछ पदों का कहना है कि मोंगोडीबी कैशिंग नहीं करता है।

मुझे पता नहीं था कि मोंगोडीबी के पास प्रश्नों को कैश करने का कोई तरीका है, वास्तव में यह कैश के लिए ओएस 'एलआरयू का उपयोग करता है क्योंकि यह स्मृति प्रबंधन स्वयं नहीं करता है।

तब तक जब तक आपका कामकाजी सेट एलआरयू में फिट बैठता है, ओएस के बिना इसे पृष्ठ से बाहर या लगातार स्वैप करना पड़ता है तो आपको इस क्वेरी को स्मृति से ज्यादातर बार पढ़ना चाहिए। तो, हाँ, मोंगोडीबी कैश कर सकता है लेकिन तकनीकी रूप से यह नहीं करता है; ओएस करता है।

असल में उन प्रश्नों में से 99 कंप्यूटर की बर्बादी हैं।

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

कैशिंग विषय एक बड़े विषय पर जाता है जो कि पूर्व-समेकित मोंगोडीबी/मेमकैच/रेडिस आदि में कैशिंग प्रश्नों से लेकर एचटीएमएल और अन्य वेब संसाधनों को कैश करने के लिए सर्वर अंत में जितना संभव हो उतना कम काम करने के लिए होता है।

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

मैं सुझाव है कि आप अच्छा स्कीमा डिजाइन और सूचकांक निर्माण पर कुछ लिंक पढ़ें:

एक स्थिर, कैश किए गए HTML को Nginx जैसे कुछ के साथ बनाना पसंद नहीं है, क्योंकि मैं हर बार टोरनाडो द्वारा व्यक्तिगत पृष्ठ प्रस्तुत करना चाहता हूं।

हां, मैं क्वेरी कैशिंग आप पूर्व परिपक्वता अनुकूलित कर रहे हैं, खासकर यदि आप दूर ले नहीं करना चाहती, क्या आपके सर्वर हर बार पर भार का 90% होगा के बारे में चिंता करने की कोशिश करके लगता है; पेज को लोड करना

मैं आपकी स्कीमा और इंडेक्स पर ध्यान केंद्रित करता हूं और फिर आपको वास्तव में इसकी आवश्यकता होने पर कैशिंग के बारे में चिंता करता हूं।

+0

आपके उत्तर के लिए धन्यवाद! हालांकि मुझे लगता है कि जोश का जवाब मुझे और अधिक उपयुक्त बनाता है। लेकिन फिर भी मैं इंडेक्सिंग समस्या को देखता हूं। धन्यवाद :) –

+0

@MKYung हम्म एक मॉड्यूल है कि एक नया में स्मृति क्वेरी लेता है, उसके परिणामों (आईओ के कारण) का उपयोग कर एक नई सूची बना देता है और फिर उस सूची में अब दो संग्रह काफी एक ही डेटा जा रहा युक्त जिसका परिणाम पर एक प्रश्न बना देता है स्मृति में एक ही समय में जब तक एलआरयू को स्मृति को बाहर करने की आवश्यकता नहीं होती है ... मुझे उस मॉड्यूल का पूरा बिंदु दिखाई नहीं देता है लेकिन ठीक है :) – Sammaye

+1

हम ओपी के सवाल से नहीं जानते कि प्रत्येक पृष्ठ को उत्पन्न करने में कितना समय लगता है प्रदान की गई जानकारी से यह कहना संभव नहीं है कि क्या वह समय से पहले अनुकूलन या माइक्रो-अनुकूलन कर रहा है। – frankster