2009-05-04 7 views
5

प्रश्न: डेल्फी के लिए कैशिंग फ्रेमवर्क उपलब्ध हैं और वे कितने अच्छी तरह विकसित हुए हैं? यदि कोई नहीं है तो क्या वही उद्देश्य प्राप्त करने का व्यापक रूप से स्वीकार्य तरीका है? डेल्फी के Win32 लक्ष्यीकरण संस्करणों के लिए लागू।क्या डेल्फी के लिए कोई कैशिंग फ्रेमवर्क है?

प्रश्न विवरण:

  • पहले से संग्रहीत डेटा/वस्तु के लिए कैश की जाँच करें
  • प्राप्त करें: रूपरेखा है कि मैं के बारे में पूछताछ कर रहा हूँ के प्रकार के बड़े पैमाने पर वेब विकास चौखटे करने के लिए उपयोगकर्ता की अनुमति देता है में मौजूद है डेटा/ऑब्जेक्ट
  • नया डेटा/ऑब्जेक्ट
  • वैकल्पिक रूप से डेटा/ऑब्जेक्ट को टैग करें और लेबल करें।
  • कुछ मानदंडों (लेबल, टैग, समय सीमा आदि) के आधार पर डेटा/ऑब्जेक्ट का विस्तार करें।

मैं समझता हूँ RTTI बिना डेल्फी वस्तुओं के लिए प्रतिबिंब सेवाओं की कमी का मतलब है कि वे शायद काफी उसी तरह से अस्तित्व में नहीं होगा, लेकिन वहाँ एक और अधिक में एक ही अंतिम परिणाम के कम से कम हिस्सा प्राप्त करने की एक ऐसी ही रास्ता है कि डेल्फी रास्ता?

वैकल्पिक दृष्टिकोण: देशी डेल्फी लाइब्रेरी के विकल्प के रूप में: क्या उदाहरण के लिए memcached या कुछ समान के लिए बाइंडिंग का एक अच्छा सेट है?

उत्तर

4

मैंने लिनक्स पर memcached का उपयोग किया है (विंडोज और मैकोज़ के संस्करण हैं, साथ ही साथ लगभग किसी भी अन्य ओएस), यह काफी सरल है।

मैं इसे सीधे से निपटा, इंडी के TIDTelnet का उपयोग कर, प्रोटोकॉल के documentation पढ़कर, मैं केवल सेट इस्तेमाल किया, , हटाना मिलता है, और छोड़ दिया।,

[email protected]:~$ telnet 127.0.0.1 11211 
Trying 127.0.0.1... 
Connected to 127.0.0.1. 
Escape character is '^]'. 
set name 0 0 14 
Osama Alassiry 
STORED 
get name 
VALUE name 0 14 
Osama Alassiry 
END 
quit 

memcached आप कैश कुंजी प्रति 1 एमबी तक स्टोर करने के लिए अनुमति देता है मैं:

मैं आदेशों के इस प्रकार (मैं सेट और "नाम" मिलता है, 14 बाइट की संख्या संग्रहीत करने के लिए है) का इस्तेमाल किया 'व्यक्ति | 17 | नाम', 'व्यक्ति | 17 | चित्र', 'कर्मचारी | 7 | वेतन | मूल' (ये कल्पित नाम हैं जो मैंने वास्तव में किया था) से संबंधित समग्र कुंजी का उपयोग किया ... मैंने कुछ बाइनरी फाइलों को संग्रहित किया है कैश में बेस 64 के रूप में जो 768k बाइनरी डेटा का उपयोग करने की अनुमति देता है।

memcached भी कई सर्वरों पर कुंजी को हश करके वितरित किया जा सकता है, और उनके हैश पर आधारित कई सर्वरों में से एक का चयन कर सकते हैं।

+1

+1, मुझे लगता है कि यह अच्छी सलाह है। memcached एक स्थिर और अनुकूलित समाधान है, जो न केवल लिनक्स के लिए उपलब्ध है, बल्कि विंडोज और मैक ओएस एक्स के लिए भी उपलब्ध है। यदि प्रोटोकॉल स्तर पर ऐसा करना बहुत कठिन होगा, क्लाइंट लाइब्रेरीज़ (जैसे libmemcached) हैं जिन्हें डेल्फी प्रोग्राम द्वारा डीएलएल के रूप में उपयोग किया जा सकता है। – mghie

+1

यह बहुत आसान है, मैंने एक उदाहरण जोड़ा। मैंने केवल सेट का उपयोग किया और निकाला, हटा दिया, और छोड़ दिया। ऐसा करने के लिए मेरा अपना काम था। मैं डीएलएस जोड़ना पसंद नहीं करता। –

+0

मैं mghie से सहमत हूं - अब तक की सबसे अच्छी सलाह, प्रोटोकॉल को देखते हुए यह एक मौजूदा रैपर का उपयोग डीएलएल के रूप में करने या एक त्वरित डेल्फी रैपर बनाने के लिए बहुत अधिक काम नहीं करेगा। – jamiei

1

कैशिंग तंत्र को हाथ-रोलिंग की आवश्यकता है।

Splay Trees कैश किए गए ऑब्जेक्ट्स को संग्रहीत करने के लिए एक उपयोगी और सीधा तंत्र है, और यह भी पता लगा रहा है कि वे कितने बालों वाले हैं।

1

ये व्यवस्थाएं प्रदान कैशिंग के कुछ रास्ता वस्तुओं

अपने सटीक आवश्यकताओं के आधार पर, इन शीर्ष पर हो सकता है। यदि आप अपने स्वयं के समाधान को लागू करने का प्रयास करते हैं, तो मैं सुझाव दूंगा कि आप शुरुआती बिंदु के रूप में Jedi VCL में विभिन्न कंटेनर देखें।

+0

ये व्यवस्थाएं एक आवेदन पहले ही ऊपर से एक लेकिन अन्यथा का उपयोग कर, जैसा कि आप सही ढंग से कहा, एक हो सकता है के लिए उपयोगी हो सकता है शीर्ष पर थोड़ा सा। – jamiei

+1

- केबीएमडब्ल्यू, मिडवेयर, सूची अंतहीन है। –

1

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

1

ठीक है। मैं शायद इस बारे में मूर्ख महसूस करूँगा, लेकिन टीस्ट्रिंगलिस्ट के साथ क्या समस्या है? मैं एक स्ट्रिंग आईडी के आधार पर एक तत्व खोजने के लिए एक TStringList के साथ काफी संरचित डेटा की एक गतिशील सरणी का उपयोग कर रहा था। हाल ही में, मैंने TStringList को एक THashedStringList में अपडेट किया है। यह थोड़ा तेज़ हो सकता है, लेकिन अभी तक वास्तव में कुछ भी उल्लेखनीय नहीं है। स्ट्रिंगलिस्ट/ऐरे व्यवस्था ने अब तक मेरे आवेदन पर शानदार प्रदर्शन किया है।

मैं अभी तक 100 से 150 रिकॉर्ड कैश कर रहा हूं, लेकिन मुझे उम्मीद है कि यह शायद कुछ हज़ार तक ठीक काम करेगा। व्यवसाय में मैं हूं, यह एक बहुत बड़ा ऑपरेशन है।

+3

यह स्केल नहीं करता है। आपके पास (32 बिट) मशीन में 2 GByte रैम है। यह कुछ मिलियन रिकॉर्ड बनाता है। एक लाख रिकॉर्ड के साथ एक क्रमबद्ध स्ट्रिंगलिस्ट में, एक डालने का मतलब औसत 500000 पॉइंटर्स (2 एमबीटीई) पर एक ब्लॉक चाल है। एक स्ट्रिंग हैशिंग ओ (लंबाई) है। –

+0

सटीक आवश्यकताओं और बढ़ते पैटर्न और कोड के आधार पर लगभग 40000-200000 में tstringlist किक की व्यावहारिक सीमाएं। –

+0

टिप्पणी के लिए धन्यवाद। जैसा कि मैंने कहा, मैं पेरोल कार्यक्रम में लगभग 150 कर्मचारी रिकॉर्ड कैश कर रहा हूं। अगर मुझे 40,000 कर्मचारी मिलते हैं, तो मुझे विकल्पों पर विचार करना पड़ सकता है, लेकिन एक स्ट्रिंगलिस्ट उस रिकॉर्ड की संख्या के लिए एक महान कैशिंग तंत्र बनाता है जो मुझे लगता है कि मुझे देखने की संभावना है। – jrodenhi

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