हम दो संबंधित प्रणालियों को विकसित कर रहे हैं। उनमें से एक (ए) हमारे ग्राहकों की मशीनों पर स्थापित किया जाएगा। शेष (B) का उपयोग मेरे संगठन द्वारा किया जाएगा।
प्रत्येक सिस्टम का अपना डेटाबेस (रिलेशनल) होता है और उनका स्कीमा अलग होता है। हालाँकि, दोनों सिस्टम को सिंक्रनाइज़ करना होगा। इसके अलावा, बी में कुछ बदलावों को सभी वर्ग ए सिस्टम और अन्य को केवल एक विशिष्ट निर्यात किया जाना है।
कुछ ग्राहकों के पास इंटरनेट कनेक्शन नहीं है इसलिए सिंक्रनाइज़ेशन, कुछ मामलों में, फ़ाइलों का आदान-प्रदान किया जाना चाहिए।
इसलिए, हम निम्नलिखित के रूप में इस समस्या को हल करने की योजना बना रहे हैं:
- प्रत्येक प्रणाली अपने डेटाबेस का एक चैंज बनाए रखती है। हम इसे MongoDB के साथ लागू करने की योजना बना रहे हैं।
- जब कोई सिस्टम सिंक्रोनाइज़ेशन प्रक्रिया को आरंभ करता है, तो यह एक लॉग से सभी किए गए परिवर्तनों को पुनः प्राप्त करता है। यदि सिस्टम B है, तो पुनर्प्राप्त किए गए परिवर्तन गंतव्य पर निर्भर करते हैं। फिर, सिस्टम उन्हें XML प्रारूप में क्रमबद्ध करता है और अंत में, उन्हें (एक फ़ाइल या नेटवर्क के माध्यम से) भेजता है।
- जब दूसरे समापन बिंदु में परिवर्तन प्राप्त होता है, तो यह उन्हें अनसुना कर देता है। फिर, सिस्टम डेटा पर कुछ परिवर्तन करता है, जो आवश्यक हो सकता है, और अंत में, परिवर्तनों को रिकॉर्ड करता है। इस चरण में, यदि यह आवश्यक है, तो सिस्टम को उन संघर्षों को हल करना होगा जो मौजूद हो सकते हैं।
- अंतिम, रिसीवर सिस्टम अपने परिवर्तन (और संघर्ष समाधान के अन्य उत्पाद) भेजता है।
क्या यह दृष्टिकोण व्यवहार्य, स्केलेबल और सुरुचिपूर्ण है? आप क्या बदलाव या परिवर्धन करेंगे?