IMHO, फ़ंक्शनल रिएक्टिव प्रोग्रामिंग (FRP) एक तरह से कैश अमान्यकरण को हल करने का एक सामान्य तरीका है।
यहाँ क्यों है: FRP शब्दावली में बासी डेटा को एक गड़बड़ कहा जाता है । FRP का एक लक्ष्य ग्लिच की अनुपस्थिति की गारंटी देना है।
FRP को इस 'सार का सार' बात में और इस SO उत्तर में अधिक विस्तार से समझाया गया है ।
में बात करते हैंCell
एक कैश की गई वस्तु / इकाई का प्रतिनिधित्व करते हैं और एक Cell
अगर यह की निर्भरता में से एक ताज़ा किया जाता है ताज़ा किया जाता है।
एफआरपी निर्भरता ग्राफ के साथ जुड़े प्लंबिंग कोड को छुपाता है और सुनिश्चित करता है कि कोई बासी नहीं हैं Cell
।
एक और तरीका (एफआरपी से अलग) जो मैं सोच सकता हूं कि b
एक लेखक मोनाड के कुछ प्रकार में गणना मूल्य (प्रकार के ) को लपेट रहा है Writer (Set (uuid)) b
जहां Set (uuid)
(हास्केल अंकन) में उन सभी मूल्यों के पहचानकर्ता शामिल हैं जिन पर गणना मूल्य b
निर्भर करता है। तो, uuid
कुछ प्रकार की एक अद्वितीय पहचानकर्ता है जो कि परिवर्तनशील मूल्य / चर (डेटाबेस में एक पंक्ति कहते हैं) की पहचान करता है, जिस पर संकलन b
निर्भर करता है।
कॉम्बिनेटरों के साथ इस विचार को मिलाएं जो इस तरह के लेखक मोनाड पर काम करते हैं और हो सकता है कि यह किसी प्रकार के सामान्य कैश अमान्य समाधान का कारण बन सकता है यदि आप केवल नए की गणना करने के लिए इन कॉम्बिनेटर का उपयोग करते हैं b
। इस तरह के कॉम्बिनेटर (विशेष संस्करण कहते हैं filter
) राइटर मोनाड्स और (uuid, a)
-एस को इनपुट्स के रूप में लेते हैं, जहां a
एक म्यूटेबल डेटा / वैरिएबल होता है, जिसकी पहचान की जाती है uuid
।
इसलिए हर बार जब आप "मूल" डेटा बदलते हैं (uuid, a)
(एक डेटाबेस में सामान्यीकृत डेटा कहते हैं, जिसमें b
से गणना की गई थी) जिस पर प्रकार का परिकलित मान b
निर्भर करता है, तो आप उस कैश को अमान्य कर सकते हैं, जिसमें b
आपके द्वारा किसी भी मान a
को म्यूट किया जाता है जिस पर परिकलित b
मान निर्भर करता है , क्योंकि Set (uuid)
लेखक मोनाड में आधारित आप बता सकते हैं कि ऐसा कब होता है।
इसलिए जब भी आप किसी दिए गए किसी चीज को म्यूट करते हैं uuid
, तो आप इस म्यूटेशन को सभी कैश-एस पर प्रसारित कर देते हैं और वे उन मानों को अमान्य कर देते हैं, b
जो कहा जाने वाले म्यूटेबल वैल्यू पर निर्भर करते हैं, uuid
क्योंकि राइटर मोनाड जिस b
लिपटे हुए हैं, वह यह बता सकता है कि क्या b
कहा गया है uuid
या नहीं।
बेशक, यह केवल तभी भुगतान करता है जब आप लिखते हुए अधिक बार पढ़ते हैं।
एक तीसरा, व्यावहारिक, दृष्टिकोण डेटाबेस में भौतिकवादी दृश्य-एस का उपयोग करना और उन्हें कैश-एस के रूप में उपयोग करना है। AFAIK वे भी अमान्य समस्या को हल करने के लिए लक्ष्य। यह निश्चित रूप से उन परिचालनों को सीमित करता है जो उत्परिवर्तित डेटा को व्युत्पन्न डेटा से जोड़ते हैं।