मैं PHP और CodeIgniter का उपयोग कर चैट एप्लिकेशन बनाने के साथ खेल रहा हूं।चैट संदेशों के लिए डेटाबेस बफर के रूप में memcached का उपयोग
इसके लिए, मैं डेटाबेस में लोड को कम करने, स्मृति में सबसे हालिया चैट संदेशों को पकड़ने के लिए memcached के साथ एक कैश 'बफर' कार्यान्वित कर रहा हूं। मुझे क्या करना चाहते हैं यह है:
- जब ऐसा संदेश आता है, मैं कुंजी के रूप में वर्तमान मिनट (YYYY-MM-DD-HH-एम एम) का उपयोग memcached में सहेजें। कोई डेटाबेस I/O शामिल नहीं है। विचार यह है कि एक ही मिनट के सभी संदेश एक ही कुंजी के तहत एकत्र किए जाते हैं।
- उपयोगकर्ताओं को नए चैट संदेशों को भी memcached से प्राप्त किया जाता है (अब के लिए मैं लंबे मतदान का उपयोग कर रहा हूं, लेकिन यह स्पष्ट प्रदर्शन कारणों से Node.js के तहत WebSockets पर जायेगा)। फिर, कोई डेटाबेस I/O शामिल नहीं है।
- एक स्वचालित सर्वर स्क्रिप्ट (cronjob) पिछले 5 मिनट में memcached डेटा एकत्रित करने और डेटाबेस में संदेश डालने, हर 5 मिनट में एक बार चलाएगा।
- memcached वस्तुओं 6 मिनट के बाद बासी जाने के लिए तैयार कर रहे हैं, तो हम 5 मिनट प्रति एक डेटाबेस लिखने आपरेशन के लिए कुल
यह स्मृति में संदेश डेटा के अधिक से अधिक 6 मिनट रखने की जरूरत कभी नहीं और शून्य डेटाबेस पढ़ने के संचालन।
क्या यह ध्वनि व्यवहार्य है? क्या इस उद्देश्य के लिए memcached का उपयोग करने के लिए एक बेहतर (शायद यहां तक कि अंतर्निहित?) तरीका है?
अद्यतन: मैं एक छोटे से अब प्रयोग कर रहे हैं, और मैं एक शॉर्टकट (पढ़ें: हैक) के लिए एक विचार है। मैं संदेशों को अस्थायी रूप से Node.js सर्वर स्क्रिप्ट में 'बफर' कर सकता हूं जब तक कि मैं उन्हें स्टोर करने के लिए तैयार न हो। Node.js सर्वर में संदेशों का एक जावास्क्रिप्ट ऑब्जेक्ट/सरणी मूल रूप से एक स्मृति कैश है - प्रकार का।
तो: प्रत्येक एन संदेश/सेकंड, मैं जो भी तरीका चाहता हूं, मैं अपने डेटाबेस में buffered संदेश (जेएस सरणी की सामग्री) को पास कर सकता हूं, क्योंकि इसे अक्सर नहीं कहा जाएगा।
हालांकि, मुझे चिंता है कि यह नोड.जेएस सर्वर प्रक्रिया को अपंग कर सकता है, क्योंकि शायद यह 200 केबी सरणी के आसपास ले जाने का आनंद नहीं लेगा।
इस रणनीति पर कोई विचार? क्या यह पूरी तरह से पागल है?
टेक्नोलॉजीज इन्हें देखने के लिए: कॉमेट और एरलांग/जैबर (फेसबुक इनका उपयोग करें) या: एचटीएमएल 5 और वेब सॉकेट (फ्लैश सॉकेट फ़ॉलबैक के साथ - इनके लिए Google) –