बैकस्ट्रीरी का एक बिट: मैं एक वेब एप्लिकेशन पर काम कर रहा हूं जिसके लिए उपयोगकर्ता को संपादन/कुशलतापूर्वक उपयोग करने से पहले इसे प्री/क्रंच डेटा के लिए काफी समय चाहिए। डेटा अनुरोध कार्य पूरा करने के लिए ~ 15/20 सेकंड और प्रक्रिया करने के लिए कुछ सेकेंड। एक बार वहां, उपयोगकर्ता फ्लाई पर वाउल्स में हेरफेर कर सकता है। मूल्यों में से किसी भी छेड़छाड़ के लिए डेटा को पूरी तरह से पुन: संसाधित करने की आवश्यकता होगी।मेमोरी में डेटा संग्रहीत करना: सत्र बनाम कैश बनाम स्टेटिक
अद्यतन: भ्रम से बचने के लिए, मैं केवल डेटा कॉल 1 बार (15 सेकंड हिट) बना रहा हूं और फिर परिणामों को स्मृति में रखना चाहता हूं ताकि उपयोगकर्ता इसे 100% इसके साथ काम किया। तो, पहली पुल में कुछ समय लगेगा, लेकिन, अजाक्स का उपयोग करके, मैं लगातार अपडेट करने के लिए इन-मेमोरी डेटा को हिट करने जा रहा हूं और प्रतिक्रिया समय को लगभग 2 सेकंड या इससे भी ज्यादा (मुझे आशा है)।
इस कुशल को बनाने के लिए, मैं इंटियल डेटा को स्मृति में ले जा रहा हूं और अजाक्स को सर्वर पर वापस कॉल कर रहा हूं ताकि मैं इस उपयोगकर्ता के अपडेट के पुनरावृत्ति को संभालने के लिए प्रसंस्करण समय को कम कर सकूं।
मेरा प्रश्न है, ध्यान में रखते हुए, इस डेटा को संग्रहीत करने का सबसे अच्छा तरीका क्या होगा, यह मानते हुए कि केवल 1 उपयोगकर्ता किसी भी समय इस डेटा को w/इस डेटा पर काम करेगा।
इसके अलावा, उपयोगकर्ता कुछ ही घंटों तक इस प्रक्रिया में संभावित रूप से काम कर सकता है। जब उपयोगकर्ता w/डेटा काम कर रहा है, तो मुझे उपयोगकर्ता के वर्तमान डेटा को सहेजने के लिए किसी प्रकार की असफलता की आवश्यकता होगी (या तो एक डीबी में या एक क्रमबद्ध बाइनरी फ़ाइल में) किसी भी तरह से उनके सत्र में बाधा डाली जानी चाहिए। दूसरे शब्दों में, मुझे ऐसे समाधान की आवश्यकता होगी जिसमें उचित हुक हो ताकि मुझे मेमोरी ऑब्जेक्ट के डेटा को डंप करने की अनुमति दी जा सके, जिससे उपयोगकर्ता बहुत लंबे समय से डिस्कनेक्ट/विचलित हो जाता है। एक उपयोगकर्ता को लॉक किया गया: - पेशेवरों
सत्र स्थिति:
अब तक, यहां मेरे चिंतन कर रहे हैं। सत्र अंत घटना है जो मेरी असफलता आवश्यकताओं को पूरा करेगी। विपक्ष: मेरे वर्तमान विकल्पों का सबसे धीमा perf। सत्र अंत घटना कभी-कभी यह सुनिश्चित करने के लिए मुश्किल होती है कि यह ठीक से आग लगती है।
कैशिंग - पेशेवर: अच्छा पेर्फ। निर्भरताओं तक पहुंच है जो लाइन के बाद बाद में बोनस हो सकती है लेकिन वर्तमान दायरे में वास्तव में उपयोगी नहीं है। विपक्ष: समय अंतराल के आधार पर एक लिखने के अलावा कोई आसान असफलता कदम नहीं। वैश्विक स्तर पर - यह सुनिश्चित करना होगा कि उपयोगकर्ता डब्ल्यू/एक-दूसरे के काम को टकराएं।
स्टेटिक - पेशेवर: सर्वश्रेष्ठ पेर्फ। बनाए रखने के लिए आसान है क्योंकि मैं सीधे अपने वर्तमान वर्ग संरचनाओं का लाभ उठा सकता हूं। विपक्ष: समय अंतराल के आधार पर एक लिखने के अलावा कोई आसान असफलता कदम नहीं। वैश्विक स्तर पर - यह सुनिश्चित करना होगा कि उपयोगकर्ता डब्ल्यू/एक-दूसरे के काम को टकराएं।
क्या किसी के पास मुझे चुनने के विकल्प पर कोई सुझाव/टिप्पणियां हैं?
धन्यवाद!
अपडेट: उल्लेख करने के लिए भूल गए, मैं इस कार्य को करने के लिए VB.Net, Asp.Net, और SQL सर्वर 2005 का उपयोग कर रहा हूं।
अपने कोड को अनुकूलित करने में समय बिताने के लिए आमतौर पर अपने सेवर को अपग्रेड करना सस्ता है। मेरा मानना है कि जेफ एटवुड ने हाल ही में अपने ब्लॉग पर इसके बारे में कुछ कहा था। – Malfist
मुझे लगता है कि मुझे और अधिक विशिष्ट w/प्रदर्शन होना चाहिए था। मुझे स्मृति उपयोग को संभालने वाले सर्वर के बारे में बहुत चिंता नहीं है, बल्कि, उपयोगकर्ता को मेरी प्रतिक्रिया वापस लेने में कितना समय लगेगा। – Nathan
आप किस भाषा/तकनीक का उपयोग कर रहे हैं? – nlaq