पेपर सारांश: सगास

Feb 16 2023
एच. गार्सिया-मोलिना और के.
अनस्प्लैश पर नाथन रिले द्वारा फोटो

एच. गार्सिया-मोलिना और के. सलेम। 1987. सगास । डेटा के प्रबंधन पर 1987 ACM SIGMOD अंतर्राष्ट्रीय सम्मेलन की कार्यवाही में (SIGMOD '87)। कम्प्यूटिंग मशीनरी के लिए एसोसिएशन, न्यूयॉर्क, एनवाई, यूएसए, 249-259।

कीवर्ड: लंबी चलने वाली प्रक्रियाएं, सागा, लेन-देन, मुआवजा, विफलता शमन, विफलता सहनशीलता, विफलता पारदर्शिता

हालाँकि सागास पर मूल पेपर 35 साल पहले लिखा गया था, समस्या आज भी उतनी ही प्रासंगिक है। यह पोस्ट सगास की अवधारणा की उत्पत्ति की पड़ताल करती है, लंबे समय तक चलने वाली प्रक्रियाएँ जो कई डेटाबेस लेनदेन को फैलाती हैं।

परिचय

अपने पेपर सागास में , हेक्टर गार्सिया-मोलिना और केनेथ सलेम ने "लंबे समय तक चलने वाले" संचालन को लागू करने के लिए सागाओं की अवधारणा पेश की।

मोलिना और सलेम उन प्रक्रियाओं को संदर्भित करते हैं जिनमें "लघु-चलने" या "अल्पकालिक" प्रक्रियाओं के रूप में एक ही चरण शामिल होता है और ऐसी प्रक्रियाएं जिनमें "दीर्घकालिक" या "दीर्घकालिक" के रूप में कई चरण होते हैं। इसलिए, शॉर्ट-रनिंग या लॉन्ग-रनिंग भौतिक समय के बारे में एक कथन नहीं है, बल्कि तार्किक समय के बारे में एक कथन है, जिसमें प्रत्येक चरण क्लॉक टिक (चित्र 1) है।

चित्र 1 शॉर्ट-रनिंग और लॉन्ग-रनिंग

समस्या

एक पारिस्थितिकी तंत्र में जो बड़े पैमाने पर वितरित लेनदेन के विचार को अस्वीकार करता है या विस्तारित अवधि के लिए ताले रखता है, किसी भी लंबी चलने वाली प्रक्रिया को लंबे समय तक चलने वाले, वितरित लेनदेन के लिए मैप नहीं किया जा सकता है। इसके बजाय, हमें शॉर्ट-रनिंग, गैर-वितरित लेनदेन से लंबी चलने वाली प्रक्रियाओं को बनाने के लिए एक अलग तंत्र की आवश्यकता है।

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

हम चरण ए, बी, आदि के अनुक्रम को ट्रेस के रूप में संदर्भित करते हैं:

trace(P) = a • b • …

दूसरे शब्दों में: दो लेन-देन का एक क्रम लेन-देन नहीं है!

चित्र 2. दो लेन-देन की अनुक्रमिक संरचना अपने आप में एक लेन-देन नहीं है।

तुच्छ रूप से, यदि किसी प्रक्रिया में एकल लेन-देन होता है, तो प्रक्रिया लेनदेन की परमाणुता की गारंटी प्रदर्शित करती है (चित्र 3)।

चित्रा 3. एक प्रक्रिया पी में एक चरण होता है

हालाँकि, यदि किसी प्रक्रिया में कई लेन-देन होते हैं, तो प्रक्रिया लेनदेन की परमाणुता की गारंटी प्रदर्शित नहीं करती है: प्रक्रिया आंशिक रूप से निष्पादित हो सकती है (चित्र 4)।

चित्र 4. एक प्रक्रिया P में दो चरण a और b होते हैं

हालांकि, अन्य लेन-देन के विपरीत, एक प्रक्रिया का लेन-देन संबंधित है और इसे एक इकाई के रूप में निष्पादित किया जाना चाहिए, किसी प्रक्रिया का कोई भी आंशिक निष्पादन अवांछनीय है।

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

समाधान

पेपर लंबे समय तक चलने वाली प्रक्रियाओं को लागू करने के लिए एक प्रोटोकॉल सागास पेश करता है। सागा प्रोटोकॉल यह सुनिश्चित करता है कि एक प्रक्रिया परमाणु है, अर्थात, एक प्रक्रिया पूरी तरह से या बिल्कुल नहीं के बराबर समान रूप से निष्पादित होती है।

चित्रा 5. पिछड़े और आगे की वसूली

आंशिक निष्पादन को कम करने के लिए, एक प्रक्रिया आगे या पीछे की वसूली को लागू कर सकती है [2]:

फॉरवर्ड रिकवरी

आगे की विफलता पुनर्प्राप्ति विफलता शमन रणनीतियों को संदर्भित करती है जो सिस्टम को मध्यस्थ राज्य से एक राज्य में परिवर्तित करती है जो अंतिम स्थिति (प्रक्रिया को आगे बढ़ाना) के बराबर है।

बैकवर्ड रिकवरी

बैकवर्ड फेल्योर रिकवरी, विफलता शमन रणनीतियों को संदर्भित करती है जो सिस्टम को मध्यवर्ती स्थिति से एक राज्य में परिवर्तित करती है जो प्रारंभिक स्थिति के बराबर है (प्रक्रिया को पीछे की ओर ले जाना)।

बैकवर्ड रिकवरी और मुआवजा

बैकवर्ड रिकवरी को सक्षम करने के लिए, प्रत्येक प्रक्रिया को प्रत्येक चरण के लिए एक क्षतिपूर्ति चरण दर्ज करना चाहिए (चित्र 6)।

चित्र 6. लेन-देन sᵢ और मुआवजा cᵢ

क्षतिपूर्ति कदम पूर्ववत करता है - सिमेंटिक दृष्टिकोण से - चरण, लेकिन आवश्यक रूप से डेटाबेस को उस स्थिति में वापस नहीं करता है जो कदम शुरू होने पर मौजूद था। मुआवज़ा दुनिया को एक ऐसी स्थिति में बहाल कर देगा जो उस स्थिति के लिए एक स्वीकार्य सन्निकटन है जो लेनदेन की शुरुआत से पहले थी।

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

कार्यान्वयन

तो विफलता की अनुपस्थिति में, एक प्रक्रिया पी वांछित निशान उत्पन्न करती है

trace(P) = s₁ • s₂ • … sₙ • ✔️

trace(P) = s₁ • s₂ • … sᵢ • × • cᵢ … • c₂ • c₁ • ✔️

जब कोई विफलता एक सागा को बाधित करती है, तो एक सागा को अपनी वर्तमान स्थिति को पुनर्प्राप्त करने में सक्षम होना चाहिए और या तो आगे या पीछे की वसूली करनी चाहिए। इसलिए, एक गाथा को एक गाथा की शुरुआत, एक गाथा के पूरा होने, और रिकॉर्ड चौकियों और क्षतिपूर्ति को रिकॉर्ड करने में सक्षम होना चाहिए।

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

बहस

हालाँकि यह पेपर 35 साल पहले लिखा गया था, समस्या और प्रस्तावित समाधान के रूप में साग आज भी प्रासंगिक हैं। हालाँकि, डेटाबेस लेनदेन की रचना से लेकर सेवा आमंत्रण की रचना पर ध्यान दिया गया है।

ध्यान रखें कि सेवाएं लेन-देन के गुणों को प्रदर्शित नहीं करती हैं: सेवा आह्वान के बाद, सेवाएँ परमाणु नहीं हो सकती हैं, और यदि सेवा क्रैश हो जाती है, तो आपको पता नहीं चल सकता है कि सेवा प्रभावी हुई या नहीं।

इसलिए, आपको एक सेवा का आह्वान करने से पहले एक क्षतिपूर्ति कार्रवाई दर्ज करनी चाहिए और सेवा के प्रभावी होने या नहीं होने के लिए मुआवजा तर्क तैयार करना चाहिए।

निष्कर्ष

पेपर के प्रकाशन के बाद से सिद्धांत और व्यवहार में महत्वपूर्ण प्रगति के बावजूद सागा प्रासंगिक बने हुए हैं। लेन-देन या सेवाओं में वितरित वातावरण में परमाणुता को लागू करने के लिए एक प्रोटोकॉल के रूप में सागा की मूल अवधारणा, कागज में वर्णित तकनीकों का आज भी व्यापक रूप से उपयोग किया जाता है।

संदर्भ