एक ऑनलाइन कॉलेज बुकस्टोर ऐप है जहां कई छात्र किताबें खरीद सकते हैं। हर बार जब कोई छात्र लॉग ऑन करता है, तो यह उनके पिछले खरीद इतिहास के आधार पर सुझावों की एक सूची दिखाता है। ग्राहक डेटा संग्रहीत करने वाला SQL सर्वर सिएटल में है, लेकिन ये छात्र दुनिया भर से लॉग ऑन कर रहे हैं। इसलिए, प्रदर्शन प्रभावित हो सकता है और जो WAN से अधिक दूर हैं उन्हें प्रश्नों के लिए समय अंतराल का अनुभव हो सकता है।
दूर रहने वाले छात्रों को धीमी गति से पृष्ठ लोडिंग समय का सामना करने के बजाय, प्रतिकृति का उपयोग कई साइटों में डेटाबेस ऑब्जेक्ट की प्रतिलिपि बनाने और बनाए रखने के लिए किया जा सकता है और बाद में सिंक किया जा सकता है ताकि स्थिरता बनी रहे। प्रत्येक साइट डेटाबेस के उस हिस्से को रखती है जिसमें वह डेटा होता है जो उनके लिए सबसे अधिक प्रासंगिक होता है और सबसे अधिक बार उपयोग किया जाता है। अब, प्रत्येक छात्र वेबसाइट पर किताबें खरीद सकता है, और डेटा बाद में सिंक किया जाएगा।
डेटा प्रतिकृति कैसे काम करती है
कई सर्वर घटक हैं, और वे प्रतिकृति को लागू करने के लिए विभिन्न भूमिकाएँ निभाते हैं। एक प्रकाशक भूमिका एक डेटाबेस उदाहरण है जहां डेटा का स्रोत रहता है, और इसमें ऐसे ऑब्जेक्ट होते हैं जिन्हें प्रतिकृति लेख के रूप में डिज़ाइन किया गया है। इन लेखों को एक साथ समूहीकृत किया जाता है और एक प्रकाशन में प्रकाशित किया जाता है ताकि डेटा को एक इकाई के रूप में दोहराया जा सके। प्रकाशक के कई प्रकाशन हो सकते हैं।
एक वितरक भूमिका एक डेटाबेस उदाहरण है जो वितरण डेटाबेस रखता है। प्रत्येक प्रकाशक को एक एकल वितरण डेटाबेस में मैप किया जाता है जो प्रकाशक से प्रतिकृति डेटा संग्रहीत करता है जिसे ग्राहक को पास किया जाना है। वितरक को स्थानीय वितरक के रूप में स्थापित किया जा सकता है, जिसका अर्थ है कि एक सर्वर इंस्टेंस प्रकाशक और वितरक दोनों की भूमिकाओं में काम कर सकता है। यदि कोई वितरक अलग सर्वर पर कॉन्फ़िगर किया गया है, तो इसे दूरस्थ वितरक के रूप में संदर्भित किया जाता है।
एक ग्राहक भूमिका वह उदाहरण है जो प्रकाशनों की सदस्यता लेकर प्रतिरूपित डेटा प्राप्त करता है। ग्राहक सीमित नहीं है और एकाधिक प्रकाशकों से डेटा प्राप्त करने के योग्य है, और प्रतिकृति प्रकार के आधार पर ऑब्जेक्ट को अद्यतन किया जा सकता है। यदि लागू हो, तो प्रकाशक इन परिवर्तनों को ग्राहक से प्राप्त करेगा और डेटा को पुनः प्रकाशित करेगा।
सामान्य तौर पर, सब्सक्राइबर को डेटा में दो तरह से बदलाव प्राप्त होते हैं:पुश सब्सक्रिप्शन या पुल सब्सक्रिप्शन के माध्यम से। अंतर यह है कि सर्वर घटक अद्यतन करता है। पुश के साथ, डिस्ट्रीब्यूटर सब्सक्राइबर डेटाबेस को पुश या सीधे अपडेट करता है। पुल के साथ, ग्राहक वितरक के साथ यह देखने के लिए जांच करता है कि क्या कोई परिवर्तन हुआ है, और यह स्वयं अपडेट करेगा।
डेटा प्रतिकृति के तीन प्रकार
प्रतिकृति को लागू करने के लिए, कई एजेंटों का उपयोग परिवर्तनों की प्रतिलिपि बनाने, परिवर्तनों का ट्रैक रखने और डेटा वितरित करने से संबंधित कार्यों को करने के लिए किया जाता है। किन एजेंटों की जरूरत है यह इस्तेमाल किए गए प्रतिकृति के प्रकार पर निर्भर करता है। प्रतिकृति के तीन मुख्य प्रकार हैं।
<एच3>1. स्नैपशॉट प्रतिकृतिस्नैपशॉट प्रतिकृति डेटा प्रतिकृति का सबसे सरल प्रकार है और इसका उपयोग तब किया जाता है जब डेटा को अक्सर नहीं बदला जाता है या यदि डेटा की छोटी मात्रा को दोहराने की आवश्यकता होती है। उदाहरण के लिए, यदि ऐसी टेबल हैं जो बहुत अधिक अपडेट नहीं होती हैं, तो स्नैपशॉट एजेंटों का उपयोग शेड्यूल के अनुसार पूरे डेटाबेस को एक बार या बार-बार कॉपी करने के लिए किया जा सकता है। फिर, एक वितरण एजेंट इन फ़ाइलों को ग्राहक को स्थानांतरित करने के लिए जिम्मेदार होता है।
इस तकनीक को कम रखरखाव की आवश्यकता होती है क्योंकि जो वितरित किया जाता है वह समय पर एक विशिष्ट क्षण में डेटा का एक स्नैपशॉट होता है। साथ ही, परिवर्तनों की निगरानी करने की कोई आवश्यकता नहीं है क्योंकि हर बार जब कोई ग्राहक अपडेट प्राप्त करता है, तो यह डेटा की पूरी प्रतिलिपि को अधिलेखित कर देता है।
दुर्भाग्य से, पूरे डेटाबेस की प्रतिलिपि बनाने से उच्च विलंबता या वांछनीय से अधिक प्रतीक्षा में योगदान हो सकता है। स्नैपशॉट बनाने के लिए वस्तुओं पर ताले रखने की आवश्यकता होती है। यदि डेटा को बार-बार बदला जा रहा है और प्रदर्शन को प्रभावित करने की संभावना है, तो यह सुविधाजनक नहीं है—उदाहरण के लिए, यदि प्रकाशक के पास बहुत सारी सम्मिलित, अद्यतन और हटाने की गतिविधि है।
स्नैपशॉट बनाने के लिए स्नैपशॉट एजेंटों का उपयोग करने के अलावा, लेन-देन संबंधी प्रतिकृतियां वितरक पर चलने वाले लॉग रीडर एजेंटों का भी लाभ उठाती हैं। लॉग रीडर एजेंट प्रकाशक डेटाबेस के लेन-देन लॉग को पढ़ता है और संपूर्ण डेटाबेस पर प्रतीक्षा करने के बजाय केवल चिह्नित परिवर्तनों को वितरित करता है। यह लचीलापन प्रदान करता है क्योंकि यह आपको यह तय करने के लिए जगह देता है कि कितना डेटाबेस प्रकाशित करना है (उदाहरण के लिए, एक कॉलम)। फिर, वितरण एजेंट लेन-देन को ग्राहकों के पास ले जाता है, और जहां यह चलता है, क्रमशः पुश और पुल सदस्यता रणनीतियों को समायोजित करेगा।
<एच3>2. लेन-देन संबंधी प्रतिकृतिमानक लेन-देन प्रतिकृति का तात्पर्य है कि ग्राहक का डेटा केवल-पढ़ने के लिए है। हालाँकि, विभिन्न प्रकाशन प्रकार हैं जो ग्राहक में संशोधन करने की अनुमति देते हैं। यदि ये परिवर्तन किए जाते हैं, तो उन्हें पुनः प्रकाशित करने के लिए प्रकाशक को वापस भेजा जा सकता है। कतार रीडर एजेंट का उपयोग द्विदिश लेन-देन प्रतिकृति के लिए किया जाता है, और यह कतार से परिवर्तनों को पढ़ेगा और उन्हें प्रकाशक पर लागू करेगा।
सर्वर-टू-सर्वर वातावरण में लेन-देन संबंधी प्रतिकृति बहुत फायदेमंद है, जहां प्रकाशक और ग्राहक में वास्तविक समय में परिवर्तन किए जा सकते हैं-उदाहरण के लिए, एयरलाइन के लिए वर्तमान में कौन सी उड़ानें उपलब्ध हैं, इससे संबंधित रीयल-टाइम डेटा। इस मामले में स्नैपशॉट प्रतिकृति का उपयोग करने का कोई मतलब नहीं है क्योंकि अपडेट आमतौर पर प्रति दिन एक बार या शेड्यूल के अनुसार सिंक किए जाते हैं।
<एच3>3. प्रतिकृति मर्ज करेंमर्ज प्रतिकृति लेनदेन प्रतिकृति की तरह है, लेकिन यह ग्राहक और प्रकाशक दोनों के अपडेट को एक साथ मिलाने की अनुमति देता है। कई ग्राहक ऑफ़लाइन जा सकते हैं, अलग-अलग समय पर डेटा में अपडेट कर सकते हैं, और फिर ऑनलाइन वापस जा सकते हैं और बाद में उन परिवर्तनों को सिंक कर सकते हैं।
मोबाइल क्लाइंट जैसे सर्वर-टू-क्लाइंट परिवेशों में इस प्रकार की प्रतिकृति का उपयोग किए जाने की संभावना है। स्नैपशॉट और लेन-देन प्रतिकृति की तरह, स्नैपशॉट एजेंट द्वारा प्रारंभिक स्नैपशॉट बनाया जाता है, लेकिन फिर मर्ज एजेंट परिवर्तनों को ट्रैक करेगा और ट्रिगर के साथ विरोध का समाधान करेगा। यदि एक से अधिक सदस्य एक ही पंक्तियों को अपडेट कर रहे हैं, तो वे समस्या पैदा कर सकते हैं। इसलिए, संघर्ष समाधान के लिए जिम्मेदार होना चाहिए।