कैश अनुप्रयोग के लिए MemoryMappedFile और बी-पेड़

यह सिर्फ एक विचार है, मेरे पास अभी तक कोई कोड नहीं है, मुझे कुछ डिज़ाइन सलाह चाहिए। मैं C# में MemoryMappedFile का उपयोग करके एक कैश (पहले उदाहरण में वितरित नहीं) लागू करता हूं। मुझे लगता है कि बी-पेड़ को एक अनावश्यक संरचना के रूप में रखना अच्छा होगा, लेकिन यह भी बहस योग्य है। तो सवाल यह है:

  • क्या बी-पेड़ तेजी से खोज वस्तुओं के लिए उपयोग करने के लिए एक अच्छी रणनीति है जब अनदेखा समर्थन स्मृति मैप की गई फाइल है?
  • स्मृति मैप की गई फ़ाइलों के साथ हमारे पास क्या युक्ति और चाल है? दृश्य कितना बड़ा हो सकता है, जब यह बहुत छोटा या बहुत बड़ा होता है तो क्या कमी होती है?
  • मल्टीथ्रेड विचार: हम मेमोरी मैप किए गए फ़ाइल और समवर्तीता से कैसे निपटते हैं? कैश को ग्राहकों द्वारा अत्यधिक हिट किया जाना चाहिए, कुछ प्रदर्शन करने के लिए कौन सी रणनीति बेहतर है?

जैसा कि @ आंतरिक सर्वर त्रुटि ने पूछा, मैं इस प्रश्न को एकीकृत करता हूं: कुंजी एक स्ट्रिंग होगी, लगभग 64 वर्ण अधिकतम लेन। डेटा एक बाइट [] लगभग 1024 बाइट लंबा होगा, लेकिन 128 बाइट्स पर औसत पर विचार करें, या बेहतर: मैं कैश करना चाहता हूं, ओआर/एम इकाइयां हैं, आइए मान लें कि बाइट्स में सीरियलाइज्ड इकाई कितनी देर बीएसओएन सीरियलाइज़र की तरह है ।

1
कुंजी एक स्ट्रिंग होगी, लगभग 64 वर्णों पर विचार करें। डेटा बाइट्स की एक सरणी हो सकती है: एक धारावाहिक इकाई, शायद 4 से 1k बाइट से कुछ।
जोड़ा लेखक Felice Pollano, स्रोत
@sehe आप सही हैं, मुझे mongodb पता है, लेकिन मैं अपनी परियोजना में कुछ एम्बेड करने योग्य चाहता हूँ
जोड़ा लेखक Felice Pollano, स्रोत
अपना खुद का रोल क्यों करें? couchdb, memcached, mongodb; स्पष्ट रूप से mongodb तेज़ है
जोड़ा लेखक sehe, स्रोत
डेटा कैशिंग आप कैशिंग कर रहे हैं? कुंजी किस प्रकार है? हम किस डेटा के बारे में बात कर रहे हैं?
जोड़ा लेखक 500 - Internal Server Error, स्रोत

1 उत्तर

  • बी-ट्री अच्छा है (स्मृति-मैप की गई फ़ाइलों के साथ), लेकिन अगर फ़ाइल हमेशा निवासी स्मृति में पूरी तरह से नहीं रखी जाती है तो पृष्ठ-संरेखित बी + वृक्ष बहुत बेहतर होता है। यह भी देखें
  • स्मृति-मैप की गई फ़ाइलों के साथ चाल 64-बिट आर्किटेक्चर का उपयोग करना है ताकि आप पूरी फ़ाइल को स्मृति में मैप कर सकें, अन्यथा आपको केवल भागों और कैश किए गए read को मानचित्र करना होगा। mmap s से
  • से तेज़ हो सकता है
  • साझा स्मृति पर सीएएस (तुलना-और-स्वैप) आज़माएं। यह भी देखें
1
जोड़ा
बहुत बहुत धन्यवाद, अच्छे संदर्भ भी।
जोड़ा लेखक Felice Pollano, स्रोत
शायद आपके लिए nosql-database.org पर कुछ सी # -pish है। या कुछ सी प्रोजेक्ट संदर्भ के रूप में कार्य कर सकता है।
जोड़ा लेखक ArtemGr, स्रोत