2008-09-20 13 views
13

यह सवाल एनएचबीरनेट के दूसरे स्तर के कैश के लिए रीडवाइट और गैर-स्ट्रीट रीडवाइट कैश समवर्ती रणनीतियों के बीच अंतर के बारे में है।सख्त बनाम नॉनस्ट्रिट एनएचबेर्नेट कैश समेकन रणनीतियों

मैं यह समझ के रूप में, इन दो रणनीतियों के बीच का अंतर है जब आप एक वितरित दोहराया है प्रासंगिक है कैश - nonstrict गारंटी नहीं है कि एक कैश एक और कैश के रूप में ठीक उसी महत्व है, जबकि सख्त पढ़ने/लिखना चाहिए - कैश प्रदाता मानते हुए उचित वितरित लॉकिंग करता है।

जिस भाग को मैं समझ नहीं पा रहा हूं वह यह है कि जब आपके पास एक कैश होता है, या वितरित विभाजित (गैर प्रतिकृति) कैश होता है तो सख्त बनाम नॉनस्ट्रिट भेद प्रासंगिक होता है। क्या यह प्रासंगिक हो सकता है? ऐसा लगता है कि गैर प्रतिकृति परिदृश्यों में, टाइमस्टैम्प कैश यह सुनिश्चित करेगा कि पुराने परिणाम नहीं दिए जाते हैं। यदि यह प्रासंगिक हो सकता है, तो मैं एक उदाहरण देखना चाहता हूं।

उत्तर

18

जो भी आप मानते हैं वह सही है, एक लक्ष्य/थ्रेड वातावरण में थोड़ा अंतर है। हालांकि यदि आप कैश प्रदाताओं को देखते हैं तो बहु-थ्रेडेड परिदृश्य में भी थोड़ा सा चल रहा है।

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

गैर-सख्त में आपको गंदे पढ़ने की भी संभावना है, क्योंकि पढ़ने के समय कैश लॉक नहीं होता है, इसलिए आप आइटम में किसी अन्य धागे के परिवर्तन का परिणाम नहीं देख पाएंगे। सख्त में उस आइटम के लिए कैश कुंजी लॉक हो जाएगी और आपको आयोजित किया जाएगा लेकिन पूर्ण नवीनतम परिणाम देखेंगे।

तो, यहां तक ​​कि एक ही लक्ष्य वातावरण में, यदि वस्तुओं पर समवर्ती पढ़ने/संपादन की बड़ी मात्रा है तो आपके पास डेटा देखने का मौका है जो वास्तव में सटीक नहीं है।

यह एक समस्या बन जाती है जब एक सहेजा जाता है और एक संपादन स्क्रीन लोड हो रही है: व्यक्ति सोच रहा है कि वे ऑब्जेक्ट का नवीनतम संस्करण संपादित कर रहे हैं वास्तव में नहीं है, और वे एक अजीब आश्चर्य के लिए हैं वे संपादन को उनके द्वारा लोड किए गए पुराने डेटा में सहेजने का प्रयास करते हैं।

+0

धन्यवाद निक, यह बहुत उपयोगी था। मैंने गलती से माना कि टाइमस्टैम्प कैश गंदे पढ़ने को रोक देगा, लेकिन मैं देख सकता हूं कि कैसे कैश को लॉक किए बिना यह संभव नहीं है (जो नॉनस्ट्रिट नहीं करेगा)। –

+0

बहुत जानकारीपूर्ण, धन्यवाद। – ctrlplusb

2

मैंने मतभेदों को समझाते हुए here पोस्ट किया है। कृपया एक नज़र डालें और टिप्पणी करने के लिए स्वतंत्र महसूस करें।

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