समवर्ती नियंत्रण

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

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

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

डेटाबेस में समवर्ती नियंत्रण
टिप्पणियाँ:
 * 1) यह अनुभाग सभी लेन-देन प्रणालियों पर लागू होता है, यानी, उन सभी प्रणालियों पर जो डेटाबेस लेनदेन (परमाणु लेनदेन) का उपयोग करते हैं; उदाहरण के लिए, सिस्टम प्रबंधन में लेनदेन संबंधी वस्तुएं और स्मार्टफोन के नेटवर्क में जो आम तौर पर निजी, समर्पित डेटाबेस लागू करते हैं सिस्टम), न केवल सामान्य प्रयोजन डेटाबेस प्रबंधन सिस्टम (डीबीएमएस)।
 * 2) डीबीएमएस को समवर्ती नियंत्रण मुद्दों से भी निपटने की ज़रूरत है जो न केवल डेटाबेस लेनदेन के लिए विशिष्ट हैं, बल्कि सामान्य रूप से ऑपरेटिंग सिस्टम के लिए भी हैं। ये मुद्दे (उदाहरण के लिए, नीचे कॉन्करेंसी कंट्रोल#ऑपरेटिंग सिस्टम में कंकरेंसी कंट्रोल देखें) इस अनुभाग के दायरे से बाहर हैं।

डेटाबेस प्रबंधन प्रणालियों में समवर्ती नियंत्रण (DBMS; उदाहरण के लिए, #Bern87|Bernstein et al. 1987, #Weikum01), अन्य डेटाबेस लेनदेन ऑब्जेक्ट, और संबंधित वितरित अनुप्रयोग (उदाहरण के लिए, ग्रिड कंप्यूटिंग और क्लाउड कम्प्यूटिंग ) यह सुनिश्चित करता है कि डेटाबेस लेनदेन संबंधित डेटाबेस की डेटा अखंडता का उल्लंघन किए बिना कॉन्करेंसी (कंप्यूटर विज्ञान) का प्रदर्शन किया जाता है। इस प्रकार समवर्ती नियंत्रण किसी भी प्रणाली में शुद्धता के लिए एक आवश्यक तत्व है जहां समय ओवरलैप के साथ निष्पादित दो या अधिक डेटाबेस लेनदेन, एक ही डेटा तक पहुंच सकते हैं, उदाहरण के लिए, वस्तुतः किसी भी सामान्य प्रयोजन डेटाबेस प्रणाली में। नतीजतन, 1970 के दशक की शुरुआत में डेटाबेस सिस्टम के उभरने के बाद से संबंधित अनुसंधान का एक विशाल भंडार जमा हो गया है। डेटाबेस सिस्टम के लिए एक अच्छी तरह से स्थापित समवर्ती नियंत्रण वैज्ञानिक सिद्धांत ऊपर उल्लिखित संदर्भों में उल्लिखित है: क्रमबद्धता, जो समवर्ती नियंत्रण विधियों और तंत्रों को प्रभावी ढंग से डिजाइन और विश्लेषण करने की अनुमति देता है। अमूर्त डेटा प्रकारों पर परमाणु लेनदेन के समवर्ती नियंत्रण के लिए एक वैकल्पिक सिद्धांत (#Lynch1993|Lynch et al. 1993) में प्रस्तुत किया गया है, और नीचे इसका उपयोग नहीं किया गया है। यह सिद्धांत अधिक परिष्कृत, जटिल, व्यापक दायरे वाला है और उपरोक्त शास्त्रीय सिद्धांत की तुलना में डेटाबेस साहित्य में इसका कम उपयोग किया गया है। प्रत्येक सिद्धांत के अपने पक्ष और विपक्ष, जोर और अंतर्दृष्टि होती है। कुछ हद तक वे पूरक हैं, और उनका विलय उपयोगी हो सकता है।

शुद्धता सुनिश्चित करने के लिए, एक डीबीएमएस आम तौर पर गारंटी देता है कि केवल सीरियलिज़ेबिलिटी लेनदेन अनुसूची (कंप्यूटर विज्ञान) उत्पन्न होती है, जब तक कि सीरियलिज़ेबिलिटी सीरियलिज़ेबिलिटी नहीं है#प्रदर्शन को बढ़ाने के लिए क्रमबद्धता को आराम देना, लेकिन केवल उन मामलों में जहां एप्लिकेशन की शुद्धता को नुकसान नहीं होता है. विफल (निरस्त) लेनदेन (जो हमेशा कई कारणों से हो सकता है) के मामलों में शुद्धता बनाए रखने के लिए शेड्यूल में क्रमबद्धता#शुद्धता - पुनर्प्राप्ति (निरस्त होने से) संपत्ति की भी आवश्यकता होती है। एक DBMS यह भी गारंटी देता है कि प्रतिबद्ध लेनदेन का कोई प्रभाव नहीं खोता है, और निरस्त (रोलबैक (डेटा प्रबंधन)) लेनदेन का कोई प्रभाव संबंधित डेटाबेस में नहीं रहता है। समग्र लेन-देन लक्षण वर्णन आमतौर पर नीचे दिए गए ACID नियमों द्वारा संक्षेपित किया गया है। चूंकि डेटाबेस वितरित डेटाबेस बन गए हैं, या वितरित वातावरण में सहयोग करने की आवश्यकता है (उदाहरण के लिए, 1990 की शुरुआत में फ़ेडरेटेड डेटाबेस, और वर्तमान में क्लाउड कंप्यूटिंग), समवर्ती नियंत्रण तंत्र के प्रभावी वितरण पर विशेष ध्यान दिया गया है।

डेटाबेस लेनदेन और ACID नियम
डेटाबेस लेनदेन (या परमाणु लेनदेन) की अवधारणा एक दोषपूर्ण वातावरण में एक अच्छी तरह से समझे गए डेटाबेस सिस्टम व्यवहार को सक्षम करने के लिए विकसित हुई है, जहां क्रैश किसी भी समय हो सकता है, और क्रैश से एक अच्छी तरह से समझे गए डेटाबेस स्थिति में पुनर्प्राप्ति दोनों को सक्षम करने के लिए विकसित किया गया है। डेटाबेस लेनदेन कार्य की एक इकाई है, जो आम तौर पर डेटाबेस पर कई परिचालनों को समाहित करती है (उदाहरण के लिए, डेटाबेस ऑब्जेक्ट को पढ़ना, लिखना, लॉक प्राप्त करना इत्यादि), डेटाबेस और अन्य प्रणालियों में समर्थित एक अमूर्त। प्रत्येक लेन-देन में अच्छी तरह से परिभाषित सीमाएँ होती हैं, जिसके संदर्भ में प्रोग्राम/कोड निष्पादन उस लेन-देन में शामिल होते हैं (लेन-देन के प्रोग्रामर द्वारा विशेष लेन-देन आदेशों के माध्यम से निर्धारित)। प्रत्येक डेटाबेस लेनदेन निम्नलिखित नियमों का पालन करता है (डेटाबेस सिस्टम में समर्थन द्वारा; यानी, एक डेटाबेस सिस्टम को उसके द्वारा चलाए जाने वाले लेनदेन की गारंटी देने के लिए डिज़ाइन किया गया है):
 * ' परमाणुता (डेटाबेस सिस्टम) ' - जब डेटाबेस लेनदेन पूरा हो जाता है (क्रमशः प्रतिबद्ध या निरस्त) तो या तो इसके सभी या किसी भी ऑपरेशन का प्रभाव नहीं रहता है (सभी या कुछ भी नहीं)। दूसरे शब्दों में, बाहरी दुनिया के लिए एक प्रतिबद्ध लेनदेन (डेटाबेस पर इसके प्रभाव से) अविभाज्य (परमाणु) प्रतीत होता है, और एक निरस्त लेनदेन डेटाबेस को बिल्कुल भी प्रभावित नहीं करता है। या तो सभी ऑपरेशन पूरे हो गए हैं या उनमें से कोई भी नहीं।
 * 'संगति (डेटाबेस सिस्टम)' - प्रत्येक लेनदेन को डेटाबेस को एक सुसंगत (सही) स्थिति में छोड़ना चाहिए, यानी, डेटाबेस के पूर्व निर्धारित अखंडता नियमों (डेटाबेस की वस्तुओं पर और उनके बीच की बाधाएं) को बनाए रखना चाहिए। लेन-देन को डेटाबेस को एक सुसंगत स्थिति से दूसरी सुसंगत स्थिति में बदलना होगा (हालाँकि, यह लेन-देन के प्रोग्रामर की ज़िम्मेदारी है कि वह यह सुनिश्चित करे कि लेन-देन स्वयं सही है, यानी, वह जो करना चाहता है उसे सही ढंग से निष्पादित करता है (एप्लिकेशन के दृष्टिकोण से) देखें) जबकि पूर्वनिर्धारित अखंडता नियम DBMS द्वारा लागू किए जाते हैं)। इस प्रकार चूंकि डेटाबेस को आम तौर पर केवल लेनदेन द्वारा ही बदला जा सकता है, इसलिए डेटाबेस की सभी स्थितियाँ सुसंगत होती हैं।
 * 'अलगाव (डेटाबेस सिस्टम)' - लेनदेन एक दूसरे के साथ हस्तक्षेप नहीं कर सकते (उनके निष्पादन के अंतिम परिणाम के रूप में)। इसके अलावा, आमतौर पर (समवर्ती नियंत्रण विधि के आधार पर) एक अपूर्ण लेनदेन के प्रभाव दूसरे लेनदेन पर भी दिखाई नहीं देते हैं। अलगाव प्रदान करना समवर्ती नियंत्रण का मुख्य लक्ष्य है।
 * 'स्थायित्व (डेटाबेस सिस्टम)' - सफल (प्रतिबद्ध) लेनदेन के प्रभाव क्रैश (कंप्यूटिंग) के माध्यम से बने रहने चाहिए (आमतौर पर लेनदेन के प्रभावों और इसकी प्रतिबद्ध घटना को गैर-वाष्पशील मेमोरी में रिकॉर्ड करके)।

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

समवर्ती नियंत्रण की आवश्यकता क्यों है?
यदि लेन-देन क्रमिक रूप से निष्पादित किया जाता है, अर्थात, समय में ओवरलैप किए बिना क्रमिक रूप से, तो कोई लेन-देन समवर्ती मौजूद नहीं होता है। हालाँकि, यदि इंटरलीविंग ऑपरेशंस के साथ समवर्ती लेनदेन को अनियंत्रित तरीके से अनुमति दी जाती है, तो कुछ अप्रत्याशित, अवांछनीय परिणाम हो सकते हैं, जैसे:
 * 1) खोई हुई अद्यतन समस्या: दूसरा लेन-देन पहले समवर्ती लेन-देन द्वारा लिखे गए पहले मान के शीर्ष पर डेटा-आइटम (डेटा) का दूसरा मान लिखता है, और पहला मान समवर्ती रूप से चलने वाले अन्य लेनदेन के लिए खो जाता है, जिनकी आवश्यकता होती है। प्राथमिकता, पहला मान पढ़ने के लिए। जिन लेन-देन में गलत मान पढ़ा गया है, उनका परिणाम गलत है।
 * 2) गंदी पढ़ने की समस्या: लेन-देन एक लेन-देन द्वारा लिखे गए मूल्य को पढ़ता है जिसे बाद में निरस्त कर दिया गया है। यह मान निरस्त होने पर डेटाबेस से गायब हो जाता है, और इसे किसी भी लेनदेन (गंदा पढ़ा) द्वारा नहीं पढ़ा जाना चाहिए। रीडिंग लेनदेन गलत परिणामों के साथ समाप्त होता है।
 * 3) गलत सारांश समस्या: जबकि एक लेनदेन दोहराए गए डेटा-आइटम के सभी उदाहरणों के मूल्यों पर सारांश लेता है, दूसरा लेनदेन उस डेटा-आइटम के कुछ उदाहरणों को अपडेट करता है। परिणामी सारांश दो लेन-देन (यदि एक को दूसरे से पहले निष्पादित किया जाता है) के बीच किसी भी (आमतौर पर शुद्धता के लिए आवश्यक) पूर्वता क्रम के लिए सही परिणाम नहीं दर्शाता है, बल्कि अपडेट के समय के आधार पर कुछ यादृच्छिक परिणाम दिखाता है, और क्या निश्चित है अद्यतन परिणामों को सारांश में शामिल किया गया है या नहीं।

अधिकांश उच्च-प्रदर्शन लेनदेन प्रणालियों को अपनी प्रदर्शन आवश्यकताओं को पूरा करने के लिए लेनदेन को समवर्ती रूप से चलाने की आवश्यकता होती है। इस प्रकार, समवर्ती नियंत्रण के बिना ऐसी प्रणालियाँ न तो सही परिणाम प्रदान कर सकती हैं और न ही अपने डेटाबेस को लगातार बनाए रख सकती हैं।

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

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

दो लेनदेन (जहां प्रत्येक एक दूसरे को अवरुद्ध करता है) या अधिक के बीच आपसी अवरोधन के परिणामस्वरूप गतिरोध उत्पन्न होता है, जहां शामिल लेनदेन रुक जाते हैं और पूर्ण नहीं हो पाते हैं। अधिकांश गैर-आशावादी तंत्र (अवरुद्ध करने के साथ) गतिरोध से ग्रस्त होते हैं जिन्हें एक रुके हुए लेनदेन को जानबूझकर निरस्त करने (जो उस गतिरोध में अन्य लेनदेन को मुक्त करता है) और इसके तत्काल पुनः आरंभ और पुन: निष्पादन द्वारा हल किया जाता है। गतिरोध की संभावना आम तौर पर कम होती है।

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

तरीके
समवर्ती नियंत्रण के लिए कई विधियाँ मौजूद हैं। उनमें से अधिकांश को उपरोक्त किसी भी मुख्य श्रेणी में लागू किया जा सकता है। प्रमुख विधियाँ, जिनमें से प्रत्येक के कई प्रकार हैं, और कुछ मामलों में ओवरलैप हो सकते हैं या संयुक्त हो सकते हैं, ये हैं:
 * 1) लॉकिंग (जैसे, दो-चरण लॉकिंग - 2PL) - डेटा को आवंटित लॉक (कंप्यूटर विज्ञान) द्वारा डेटा तक पहुंच को नियंत्रित करना। किसी अन्य लेनदेन द्वारा लॉक किए गए डेटा आइटम (डेटाबेस ऑब्जेक्ट) तक लेनदेन की पहुंच को लॉक रिलीज होने तक ब्लॉक किया जा सकता है (लॉक प्रकार और एक्सेस ऑपरेशन प्रकार के आधार पर)।
 * 2) क्रमबद्धता क्रमबद्धता#संघर्ष क्रमबद्धता का परीक्षण (जिसे क्रमबद्धता, या संघर्ष, या प्राथमिकता ग्राफ जांच भी कहा जाता है) - शेड्यूल के निर्देशित ग्राफ में चक्र (ग्राफ सिद्धांत) की जांच करना और उन्हें निरस्त करके तोड़ना।
 * 3) टाइमस्टैंप-आधारित समवर्ती नियंत्रण (टीओ) - लेनदेन के लिए टाइमस्टैंप निर्दिष्ट करना, और टाइमस्टैंप क्रम द्वारा डेटा तक पहुंच को नियंत्रित करना या जांचना।
 * 4) कमिटमेंट ऑर्डरिंग (या कमिट ऑर्डरिंग; सीओ) - प्रतिबद्ध घटनाओं के लेन-देन के कालानुक्रमिक क्रम को नियंत्रित करना या जांचना ताकि उनकी संबंधित क्रमबद्धता के साथ संगत हो#संघर्ष क्रमबद्धता का परीक्षण किया जा सके।

अन्य प्रमुख समवर्ती नियंत्रण प्रकार जिनका उपयोग उपरोक्त विधियों के संयोजन में किया जाता है उनमें शामिल हैं:


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

1970 के दशक के शुरुआती दिनों से ही डेटाबेस सिस्टम में सबसे आम तंत्र प्रकार दो-चरण लॉकिंग|मजबूत सख्त दो-चरण लॉकिंग (SS2PL; जिसे कठोर शेड्यूलिंग या कठोर 2PL भी कहा जाता है) रहा है। ) जो दो-चरण लॉकिंग (2पीएल) और प्रतिबद्धता आदेश (सीओ) दोनों का एक विशेष मामला (संस्करण) है। यह निराशावादी है. इसके लंबे नाम के बावजूद (ऐतिहासिक कारणों से) SS2PL तंत्र का विचार सरल है: लेन-देन समाप्त होने के बाद ही लेन-देन द्वारा लागू किए गए सभी ताले जारी करें। SS2PL (या कठोरता) उन सभी अनुसूचियों के सेट का नाम भी है जो इस तंत्र द्वारा उत्पन्न किए जा सकते हैं, यानी, इन SS2PL (या कठोरता) अनुसूचियों में SS2PL (या कठोरता) संपत्ति है।

समवर्ती नियंत्रण तंत्र के प्रमुख लक्ष्य
समवर्ती नियंत्रण तंत्र को सबसे पहले सही ढंग से संचालित करने की आवश्यकता होती है, यानी, प्रत्येक लेनदेन की अखंडता नियमों को बनाए रखने के लिए (जैसा कि समवर्ती से संबंधित है; एप्लिकेशन-विशिष्ट अखंडता नियम यहां दायरे से बाहर हैं) जबकि लेनदेन समवर्ती रूप से चल रहे हैं, और इस प्रकार संपूर्ण लेनदेन प्रणाली की अखंडता. यथासंभव अच्छे प्रदर्शन के साथ शुद्धता हासिल की जानी चाहिए। इसके अलावा, लेन-देन प्रक्रिया (कंप्यूटिंग), कंप्यूटर और संगणक संजाल  पर वितरित लेनदेन होने पर प्रभावी ढंग से संचालित करने की आवश्यकता बढ़ती जा रही है। अन्य विषय जो समवर्ती नियंत्रण को प्रभावित कर सकते हैं वे हैं डेटा पुनर्प्राप्ति और प्रतिकृति (कंप्यूटर विज्ञान)।

क्रमबद्धता
शुद्धता के लिए, अधिकांश समवर्ती नियंत्रण तंत्रों का एक सामान्य प्रमुख लक्ष्य क्रमबद्धता संपत्ति के साथ शेड्यूल (कंप्यूटर विज्ञान) उत्पन्न करना है। क्रमबद्धता के बिना अवांछनीय घटनाएं घटित हो सकती हैं, उदाहरण के लिए, खातों से पैसा गायब हो सकता है, या कहीं से भी उत्पन्न हो सकता है। किसी शेड्यूल की 'क्रमबद्धता' का अर्थ समान लेन-देन के साथ कुछ सीरियल शेड्यूल के समतुल्यता (परिणामी डेटाबेस मानों में) है (यानी, जिसमें लेनदेन समय में ओवरलैप के बिना अनुक्रमिक होते हैं, और इस प्रकार एक दूसरे से पूरी तरह से अलग होते हैं: किसी के द्वारा कोई समवर्ती पहुंच नहीं) एक ही डेटा पर दो लेनदेन संभव है)। क्रमबद्धता को डेटाबेस लेनदेन के बीच अलगाव (डेटाबेस सिस्टम) का उच्चतम स्तर और समवर्ती लेनदेन के लिए प्रमुख शुद्धता मानदंड माना जाता है। समझौता किए गए कुछ मामलों में, क्रमबद्धता#क्रमबद्धता की शिथिलता को बेहतर प्रदर्शन के लिए अनुमति दी जाती है (उदाहरण के लिए, लोकप्रिय स्नैपशॉट अलगाव तंत्र) या अत्यधिक वितरित सिस्टम में उपलब्धता आवश्यकताओं को पूरा करने के लिए (अंतिम स्थिरता देखें), लेकिन केवल तभी जब एप्लिकेशन की शुद्धता का उल्लंघन नहीं किया जाता है छूट (उदाहरण के लिए, पैसे के लेनदेन के लिए कोई छूट की अनुमति नहीं है, क्योंकि छूट से पैसा गायब हो सकता है, या कहीं से भी प्रकट हो सकता है)।

लगभग सभी कार्यान्वित समवर्ती नियंत्रण तंत्र क्रमबद्धता #दृश्य और संघर्ष क्रमबद्धता प्रदान करके क्रमबद्धता प्राप्त करते हैं, क्रमबद्धता का एक व्यापक विशेष मामला (यानी, यह अधिकांश क्रमबद्ध शेड्यूल को कवर करता है, सक्षम बनाता है, और महत्वपूर्ण अतिरिक्त देरी पैदा करने वाली बाधाओं को लागू नहीं करता है) जिसे कुशलतापूर्वक कार्यान्वित किया जा सकता है.

पुनर्प्राप्ति

 * क्रमबद्धता#शुद्धता - क्रमबद्धता में पुनर्प्राप्ति देखें

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

समवर्ती नियंत्रण आम तौर पर निरस्त लेनदेन (जो हमेशा कई कारणों से हो सकता है) के मामलों में शुद्धता बनाए रखने के लिए शेड्यूल की क्रमबद्धता #शुद्धता - पुनर्प्राप्ति योग्यता सुनिश्चित करता है। 'पुनर्प्राप्ति' (निरस्त होने से) का अर्थ है कि शेड्यूल में किसी भी प्रतिबद्ध लेनदेन ने निरस्त लेनदेन द्वारा लिखे गए डेटा को नहीं पढ़ा है। ऐसा डेटा डेटाबेस से गायब हो जाता है (निरस्त होने पर) और गलत डेटाबेस स्थिति का हिस्सा होता है। ऐसे डेटा को पढ़ना ACID के संगति नियम का उल्लंघन करता है। क्रमबद्धता के विपरीत, किसी भी मामले में पुनर्प्राप्ति योग्यता से समझौता नहीं किया जा सकता है, क्योंकि किसी भी छूट के परिणामस्वरूप गर्भपात पर त्वरित डेटाबेस अखंडता का उल्लंघन होता है। ऊपर सूचीबद्ध प्रमुख विधियाँ क्रमबद्धता तंत्र प्रदान करती हैं। उनमें से कोई भी अपने सामान्य रूप में स्वचालित रूप से पुनर्प्राप्ति प्रदान नहीं करता है, और पुनर्प्राप्ति का समर्थन करने के लिए विशेष विचार और तंत्र संवर्द्धन की आवश्यकता होती है। पुनर्प्राप्ति योग्यता का आमतौर पर उपयोग किया जाने वाला विशेष मामला शेड्यूल (कंप्यूटर विज्ञान)#स्ट्रिक्ट है, जो विफलता से कुशल डेटाबेस पुनर्प्राप्ति की अनुमति देता है (लेकिन आशावादी कार्यान्वयन को शामिल नहीं करता है; उदाहरण के लिए, प्रतिबद्धता आदेश#सख्त सीओ (एससीओ)|स्ट्रिक्ट सीओ (एससीओ) का आशावादी कार्यान्वयन नहीं हो सकता है, लेकिन प्रतिबद्धता आदेश का इतिहास#अर्ध-आशावादी डेटाबेस अनुसूचक|अर्ध-आशावादी हैं)।

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

वितरण
कंप्यूटिंग के तेज़ तकनीकी विकास के साथ कम विलंबता वाले कंप्यूटर नेटवर्क या बस (कंप्यूटिंग) पर स्थानीय और वितरित कंप्यूटिंग के बीच अंतर धुंधला हो रहा है। इस प्रकार ऐसे वितरित वातावरणों में स्थानीय तकनीकों का काफी प्रभावी उपयोग आम है, उदाहरण के लिए, कंप्यूटर क्लस्टर और मल्टी-कोर प्रोसेसर में। हालाँकि, स्थानीय तकनीकों की अपनी सीमाएँ हैं और वे बड़े पैमाने पर मल्टी-प्रोसेसर (या मल्टी-कोर) द्वारा समर्थित मल्टी-प्रोसेस (या थ्रेड्स) का उपयोग करते हैं। यह अक्सर लेन-देन को वितरित लेन-देन में बदल देता है, यदि उन्हें स्वयं बहु-प्रक्रियाओं को फैलाने की आवश्यकता होती है। इन मामलों में अधिकांश स्थानीय समवर्ती नियंत्रण तकनीकें अच्छी तरह से स्केल नहीं करती हैं।

वितरित क्रमबद्धता और प्रतिबद्धता क्रम

 * Serializability#Distributed क्रमबद्धता को Serializability में देखें

चूंकि डेटाबेस सिस्टम वितरित डेटाबेस बन गए हैं, या वितरित वातावरण में सहयोग करना शुरू कर दिया है (उदाहरण के लिए, 1990 के दशक की शुरुआत में फ़ेडरेटेड डेटाबेस, और आजकल ग्रिड कंप्यूटिंग, क्लाउड कंप्यूटिंग और स्मार्टफ़ोन के साथ नेटवर्क), कुछ लेनदेन वितरित हो गए हैं। एक वितरित लेनदेन का मतलब है कि लेनदेन प्रक्रिया (कंप्यूटिंग) तक फैला हुआ है, और कंप्यूटर और भौगोलिक साइटों तक फैल सकता है। यह प्रभावी वितरित समवर्ती नियंत्रण तंत्र की आवश्यकता उत्पन्न करता है। एक वितरित प्रणाली के शेड्यूल की क्रमबद्धता संपत्ति को प्राप्त करना (देखें क्रमबद्धता#वितरित क्रमबद्धता और वैश्विक क्रमबद्धता (मॉड्यूलर क्रमबद्धता)) प्रभावी ढंग से विशेष चुनौतियों का सामना करता है जो आम तौर पर अधिकांश नियमित क्रमबद्धता तंत्रों द्वारा पूरी नहीं की जाती हैं, जो मूल रूप से स्थानीय रूप से संचालित करने के लिए डिज़ाइन की गई हैं। यह विशेष रूप से संचार और कंप्यूटर विलंबता (इंजीनियरिंग) के बीच समवर्ती नियंत्रण जानकारी के महंगे वितरण की आवश्यकता के कारण है। वितरण के लिए एकमात्र ज्ञात सामान्य प्रभावी तकनीक कमिटमेंट ऑर्डरिंग है, जिसे 1991 में (पेटेंट होने के बाद) सार्वजनिक रूप से प्रकट किया गया था। 'कमिटमेंट ऑर्डरिंग' (कमिट ऑर्डरिंग, सीओ; #Raz92) का अर्थ है कि प्रतिबद्ध घटनाओं के लेन-देन के कालानुक्रमिक क्रम को उनके संबंधित क्रमबद्धता#परीक्षण संघर्ष क्रमबद्धता के साथ संगत रखा जाता है। सीओ को समवर्ती नियंत्रण जानकारी के वितरण की आवश्यकता नहीं है और वितरित और वैश्विक क्रमबद्धता दोनों के लिए एक सामान्य प्रभावी समाधान (विश्वसनीयता इंजीनियरिंग, उच्च-प्रदर्शन और अनुमापकता ) प्रदान करता है, साथ ही डेटाबेस सिस्टम (या अन्य लेनदेन वस्तुओं) के साथ एक विषम वातावरण में भी। (कोई भी) समवर्ती नियंत्रण तंत्र। सीओ इस बात के प्रति उदासीन है कि किस तंत्र का उपयोग किया जाता है, क्योंकि यह किसी भी लेनदेन संचालन शेड्यूलिंग (जिसे अधिकांश तंत्र नियंत्रित करते हैं) में हस्तक्षेप नहीं करता है, और केवल प्रतिबद्ध घटनाओं के क्रम को निर्धारित करता है। इस प्रकार, CO वितरित और वैश्विक क्रमबद्धता प्राप्त करने के लिए अन्य सभी तंत्रों के कुशल वितरण और विभिन्न (किसी भी) स्थानीय तंत्र के मिश्रण के वितरण को भी सक्षम बनाता है। इस तरह के समाधान के अस्तित्व को 1991 तक असंभाव्य माना गया है, और कई विशेषज्ञों द्वारा बाद में भी, प्रतिबद्धता आदेश #सारांश की गलतफहमी के कारण (वैश्विक क्रमबद्धता #वैश्विक क्रमबद्धता में उद्धरण देखें)। सीओ का एक महत्वपूर्ण पक्ष-लाभ वैश्विक चक्रों द्वारा मतदान-गतिरोधों का प्रतिबद्धता आदेश#सटीक लक्षण वर्णन है। सीओ के विपरीत, वस्तुतः सभी अन्य तकनीकें (जब सीओ के साथ संयुक्त नहीं होती हैं) डेडलॉक#वितरित गतिरोध (जिसे वैश्विक गतिरोध भी कहा जाता है) का खतरा होता है, जिन्हें विशेष रूप से संभालने की आवश्यकता होती है। सीओ परिणामी शेड्यूल संपत्ति का नाम भी है: एक शेड्यूल में सीओ संपत्ति होती है यदि उसके लेनदेन की प्रतिबद्ध घटनाओं का कालानुक्रमिक क्रम संबंधित लेनदेन के क्रमबद्धता#परीक्षण संघर्ष क्रमबद्धता|प्राथमिकता (आंशिक) क्रम के साथ संगत है।

ऊपर उल्लिखित दो-चरण लॉकिंग सीओ का एक प्रकार (विशेष मामला) है और इस प्रकार वितरित और वैश्विक क्रमबद्धता प्राप्त करने के लिए भी प्रभावी है। यह स्वचालित रूप से वितरित गतिरोध समाधान (सीओ के प्रकाशन के बाद भी शोध साहित्य में अनदेखा तथ्य) प्रदान करता है, साथ ही कठोरता और इस प्रकार पुनर्प्राप्ति भी प्रदान करता है। ज्ञात कुशल लॉकिंग आधारित कार्यान्वयन के साथ इन वांछित गुणों का होना SS2PL की लोकप्रियता को स्पष्ट करता है। SS2PL का उपयोग 1980 के बाद से वितरित और वैश्विक क्रमबद्धता को कुशलतापूर्वक प्राप्त करने के लिए किया गया है, और यह इसके लिए वास्तविक मानक बन गया है। हालाँकि, SS2PL अवरुद्ध और बाधित (निराशावादी) है, और पारंपरिक डेटाबेस सिस्टम (उदाहरण के लिए, क्लाउड कंप्यूटिंग में) से भिन्न प्रणालियों के वितरण और उपयोग के प्रसार के साथ, CO के कम अवरोधक प्रकार (उदाहरण के लिए, प्रतिबद्धता आदेश#वितरित आशावादी CO) बेहतर प्रदर्शन के लिए DOCO)) की आवश्यकता हो सकती है।

'टिप्पणियाँ:'
 * 1) वितरित संघर्ष क्रमबद्धता संपत्ति को उसके सामान्य रूप में कुशलतापूर्वक हासिल करना मुश्किल है, लेकिन इसे इसके विशेष मामले वितरित सीओ के माध्यम से कुशलतापूर्वक हासिल किया जाता है: प्रत्येक स्थानीय घटक (उदाहरण के लिए, एक स्थानीय डीबीएमएस) को सीओ के कुछ रूप प्रदान करने और लागू करने दोनों की आवश्यकता होती है दो-चरण प्रतिबद्ध प्रोटोकॉल (2PC: वितरित लेनदेन करने के लिए उपयोग किया जाता है) के लिए विशेष वोट ऑर्डरिंग रणनीति। सामान्य वितरित CO से भिन्न, वितरित SS2PL प्रतिबद्धता आदेश#मजबूत सख्त दो चरण लॉकिंग (SS2PL) (प्रत्येक घटक में CO मौजूद है, निहित है, और वोट ऑर्डरिंग रणनीति अब स्वचालित रूप से पूरी हो जाती है)। इस तथ्य को 1980 के दशक से जाना और उपयोग किया गया है (यानी, CO के बारे में जाने बिना, SS2PL विश्व स्तर पर मौजूद है), कुशल वितरित SS2PL के लिए, जिसका अर्थ है वितरित क्रमबद्धता और कठोरता (उदाहरण के लिए, #Raz92, पृष्ठ 293 देखें; यह # में भी निहित है) बर्न87|बर्नस्टीन एट अल. 1987, पृष्ठ 78)। वितरित प्रतिबद्धता आदेश #स्ट्रिक्ट सीओ (एससीओ)|स्ट्रिक्ट सीओ (एससीओ), या एसएस2पीएल आधारित और एससीओ आधारित स्थानीय घटकों के मिश्रण से कम बाधित वितरित क्रमबद्धता और सख्ती को कुशलतापूर्वक प्राप्त किया जा सकता है।
 * 2) संदर्भों और प्रतिबद्धता क्रम के बारे में: (#बर्न87|बर्नस्टीन एट अल. 1987) 1990 में सीओ की खोज से पहले प्रकाशित किया गया था। सीओ अनुसूची संपत्ति को द हिस्ट्री ऑफ कमिटमेंट ऑर्डरिंग#डायनामिक एटोमिसिटी (#लिंच1993|लिंच एट अल) कहा जाता है। .1993, पृष्ठ 201)। CO का वर्णन (#Weikum2001, पृष्ठ 102, 700) में किया गया है, लेकिन विवरण आंशिक है और प्रतिबद्धता आदेश#सारांश|CO का सार गायब है। (#Raz92) CO एल्गोरिदम के बारे में पहला रेफरीड और प्रकाशन के लिए स्वीकृत लेख था (हालाँकि, समतुल्य गतिशील परमाणु संपत्ति के बारे में प्रकाशन 1988 से पता लगाया जा सकता है)। अन्य प्रतिबद्धता आदेश#संदर्भों का पालन किया गया। (बर्नस्टेईएन और नवागंतुक 2009) चार प्रमुख संगामिति नियंत्रण विधियों में से एक के रूप में CO पर ध्यान दें, और अन्य विधियों के बीच अंतर-संचालनीयता प्रदान करने की CO की क्षमता पर ध्यान दें।

वितरित पुनर्प्राप्ति
क्रमबद्धता के विपरीत, वितरित पुनर्प्राप्ति और वितरित सख्ती को सीधे तरीके से कुशलतापूर्वक प्राप्त किया जा सकता है, उसी तरह जिस तरह से वितरित सीओ प्राप्त किया जाता है: प्रत्येक डेटाबेस प्रणाली में उन्हें स्थानीय रूप से लागू किया जाना चाहिए, और दो-चरण प्रतिबद्ध प्रोटोकॉल के लिए वोट ऑर्डरिंग रणनीति को नियोजित करना होगा। (2पीसी; #रेज़92, पृष्ठ 307)।

जैसा कि ऊपर उल्लेख किया गया है, वितरित कठोरता (पुनर्प्राप्ति) और वितरित प्रतिबद्धता आदेश (क्रमबद्धता) सहित वितरित दो-चरण लॉकिंग, स्वचालित रूप से आवश्यक वोट ऑर्डरिंग रणनीति को नियोजित करती है, और प्रत्येक (स्थानीय) डेटाबेस सिस्टम में स्थानीय रूप से नियोजित होने पर (वैश्विक स्तर पर) हासिल की जाती है। (जैसा कि कई वर्षों से ज्ञात और उपयोग किया गया है; वास्तव में स्थानीयता को 2PC प्रतिभागी (#Raz92) की सीमा द्वारा परिभाषित किया गया है)।

वसूली
सभी सिस्टम विफलताओं से ग्रस्त हैं, और विफलता से डेटा पुनर्प्राप्ति को संभालना जरूरी है। उत्पन्न शेड्यूल के गुण, जो समवर्ती नियंत्रण तंत्र द्वारा निर्धारित होते हैं, पुनर्प्राप्ति की प्रभावशीलता और दक्षता को प्रभावित कर सकते हैं। उदाहरण के लिए, स्ट्रिक्टनेस प्रॉपर्टी (उपरोक्त कॉन्करेंसी कंट्रोल#रिकवरेबिलिटी अनुभाग में उल्लिखित) एक कुशल पुनर्प्राप्ति के लिए अक्सर वांछनीय होती है।

प्रतिकृति
उच्च उपलब्धता के लिए डेटाबेस ऑब्जेक्ट अक्सर प्रतिकृति (कंप्यूटर विज्ञान) होते हैं। एक ही डेटाबेस ऑब्जेक्ट की प्रतिकृतियों के अपडेट को सिंक्रनाइज़ रखने की आवश्यकता है। यह समवर्ती नियंत्रण के तरीके को प्रभावित कर सकता है (उदाहरण के लिए, ग्रे एट अल. 1996) ).

यह भी देखें

 * अनुसूची (कंप्यूटर विज्ञान)
 * अलगाव (कंप्यूटर विज्ञान)
 * वितरित समवर्ती नियंत्रण

संदर्भ

 * Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman (1987): Concurrency Control and Recovery in Database Systems (free PDF download), Addison Wesley Publishing Company, 1987, ISBN 0-201-10715-5
 * Gerhard Weikum, Gottfried Vossen (2001): Transactional Information Systems, Elsevier, ISBN 1-55860-508-8
 * Nancy Lynch, Michael Merritt, William Weihl, Alan Fekete (1993): Atomic Transactions in Concurrent and Distributed Systems , Morgan Kaufmann (Elsevier), August 1993, ISBN 978-1-55860-104-8, ISBN 1-55860-104-X
 * Yoav Raz (1992): "The Principle of Commitment Ordering, or Guaranteeing Serializability in a Heterogeneous Environment of Multiple Autonomous Resource Managers Using Atomic Commitment." (PDF), Proceedings of the Eighteenth International Conference on Very Large Data Bases (VLDB), pp. 292-312, Vancouver, Canada, August 1992. (also DEC-TR 841, Digital Equipment Corporation, November 1990)

ऑपरेटिंग सिस्टम में समवर्ती नियंत्रण
कंप्यूटर मल्टीटास्किंग ऑपरेटिंग सिस्टम, विशेष रूप से वास्तविक समय ऑपरेटिंग सिस्टम, को यह भ्रम बनाए रखने की आवश्यकता है कि उनके ऊपर चल रहे सभी कार्य एक ही समय में चल रहे हैं, भले ही किसी भी समय वास्तव में केवल एक या कुछ कार्य ही चल रहे हों। ऑपरेटिंग सिस्टम जिस हार्डवेयर पर चल रहा है उसकी सीमाएँ। जब सभी कार्य एक-दूसरे से स्वतंत्र हों तो ऐसी मल्टीटास्किंग काफी सरल होती है। हालाँकि, जब कई कार्य एक ही संसाधन का उपयोग करने का प्रयास करते हैं, या जब कार्य जानकारी साझा करने का प्रयास करते हैं, तो इससे भ्रम और असंगति पैदा हो सकती है। समवर्ती कंप्यूटिंग का कार्य उस समस्या को हल करना है। कुछ समाधानों में डेटाबेस में उपयोग किए जाने वाले लॉक के समान लॉक शामिल होते हैं, लेकिन वे गतिरोध जैसी अपनी समस्याएं पैदा करने का जोखिम उठाते हैं। अन्य समाधान नॉन-ब्लॉकिंग एल्गोरिदम और पढ़ें-कॉपी-अपडेट करें  हैं।

संदर्भ

 * Andrew S. Tanenbaum, Albert S Woodhull (2006): Operating Systems Design and Implementation, 3rd Edition, Prentice Hall, ISBN 0-13-142938-8