एप्लिकेशन
मुझे लगता है कि वर्तमान में ऑफ़लाइन कार्यक्षमता के लिए AppCache का उपयोग करता है के बाद से इस प्रणाली के उपयोगकर्ताओं दस्तावेज़ों को ऑफ़लाइन बनाने के लिए जरूरत है एक वेब अनुप्रयोग के साथ क्लाइंट-सर्वर डेटा सिंक कार्यक्षमता में सुधार। दस्तावेज़ को पहले ऑफ़लाइन बनाया गया है और जब इंटरनेट का उपयोग उपलब्ध है, तो उपयोगकर्ता "सिंक" पर क्लिक कर सकता है जो दस्तावेज़ को सर्वर पर भेज देगा और इसे एक संशोधन के रूप में सहेज देगा। अधिक विशिष्ट होने के लिए, ऐप परिवर्तन डेल्टा को एक संशोधन (सटीक फ़ील्ड संशोधित) के रूप में सहेजता नहीं है बल्कि पूरे दस्तावेज़ को पूरी तरह से सहेजता है। तो दूसरे शब्दों में, एक "स्नैपशॉट" दस्तावेज़ सहेजा जाता है।डेल्टा
समस्या
उपयोगकर्ता अलग ब्राउज़रों और उपकरणों और उनके दस्तावेजों पर काम से प्रवेश कर सकते हैं। जब वे "सिंक" पर क्लिक करते हैं, यदि सर्वर का दस्तावेज़ नया है, संपूर्ण क्लाइंट का संस्करण सर्वर द्वारा ओवरराइड किया जाएगा। यह एक मुख्य मुद्दा की ओर जाता है जिसे नीचे दी गई छवि में चित्रित किया गया है।
परिदृश्य ऊपर वर्तमान कार्यान्वयन जो डेल्टा (छोटे परिवर्तन) और नहीं बल्कि स्नैपशॉट संशोधन पर निर्भर करता है पर निर्भर नहीं करता के कारण होती है।
कुछ सवाल
1) मेरे शोध से पता चलता है कि मैं "सिंक" तंत्र डेल्टा में व्यक्त किया जा करने के लिए (छोटे परिवर्तन है कि स्वतंत्र रूप से लागू किया जा सकता) उन्नयन किया जाना चाहिए। क्या यह एक अच्छा दृष्टिकोण है?
2) क्या प्रत्येक डेल्टा को स्वतंत्र रूप से लागू किया जाना चाहिए?
2) मेरे शोध के अनुसार, संशोधन डेल्टा के पास संख्यात्मक मूल्य है और टाइमस्टैम्प नहीं है। इसके लिए मूल्य क्या होना चाहिए? मैं कैसे सुनिश्चित करूंगा कि सर्वर और ग्राहक दोनों सहमत हैं कि संशोधन संख्या क्या होनी चाहिए?
ढेर जानकारी
- दृश्यपटल (ऑफलाइन मोड)
- IndexedDB दस्तावेजों स्थानीय रूप से बचाने के लिए पर कोणीय
- Postgres बैकएंड में JSONB साथ डीबी
संबंधित: http://stackoverflow.com/questions/28797992/best-practices-in-syncing-data –
Git पहले से ही यह कर सकता है किसी भी तरह इसका इस्तेमाल एक उपयोगकर्ता दस्तावेज़ अंतर करने के लिए दिखाने के लिए। –
जैक वेड का जवाब आपके लिए सब कुछ बताता है। एक diff टूल/स्क्रिप्ट के साथ आप डेल्टा प्राप्त कर सकते हैं, जिनमें से अधिकांश में विवाद नहीं होना चाहिए (उदाहरण के लिए, समान पंक्तियां संपादित की गईं), और फिर आपको किसी भी विवाद को हल करने का सबसे अच्छा तरीका पता करना होगा (उदाहरण के लिए, हमारा, मैनुअल, मर्ज मर्ज , नवीनतम जीत, आदि)। –