व्यापकता द्विआधारी क्रमांकन और राइट-फॉरवर्ड लॉगिंग के आधार पर इन-मेमोरी ऑब्जेक्ट मॉडल में एसीआईडी गुण प्रदान करने के लिए एक सरल तकनीक है। यह इस तरह काम करता है:
- एक स्नैपशॉट के साथ शुरू करो। ऑब्जेक्ट मॉडल को सीरियल करें और इसे एक फाइल पर लिखें।
- एक जर्नल फ़ाइल बनाएँ। ऑब्जेक्ट मॉडल में प्रत्येक कॉल के लिए, कॉल और उसके तर्कों को क्रमबद्ध करें।
- जब पत्रिका बहुत बड़ी हो जाती है, तो आप बंद कर रहे हैं, या यह अन्यथा सुविधाजनक है, एक चेकपॉइंट करें: एक नया स्नैपशॉट लिखें और जर्नल को अलग करें।
- क्रैश या पावर हिट से वापस रोल करने या पुनर्प्राप्त करने के लिए, अंतिम स्नैपशॉट लोड करें और जर्नल में दर्ज सभी कॉल को फिर से निष्पादित करें।
इस कार्य को करने के लिए आवश्यक सावधानियां हैं:
- परिवर्तनशील वस्तु संदर्भों को भागने न दें या व्यापकता परत में प्रवेश न करें। आपको किसी प्रकार की प्रॉक्सी या ओआईडी योजना की आवश्यकता है, जैसे कि आप आरपीसी कर रहे थे। (यह एक ऐसी आम नौसिखिया गलती है जिसे ' बपतिस्मा समस्या ' का उपनाम दिया गया है ।)
- एक कॉल से उपलब्ध सभी तर्क पूरी तरह से निर्धारक होना चाहिए, और व्यापार-तर्क-सार्थक I / O या OS कॉल नहीं करना चाहिए। डायग्नोस्टिक लॉग में लिखना शायद ठीक है, लेकिन सिस्टम का समय प्राप्त करना या अतुल्यकालिक प्रतिनिधि को लॉन्च करना आम तौर पर नहीं है। यह इसलिए है ताकि पत्रिका अलग-अलग मशीन पर या अलग समय पर बहाल हो जाए, भले ही वह पहचान फिर से प्रकाशित हो। (अधिकांश प्रचलन कोड लेनदेन टाइमस्टैम्प प्राप्त करने के लिए एक वैकल्पिक समय कॉल प्रदान करता है।)
- लेखक समचारिता, पत्रिका व्याख्या में अस्पष्टता का परिचय देता है, इसलिए यह निषिद्ध है।
क्या इसलिए कि ...
- लोग एक परियोजना है कि अच्छी तरह से अनुकूल नहीं था पर एक का उपयोग करने की कोशिश कर के बाद उनके लिए एक बुरी स्वाद विकसित * यह करने के लिए?
- क्लाऊस वुएस्टफेल्ड की कड़ी वकालत ने लोगों को ठुकरा दिया ?
- जो लोग प्रोग्रामिंग प्रोग्रामिंग मॉडल को पसंद करते हैं, वे I / O को गणना से अलग करना पसंद करते हैं, I / O के साथ इंटरलेव कम्प्यूटेशन और कॉलिंग थ्रेडिंग के बजाय प्राथमिकता देते हैं?
- व्यापकता की परतें वैचारिक रूप से सरल और इतनी सहज रूप से उस ढाँचे की विशेषताओं से जुड़ी होती हैं, जिसमें वे निवास करते हैं कि वे आमतौर पर इस परियोजना के लिए कस्टम-रोल किए जाते हैं, जो उन्हें बहुत अधिक विदेशी / अमानवीय / जोखिम भरा बनाता है?
- यह सिर्फ इतना है कि आप क्या करने के लिए सावधान रहना होगा सीधे रखने के लिए मुश्किल है?
- newbies के सिर बस विस्फोट करने के लिए प्रतीत होता है जब कुछ ऐसा होता है जो दो-स्तरीय डेटाबेस-संचालित ऐप के समान नहीं है जो उन्होंने स्कूल में लिखना सीखा है? ;)
* रैम में पूरे डेटा सेट फिट , आप लेखक संगामिति की जरूरत नहीं है, और आप एक डेटा गोदाम के लिए एड-हॉक क्वेरी, रिपोर्टिंग, या निर्यात करने की ज़रूरत नहीं है। SQLite के लिए माफी के साथ, प्रचलन बचत-फाइलों पर एक सुधार है, ओरेकल के लिए एक प्रतिस्थापन नहीं है।