आप एक 'मुख्य' डेटाबेस सर्वर और कई 'सेकेंडरी' सर्वरों के बीच दो-तरफा सिंक्रनाइज़ेशन का प्रबंधन कैसे करते हैं, विशेष रूप से संघर्ष समाधान में, यह मानते हुए कि हमेशा कनेक्शन उपलब्ध नहीं है?
उदाहरण के लिए, मेरे पास एक मोबाइल ऐप है जो iOS पर CoreData को 'डेटाबेस' के रूप में उपयोग करता है और मैं उपयोगकर्ताओं को इंटरनेट कनेक्शन के बिना सामग्री को संपादित करने की अनुमति देना चाहूंगा। उसी समय, यह जानकारी एक वेबसाइट पर उपलब्ध होती है, जिससे डिवाइस कनेक्ट होंगे। यदि मैं दो DB सर्वर पर डेटा संघर्ष में है / तो क्या करूँ?
(मैं कोरडेटा को एक डीबी सर्वर के रूप में संदर्भित करता हूं, हालांकि मुझे पता है कि यह कुछ अलग है।)
क्या इस तरह के मुद्दे से निपटने के लिए कोई सामान्य रणनीति है? ये वे विकल्प हैं जिनके बारे में मैं सोच सकता हूं:
1. हमेशा क्लाइंट-साइड डेटा को उच्च-प्राथमिकता के रूप में उपयोग करें
2. सर्वर-साइड के लिए एक ही
। प्रत्येक फ़ील्ड के टाइमस्टैम्प को चिह्नित करके और नवीनतम संपादन करके संघर्षों को हल करने का प्रयास करें।
हालांकि मैं निश्चित हूं कि तीसरा विकल्प कुछ विनाशकारी डेटा भ्रष्टाचार के लिए कमरा खोलेगा।
मुझे पता है कि सीएपी प्रमेय इस पर चिंता करता है, लेकिन मैं केवल अंतिम स्थिरता चाहता हूं, इसलिए यह पूरी तरह से सही नहीं है?
संबंधित प्रश्न: दो-तरफ़ा डेटा सिंक्रनाइज़ेशन के लिए सर्वोत्तम अभ्यास पैटर्न । इस प्रश्न का दूसरा उत्तर यह कहता है कि यह शायद नहीं किया जा सकता है।