2012-10-29 16 views
8

मुझे Meteor ढांचे का उपयोग करके एक एप्लिकेशन बनाने में दिलचस्पी है जो लंबे समय तक (कई घंटे) नेटवर्क से डिस्कनेक्ट हो जाएगा। मेरा मानना ​​है कि उल्का एक मिनी-मोंगोड js संरचना में रैम में स्थानीय डेटा स्टोर करता है। यदि उपयोगकर्ता ब्राउज़र बंद कर देता है, या पृष्ठ को रीफ्रेश करता है, तो सभी स्थानीय परिवर्तन गुम हो जाते हैं। यह अच्छा होगा अगर स्थानीय परिवर्तन डिस्क पर बने रहे (localStorage? indexedDB?)। मेटियर के लिए जल्द ही आने वाला कोई मौका?डिस्कनेक्ट किए गए उल्का आवेदन

संबंधित प्रश्न ... मेटरॉर दस्तावेज़ विवादों से कैसे निपटता है? दूसरे शब्दों में, यदि 2 उपयोगकर्ता एक ही मोंगोडीबी JSON दस्तावेज़ संपादित करते हैं, तो यह संघर्ष कैसे हल हो जाता है? आशावादी लॉकिंग?

उत्तर

4

संघर्ष समाधान "अंतिम लेखक जीतता है"।

अधिक विशेष रूप से, प्रत्येक मोंगोडीबी एक आरपीसी में क्लाइंट मैप्स पर ऑपरेशन डालें/अपडेट/हटाएं। किसी दिए गए क्लाइंट से RPC हमेशा क्रम में वापस खेलते हैं। विभिन्न ग्राहकों से आरपीसी बिना किसी विशेष ऑर्डरिंग गारंटी के सर्वर पर इंटरलीव किए जाते हैं।

यदि कोई ग्राहक डिस्कनेक्ट होने पर RPC जारी करने का प्रयास करता है, तो उन आरपीसी क्लाइंट को फिर से कनेक्ट होने तक कतारबद्ध करते हैं, और फिर सर्वर पर वापस चलाते हैं। जब कई क्लाइंट ऑफलाइन आरपीसी निष्पादित कर रहे होते हैं, तो वे सर्वर पर आखिरकार चलाने वाले क्रम पर निर्भर करते हैं जब प्रत्येक क्लाइंट फिर से कनेक्ट होता है।

कुछ ऑफ़लाइन उत्परिवर्तनों जैसे मोंगोडीबी के $inc और $addToSet, यह मॉडल बहुत अच्छी तरह से काम करता है। लेकिन $set जैसे कई सामान्य संशोधक लंबे डिस्कनेक्ट में बहुत अच्छी तरह से व्यवहार नहीं करेंगे, क्योंकि उत्परिवर्तन अन्य ग्राहकों से हस्तक्षेप के साथ संघर्ष करेगा।

तो "ऑफ़लाइन" ऐप्स बनाना स्थानीय डेटाबेस को बनाए रखने से कहीं अधिक है। आपको आरपीसी को परिभाषित करने की भी आवश्यकता है जो कुछ प्रकार के संघर्ष समाधान को लागू करते हैं। आखिरकार हम टर्नकी पैकेज होने की उम्मीद करते हैं जो विभिन्न रिज़ॉल्यूशन योजनाओं को लागू करते हैं।

+0

यदि उल्का ओटी को बंडल (उदाहरण के लिए शेयरज) के रूप में जोड़ सकता है, तो संघर्ष बेहतर तरीके से हल किए जा सकते हैं। – TiansHUo

+0

मैं दूसरे भाग के उत्तर की सराहना करता हूं .. बिना किसी खराब/वायरलेस वायरलेस वाले एक्सपो में नाम/ईमेल संग्रह के लिए टैबलेट ऐप के उपयोग के मामले के बारे में कैसे? इस मामले में यह केवल संग्रह के लिए आवेषण है? कोई स्थानीय भंडारण कैसे जारी रखेगा, या किसी को भी इसकी आवश्यकता होगी? –

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