चांगगॉग के रूप में MongoDB का उपयोग करते हुए दो प्रणालियों के बीच सिंक्रनाइज़ेशन


11

हम दो संबंधित प्रणालियों को विकसित कर रहे हैं। उनमें से एक (ए) हमारे ग्राहकों की मशीनों पर स्थापित किया जाएगा। शेष (B) का उपयोग मेरे संगठन द्वारा किया जाएगा।

प्रत्येक सिस्टम का अपना डेटाबेस (रिलेशनल) होता है और उनका स्कीमा अलग होता है। हालाँकि, दोनों सिस्टम को सिंक्रनाइज़ करना होगा। इसके अलावा, बी में कुछ बदलावों को सभी वर्ग ए सिस्टम और अन्य को केवल एक विशिष्ट निर्यात किया जाना है।

कुछ ग्राहकों के पास इंटरनेट कनेक्शन नहीं है इसलिए सिंक्रनाइज़ेशन, कुछ मामलों में, फ़ाइलों का आदान-प्रदान किया जाना चाहिए।

इसलिए, हम निम्नलिखित के रूप में इस समस्या को हल करने की योजना बना रहे हैं:

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

क्या यह दृष्टिकोण व्यवहार्य, स्केलेबल और सुरुचिपूर्ण है? आप क्या बदलाव या परिवर्धन करेंगे?


क्या आपने प्रतिकृति डेटा की सहायता के लिए DBMS से जुड़े किसी भी टूल को देखा है? कौन से DBMS शामिल हैं?
एडम ज़ुकरमैन

हम MySQL 5.5.8 का उपयोग कर रहे हैं। हमने कुछ उपकरण देखे हैं, लेकिन हमें लगता है कि वे हमारी आवश्यकताओं के अनुरूप नहीं हैं।
11:91 पर k91

एक नुकसान यह है कि ऑब्जेक्ट नीरस रूप से नहीं बढ़ते हैं।
कोडइन्चोस

जवाबों:


1

यदि आपने पहले से ही ऐसा नहीं किया है, तो आपको इवेंट-संचालित सिस्टम, इवेंट सोर्सिंग और अंतिम निरंतरता पर पढ़ना दिलचस्प लग सकता है। आप जिस सिस्टम का वर्णन कर रहे हैं, इन पैटर्न के साथ कई समानताएं हैं, जो एक अच्छी बात है।

आपका दृष्टिकोण अच्छा लगता है, विशेष रूप से:

  • एक आदेशित चेंगलॉग के उपयोग का अर्थ है कि सिंक्रोनाइज़ेशन प्रक्रिया केवल अंतिम परिवर्तन के बाद से किए गए परिवर्तनों को पुनः प्राप्त करने में सक्षम है। यह प्रसंस्करण समय को नीचे रखेगा जो स्केलेबिलिटी में मदद करता है और आपको उन मामलों में निकट-वास्तविक समय सिंक्रनाइज़ेशन बनाने की अनुमति देगा जहां इंटरनेट कनेक्टिविटी उपलब्ध है।
  • बिना इंटरनेट कनेक्शन के ग्राहक आपको त्वरित सिंक्रनाइज़ेशन पर भरोसा करने और अनजाने में स्केलेबिलिटी के मुद्दों को खत्म करने के बजाय अब विलंबित और आउट-ऑफ-ऑर्डर सिंक्रोनाइज़ेशन से निपटने के बारे में सोचने के लिए मजबूर करते हैं।

डोमेन मॉडल के बारे में अधिक जानकारी के बिना मेरा अनुमान है कि संघर्षों को हल करना वह हिस्सा है जो आपको सबसे ज्यादा परेशान करेगा। मैं यह सोचकर कुछ समय बिताऊंगा कि प्रत्येक प्रकार के संघर्ष को कैसे हल किया जाएगा। विशेष रूप से:

  • क्या कुछ संघर्षों को उपयोगकर्ता समाधान की आवश्यकता होगी?
  • क्या ग्राहक प्रणाली हमेशा संघर्षों को हल करने के लिए सही जगह होने जा रही है?
  • क्या चरण 4 के बाद सिस्टम बी में संघर्ष होना संभव है जब ग्राहक सिस्टम अपने परिवर्तन भेजता है?

0

प्रत्येक प्रणाली अपने डेटाबेस का एक चैंज बनाए रखती है। हम इसे MongoDB के साथ लागू करने की योजना बना रहे हैं।

आप एक इवेंटस्टोर का उपयोग कर सकते हैं । डेटा में कोई भी अपडेट स्टोर में एक नया ईवेंट बनाएगा।

जब कोई सिस्टम सिंक्रनाइज़ेशन प्रक्रिया को आरंभ करता है, तो यह लॉग से सभी किए गए परिवर्तनों को पुनः प्राप्त करता है। यदि सिस्टम B है, तो परिवर्तन गंतव्य की निर्भरता को पुनः प्राप्त करता है। फिर, सिस्टम उन्हें XML प्रारूप में क्रमबद्ध करता है और अंत में, उन्हें (एक फ़ाइल या नेटवर्क के माध्यम से) भेजता है।

आप घटनाओं को भेजने के लिए किसी भी तंत्र का उपयोग कर सकते हैं, लेकिन यदि संभव हो तो बस का उपयोग करना आसान होगा जहां आपको फाइलों से निपटना नहीं है। आमतौर पर ये संदेश भेजने के लिए कॉन्फ़िगर किए जा सकते हैं जब तक कि इसे भेजने के लिए कनेक्टिविटी उपलब्ध न हो।

जब दूसरे समापन बिंदु में परिवर्तन प्राप्त होता है, तो यह उन्हें अनसुना कर देता है। फिर, सिस्टम डेटा पर कुछ परिवर्तन करता है, जो आवश्यक हो सकता है, और अंत में, परिवर्तनों को रिकॉर्ड करता है। इस चरण में, यदि यह आवश्यक है, तो सिस्टम को उन संघर्षों को हल करना होगा जो मौजूद हो सकते हैं।

बस घटनाओं को अपने डोमेन ऑब्जेक्ट पर लागू करें।

अंतिम, रिसीवर सिस्टम अपने परिवर्तन (और संघर्ष समाधान के अन्य उत्पाद) भेजता है।

उसी दृष्टिकोण का उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.