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

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

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

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

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

डेटाबेस मैनजमेंट सिस्टम (डीबीएमएस; उदाहरण के लिए, बर्नस्टीन एट अल 1987, वीकुम और वोसेन 2001), अन्य ट्रांसक्शन संबंधी वस्तुओं और संबंधित वितरित अनुप्रयोगों (उदाहरण के लिए, ग्रिड कंप्यूटिंग और क्लाउड कंप्यूटिंग) में समवर्ती नियंत्रण यह सुनिश्चित करता है कि डेटाबेस ट्रांसक्शन संबंधित डेटाबेस की डेटा अखंडता का उल्लंघन किए बिना समवर्ती रूप से किया जाता है। इस प्रकार समवर्ती नियंत्रण किसी भी प्रणाली में शुद्धता के लिए एक आवश्यक तत्व है जहां समय ओवरलैप के साथ निष्पादित दो या अधिक डेटाबेस ट्रांसक्शन्स, एक ही डेटा तक पहुंच सकते हैं, उदाहरण के लिए, वस्तुतः किसी भी सामान्य प्रयोजन डेटाबेस प्रणाली में। परिणाम स्वरुप, 1970 के दशक की प्रारंभ में डेटाबेस सिस्टम के उभरने के बाद से संबंधित अनुसंधान का एक विशाल संचय जमा हो गया है। डेटाबेस सिस्टम के लिए एक अच्छी तरह से स्थापित समवर्ती नियंत्रण सिद्धांत ऊपर उल्लिखित संदर्भों में उल्लिखित है: क्रमबद्धता सिद्धांत, जो समवर्ती नियंत्रण विधियों और मैकेनिज्मों को प्रभावी रूप से डिजाइन और विश्लेषण करने की अनुमति देता है। अमूर्त डेटा प्रकारों पर एटॉमिक ट्रांसक्शन के समवर्ती नियंत्रण के लिए एक वैकल्पिक सिद्धांत (लिंच एट अल. 1993) में प्रस्तुत किया गया है, और नीचे इसका उपयोग नहीं किया गया है। यह सिद्धांत अधिक परिष्कृत, समष्टि, व्यापक सीमा वाला है और उपरोक्त मौलिक सिद्धांत की तुलना में डेटाबेस साहित्य में इसका कम उपयोग किया गया है। प्रत्येक सिद्धांत के अपने पक्ष और विपक्ष, जोर और अंतर्दृष्टि होती है। कुछ सीमा तक वे पूरक हैं, और उनका विलय उपयोगी हो सकता है।

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

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

एटॉमिक ट्रांसक्शन की अवधारणा को वर्षों के समय व्यावसायिक ट्रांसक्शन मैनजमेंट तक विस्तारित किया गया है जो वास्तव में वर्कफ़्लो के प्रकारों को प्रयुक्त करता है और एटॉमिक नहीं हैं। चूँकि, ऐसे उन्नत ट्रांसक्शन भी समान्यत: घटकों के रूप में एटॉमिक ट्रांसक्शन का उपयोग करते हैं।

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

 * क्रमबद्धता या वितरित क्रमबद्धता को क्रमबद्धता में देखें

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

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

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

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

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

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

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