लेन-देन क्रमबद्धता और अलगाव

यह पृष्ठ लेन-देन संबंधी डेटा विवाद, क्रमबद्धता और अलगाव का वर्णन करता है। लेन-देन कोड नमूनों के लिए, इसके बजाय लेन-देन और बैचेड राइट्स देखें।

लेन-देन और डेटा विवाद

किसी लेन-देन के सफल होने के लिए, उसके रीड ऑपरेशंस द्वारा पुनर्प्राप्त किए गए दस्तावेज़ों को लेन-देन के बाहर के ऑपरेशंस द्वारा असंशोधित रहना चाहिए। यदि कोई अन्य ऑपरेशन उन दस्तावेजों में से किसी एक को बदलने का प्रयास करता है, तो वह ऑपरेशन लेनदेन के साथ डेटा विवाद की स्थिति में प्रवेश करता है।

डेटा विवाद
जब दो या दो से अधिक ऑपरेशन एक ही दस्तावेज़ को नियंत्रित करने के लिए प्रतिस्पर्धा करते हैं। उदाहरण के लिए, एक लेन-देन के लिए दस्तावेज़ को सुसंगत बने रहने की आवश्यकता हो सकती है जबकि एक समवर्ती ऑपरेशन उस दस्तावेज़ के फ़ील्ड मानों को अद्यतन करने का प्रयास करता है।

क्लाउड फायरस्टोर किसी एक ऑपरेशन को विलंबित या विफल करके डेटा विवाद का समाधान करता है। क्लाउड फायरस्टोर क्लाइंट लाइब्रेरी स्वचालित रूप से उन लेनदेन का पुनः प्रयास करती है जो डेटा विवाद के कारण विफल हो जाते हैं। सीमित संख्या में पुनः प्रयास करने के बाद, लेनदेन ऑपरेशन विफल हो जाता है और एक त्रुटि संदेश देता है:

ABORTED: Too much contention on these documents. Please try again.

यह तय करते समय कि कौन सा ऑपरेशन विफल या विलंबित करना है, व्यवहार क्लाइंट लाइब्रेरी के प्रकार पर निर्भर करता है।

  • मोबाइल/वेब एसडीके आशावादी समवर्ती नियंत्रण का उपयोग करते हैं।

  • सर्वर क्लाइंट लाइब्रेरीज़ निराशावादी समवर्ती नियंत्रणों का उपयोग करती हैं।

मोबाइल/वेब एसडीके में डेटा विवाद

मोबाइल/वेब SDK (Apple प्लेटफ़ॉर्म, Android, वेब, C++) डेटा विवाद को हल करने के लिए आशावादी समवर्ती नियंत्रण का उपयोग करते हैं।

आशावादी समवर्ती नियंत्रण
इस धारणा के आधार पर कि डेटा विवाद की संभावना नहीं है या डेटाबेस लॉक रखना कुशल नहीं है। आशावादी लेनदेन अन्य परिचालनों को डेटा बदलने से रोकने के लिए डेटाबेस लॉक का उपयोग नहीं करते हैं।

मोबाइल/वेब एसडीके आशावादी समवर्ती नियंत्रणों का उपयोग करते हैं, क्योंकि वे उच्च विलंबता और अविश्वसनीय नेटवर्क कनेक्शन वाले वातावरण में काम कर सकते हैं। उच्च विलंबता वाले वातावरण में दस्तावेज़ों को लॉक करने से बहुत अधिक डेटा विवाद विफल हो जाएगा।

मोबाइल/वेब एसडीके में, एक लेनदेन लेनदेन के अंदर आपके द्वारा पढ़े गए सभी दस्तावेज़ों का ट्रैक रखता है। लेन-देन अपना लेखन कार्य तभी पूरा करता है जब लेन-देन के निष्पादन के दौरान उनमें से कोई भी दस्तावेज़ नहीं बदला गया हो। यदि कोई दस्तावेज़ बदल जाता है, तो लेन-देन हैंडलर लेन-देन का पुनः प्रयास करता है। यदि कुछ पुनः प्रयास के बाद लेन-देन को स्पष्ट परिणाम नहीं मिल पाता है, तो डेटा विवाद के कारण लेन-देन विफल हो जाता है।

सर्वर क्लाइंट लाइब्रेरीज़ में डेटा विवाद

सर्वर क्लाइंट लाइब्रेरी (C#, Go, Java, Node.js, PHP, Python, Ruby) डेटा विवाद को हल करने के लिए निराशावादी समवर्ती नियंत्रण का उपयोग करते हैं।

निराशावादी समवर्ती नियंत्रण
इस धारणा के आधार पर कि डेटा विवाद की संभावना है। निराशावादी लेनदेन अन्य कार्यों को डेटा को संशोधित करने से रोकने के लिए डेटाबेस लॉक का उपयोग करते हैं।

सर्वर क्लाइंट लाइब्रेरीज़ निराशावादी समवर्ती नियंत्रणों का उपयोग करती हैं, क्योंकि वे कम विलंबता और डेटाबेस से विश्वसनीय कनेक्शन मानते हैं।

सर्वर क्लाइंट लाइब्रेरीज़ में, लेन-देन उनके द्वारा पढ़े जाने वाले दस्तावेज़ों पर लॉक लगा देते हैं। किसी दस्तावेज़ पर लेन-देन का लॉक अन्य लेन-देन, बैच किए गए लेखन और गैर-लेन-देन संबंधी लेखन को उस दस्तावेज़ को बदलने से रोकता है। एक लेन-देन प्रतिबद्ध समय पर अपने दस्तावेज़ लॉक जारी करता है। यदि समय समाप्त हो जाता है या किसी कारण से विफल हो जाता है तो यह अपने ताले भी खोल देता है।

जब कोई लेनदेन किसी दस्तावेज़ को लॉक कर देता है, तो अन्य लेखन कार्यों को लेनदेन के लॉक जारी होने तक प्रतीक्षा करनी होगी। लेन-देन कालानुक्रमिक क्रम में अपने ताले प्राप्त करते हैं।

क्रमबद्ध अलगाव

लेन-देन के बीच डेटा विवाद डेटाबेस अलगाव स्तरों से निकटता से संबंधित है। डेटाबेस का अलगाव स्तर बताता है कि सिस्टम समवर्ती संचालन के बीच संघर्षों को कितनी अच्छी तरह संभालता है। निम्नलिखित डेटाबेस आवश्यकताओं से विरोध उत्पन्न होता है:

  • लेन-देन के लिए सटीक, सुसंगत डेटा की आवश्यकता होती है।
  • संसाधनों का कुशलतापूर्वक उपयोग करने के लिए, डेटाबेस समवर्ती रूप से संचालन निष्पादित करते हैं।

कम अलगाव स्तर वाले सिस्टम में, लेन-देन के भीतर एक रीड ऑपरेशन समवर्ती ऑपरेशन में अप्रतिबद्ध परिवर्तनों से गलत डेटा पढ़ सकता है।

क्रमबद्ध अलगाव उच्चतम अलगाव स्तर को परिभाषित करता है। क्रमबद्ध अलगाव का अर्थ है कि:

  • आप मान सकते हैं कि डेटाबेस श्रृंखला में लेनदेन निष्पादित करता है।
  • समवर्ती परिचालनों में अप्रतिबद्ध परिवर्तनों से लेन-देन प्रभावित नहीं होते हैं।

यह गारंटी तब भी कायम रहनी चाहिए जब डेटाबेस समानांतर में कई लेनदेन निष्पादित करता है। डेटाबेस को उन विवादों को हल करने के लिए समवर्ती नियंत्रण लागू करना होगा जो इस गारंटी को तोड़ देंगे।

क्लाउड फायरस्टोर लेनदेन के क्रमबद्ध अलगाव की गारंटी देता है। क्लाउड फायरस्टोर में लेन-देन को प्रतिबद्ध समय के अनुसार क्रमबद्ध और अलग किया जाता है।

प्रतिबद्ध समय के अनुसार क्रमबद्ध अलगाव

क्लाउड फायरस्टोर प्रत्येक लेनदेन को एक प्रतिबद्ध समय निर्दिष्ट करता है जो समय में एक बिंदु का प्रतिनिधित्व करता है। जब क्लाउड फायरस्टोर डेटाबेस में लेन-देन में बदलाव करता है, तो आप यह मान सकते हैं कि लेन-देन के भीतर सभी पढ़ने और लिखने ठीक प्रतिबद्ध समय पर होते हैं।

किसी लेन-देन के वास्तविक निष्पादन के लिए कुछ समय की आवश्यकता होती है। लेन-देन का निष्पादन प्रतिबद्ध समय से पहले शुरू होता है, और कई परिचालनों का निष्पादन ओवरलैप हो सकता है। क्लाउड फायरस्टोर क्रमबद्ध अलगाव को बरकरार रखता है और गारंटी देता है कि:

  • क्लाउड फायरस्टोर प्रतिबद्ध समय के अनुसार लेनदेन करता है।
  • क्लाउड फायरस्टोर लेनदेन को बाद के प्रतिबद्ध समय के साथ समवर्ती संचालन से अलग करता है।

समवर्ती परिचालनों के बीच डेटा विवाद के मामले में, क्लाउड फायरस्टोर विवाद को हल करने के लिए आशावादी और निराशावादी समवर्ती नियंत्रण का उपयोग करता है।

लेन-देन के भीतर अलगाव

लेन-देन अलगाव लेन-देन के भीतर लिखने के संचालन पर भी लागू होता है। लेन-देन के अंदर क्वेरीज़ और रीड्स उस लेन-देन के अंदर पिछले लेखन के परिणाम नहीं देखते हैं। यहां तक ​​कि अगर आप किसी लेन-देन के भीतर किसी दस्तावेज़ को संशोधित या हटाते हैं, तो उस लेन-देन में पढ़े गए सभी दस्तावेज़ लेन-देन के लिखने के संचालन से पहले, प्रतिबद्ध समय पर दस्तावेज़ का संस्करण लौटा देते हैं। यदि दस्तावेज़ तब मौजूद नहीं था तो रीड ऑपरेशन कुछ भी नहीं लौटाता।

डेटा विवाद से संबंधित मुद्दे

डेटा विवाद और उन्हें हल करने के तरीके के बारे में अधिक जानकारी के लिए समस्या निवारण पृष्ठ देखें।