ehcache - Caching Pattern: What do you call (and how do you replace) OpenSymphony OsCache "group" paradigm -
आपके कैश गुरुओं के लिए एक कैशिंग समस्या।
प्रसंग
हमने कई सालों तक ओपनसिंफोनी के ओस्काच का उपयोग किया है और एक बेहतर / मजबूत / तेज़ / सक्रिय रूप से विकसित कैशिंग उत्पाद पर जाकर विचार किया है।
समस्या
> हमने ओस्काच की "समूह प्रविष्टि" सुविधा का इस्तेमाल किया है और इसे कहीं और नहीं मिला है।
संक्षेप में, ओस्काच आपको 'प्रविष्टि प्रविष्टि समय' पर एक या अधिक समूहों को निर्दिष्ट करने की अनुमति देता है।
ओसकाच उदाहरण
इस पद्धति का उपयोग करते हुए यहां उदाहरण कोड है: बाद में आप "प्रविष्टियों का समूह" को अमान्य कर सकते हैं।
वस्तु [] समूह = {"स्तनपायी", "उत्तरी गोलार्ध", "क्लॉवेन-पैर"} myCache.put (myKey, myValue, समूह); // बाद में आप सभी "स्तनपायी" प्रविष्टियों को myCache.flushGroup ("स्तनपायी") // फ्लश कर सकते हैं या सभी 'क्लॉवेन-फ़ुट' myCache.flushGroup ("cloven-foot") को फ्लश कर सकते हैं
वैकल्पिक: मैटर तंत्र
हम एक पूर्व टीम के सदस्य द्वारा लिखी गई एक और घर-उगाही कैश का उपयोग करते हैं जो प्रविष्टियों को रद्द करने के लिए एक 'मुख्य मैचर' पैटर्न का उपयोग करता है
इस दृष्टिकोण से आप अपनी 'कुंजी' और मैचर वर्ग को निम्नानुसार परिभाषित कर सकते हैं:
सार्वजनिक वर्ग AnimalKey {String fRegion; स्ट्रिंग एफफ़ाइलम; स्ट्रिंग fFootType; ..खेल और सेटर्स यहां जाएं}
मैटचर:
सार्वजनिक वर्ग क्षेत्र मैचर आईसीकेके मैटर [स्ट्रिंग एफआरजीएन; सार्वजनिक क्षेत्र मैटर (स्ट्रिंग पेरेगियन) {fRegion = pRegion; } सार्वजनिक बूलियन है मैच (ओबीट पीके) {बूलियन बीएमच = झूठी; यदि (पशुकी के लिए पीकेई उदाहरण) {पशुकी कुंजी = (अननमल के) पीके); BMatch = (fRegion.equals (key.getRegion ());}}}
उपयोग:
myCache.put (नई पशुकी ("उत्तरी अमेरिका "," स्तनपाती "," चेवे-द-कूड "); // 'उत्तर अमेरिका' के लिए सभी प्रविष्टियों को हटा दें IKeyMatcher myMatcher = नया पशुकीमाचर (" उत्तरी अमेरिका "); myCache.removeMatching (myMatcher);
पूर्व>इस तंत्र का सरल क्रियान्वयन है, लेकिन इसका प्रदर्शन नकारात्मक है: किसी समूह को अमान्य करने के लिए प्रत्येक प्रविष्टि के माध्यम से स्पिन करनी पड़ती है। (हालांकि यह अभी भी डेटाबेस के जरिये कताई से तेज है)।
- ( चेतावनी: यह बेवकूफ लग सकता है) आप इस कार्यक्षमता कॉल क्या करते हैं? ओसकाच इसे " कैश समूह "। न तो जेबॉस्काच और एहकैच न तो परिभाषित या न ही इसे लागू करने के लिए प्रतीत नहीं होता। Realm? क्षेत्र? किंगडम?
- इस" कैश समूह / क्षेत्र "प्रतिमान के लिए मानक पैटर्न मौजूद हैं?
- बढ़ते-सितारा कैशिंग उत्पाद (जैसे एहकाचे, जुटना, जेबोस्केस) इस समस्या को कैसे नियंत्रित करते हैं
- यह प्रतिमान नहीं है Jcache कल्पना में, सही? (जेएसआर -107)
- आप कैसे "जन अमान्यता" को संभाल सकते हैं? कैश महान होते हैं जब तक वे बासी हो जाते हैं। एक एपीआई जिसकी मदद से आप व्यापक हड्डियों को अमान्य कर सकते हैं एक बड़ी मदद है (उदाहरण के लिए व्यवस्थापक एक बटन दबाएं और सभी कैश्ड पोस्ट प्रविष्टियों को एक विशेष मंच के लिए साफ़ करना चाहता है)
धन्यवाद
होगा
मैं भी एक एडवॉक अमान्य प्रक्रिया के साथ विरासत प्रणाली को मापने की कोशिश करते समय एक मैटचर दृष्टिकोण लागू किया ओ (एन) प्रकृति एक समस्या नहीं थी क्योंकि कैश छोटे थे, अवैध गैर-उपयोगकर्ता का सामना करना पड़ रहा धागा पर किया गया था, और यह ताले नहीं रखता था ताकि कोई दंड दंड न हो। कुर्सियों के खिलाफ मिलान करने के लिए यह आवश्यक था कि क्रॉस कट कैश, जैसे कि एक कंपनी के लिए सभी डेटा को आवेदन भर में फैले कैश में अमान्य करना।
जब हम इसे डोमेन सेवाओं के आधार पर दोबारा लिखते हैं, तो मैंने एक अलग रणनीति अपनाई थी, यह कोई डिजाइन केंद्र नहीं होने की समस्या थी, इसलिए आवेदन अखंड और खराब तरीके से विघटित हुआ। अब हमारे पास विशिष्ट कैश में केंद्रीकृत विशेष डेटा के लिए डोमेन था, जैसे कॉन्फ़िगरेशन के लिए, इसलिए यह बहु-लुकअप के लिए एक इच्छा बन गया। इस मामले में हमें एहसास हुआ कि कुंजी केवल मूल्य का एक सबसेट है, इसलिए हम मेटाडेटा (उदा। एनोटेशन) से लोड के बाद सभी चाबियाँ निकालें। यह हमारे कैश अमूर्त के माध्यम से ठीक ग्रैंडिंग ग्रुपिंग और एक सुविधाजनक प्रोग्रामिंग मॉडल के लिए अनुमत है। मैंने कोर डेटा संरचना, इंडेक्समैप को इस विचार पर एक ट्यूटोरियल में प्रकाशित किया है। इसका मतलब अमूर्त के बाहर प्रत्यक्ष उपयोग के लिए नहीं है, लेकिन बेहतर समूहीकरण समस्या का हम सामना करते हैं।
Comments
Post a Comment