कंसीडर कंट्रोल क्या है?
डेटाबेस मैनेजमेंट सिस्टम में कंसीडर कंट्रोल एक-दूसरे के साथ परस्पर विरोध किए बिना एक साथ संचालन के प्रबंधन की एक प्रक्रिया है। यह सुनिश्चित करता है कि डेटाबेस लेनदेन संबंधित डेटाबेस की डेटा अखंडता का उल्लंघन किए बिना सही परिणाम देने के लिए समवर्ती और सटीक रूप से किया जाता है।
यदि सभी उपयोगकर्ता केवल डेटा पढ़ रहे हैं, तो समवर्ती पहुँच काफी आसान है। ऐसा कोई तरीका नहीं है जिससे वे एक दूसरे के साथ हस्तक्षेप कर सकें। हालांकि किसी भी प्रैक्टिकल डाटाबेस के लिए, इसमें READ और WRITE ऑपरेशंस का मिश्रण होगा और इसलिए यह समालोचना एक चुनौती है।
DBMS Concurrency Control का उपयोग ऐसे संघर्षों को संबोधित करने के लिए किया जाता है, जो अधिकतर एक बहु-उपयोगकर्ता प्रणाली के साथ होते हैं। इसलिए, डेटाबेस प्रबंधन प्रणाली के समुचित कार्य के लिए कॉन्सैरेसी कंट्रोल सबसे महत्वपूर्ण तत्व है जहां दो या अधिक डेटाबेस लेनदेन एक साथ निष्पादित किए जाते हैं, जिसके लिए समान डेटा तक पहुंच की आवश्यकता होती है।
इस ट्यूटोरियल में, आप सीखेंगे
- कंसीडर कंट्रोल क्या है?
- कंसीडर की संभावित समस्याएं
- कंसीडर विधि का उपयोग क्यों करें?
- कॉनक्यूरेन्सी कंट्रोल प्रोटोकॉल
- लॉक-आधारित प्रोटोकॉल
- दो चरण लॉकिंग (2PL) प्रोटोकॉल
- टाइमस्टैम्प आधारित प्रोटोकॉल
- मान्यता आधारित प्रोटोकॉल
- अच्छे कॉन्सिलिटी प्रोटोकॉल के लक्षण
कंसीडर की संभावित समस्याएं
यहाँ, कुछ समस्याएँ हैं जिनका सामना आपको डीबीएमएस कंसीलर कंट्रोल विधि का उपयोग करते समय करना होगा:
- लॉस्ट अपडेट तब होता है जब एक से अधिक लेन-देन एक ही पंक्ति का चयन करते हैं और चयनित मूल्य के आधार पर पंक्ति को अपडेट करते हैं
- अनधिकृत निर्भरता समस्या तब होती है जब दूसरा लेन-देन एक पंक्ति का चयन करता है जिसे अन्य लेनदेन द्वारा अद्यतन किया जाता है ( गंदे पढ़े )
- गैर-दोहराने योग्य रीड तब होता है जब एक दूसरा लेनदेन एक ही पंक्ति को कई बार एक्सेस करने की कोशिश कर रहा है और हर बार अलग-अलग डेटा पढ़ता है।
- गलत सारांश समस्या तब होती है जब एक लेनदेन दोहराया डेटा-आइटम के सभी उदाहरणों के मूल्य पर सारांश लेता है, और दूसरा लेनदेन उस विशिष्ट डेटा-आइटम के कुछ उदाहरणों को अपडेट करता है। उस स्थिति में, परिणामी सारांश एक सही परिणाम नहीं दर्शाता है।
कंसीडर विधि का उपयोग क्यों करें?
कंसीडर कंट्रोल विधि का उपयोग करने का कारण DBMS है:
- परस्पर विरोधी लेनदेन के बीच आपसी बहिष्कार के माध्यम से अलगाव लागू करने के लिए
- पढ़ने-लिखने और लिखने-लिखने के विवादों को हल करने के लिए
- निष्पादन अवरोधों को लगातार संरक्षित करने के माध्यम से डेटाबेस की स्थिरता को संरक्षित करना
- प्रणाली को समवर्ती लेनदेन के बीच बातचीत को नियंत्रित करने की आवश्यकता है। यह नियंत्रण समवर्ती-नियंत्रण योजनाओं का उपयोग करके प्राप्त किया जाता है।
- कंज्यूरेबिलिटी को सुनिश्चित करने के लिए कंसीडर कंट्रोल मदद करता है
उदाहरण
मान लें कि एक ही फिल्म और एक ही शो के समय के लिए मूवी टिकट खरीदने के लिए दो लोग जो एक ही समय में इलेक्ट्रॉनिक कियोस्क पर जाते हैं।
हालाँकि, उस विशेष थिएटर में मूवी शो के लिए केवल एक सीट बची है। DBMS में कंसिस्टेंसी नियंत्रण के बिना, यह संभव है कि दोनों मूवीगो एक टिकट खरीदने का प्रयास करेंगे। हालाँकि, concurrency control method ऐसा नहीं होने देता है। दोनों मूवीगो अभी भी मूवी सीटिंग डेटाबेस में लिखी जानकारी तक पहुँच सकते हैं। लेकिन कंसीडर कंट्रोल केवल उस खरीदार को टिकट प्रदान करता है जिसने लेन-देन की प्रक्रिया पूरी की है।
कॉनक्यूरेन्सी कंट्रोल प्रोटोकॉल
अलग-अलग संगामिति नियंत्रण प्रोटोकॉल उनके द्वारा अनुमत संगति की मात्रा और ओवरहेड की मात्रा के बीच विभिन्न लाभ प्रदान करते हैं। डीबीएमएस में कंसीडर कंट्रोल तकनीक निम्नलिखित हैं:
- लॉक-आधारित प्रोटोकॉल
- दो चरण लॉकिंग प्रोटोकॉल
- टाइमस्टैम्प-आधारित प्रोटोकॉल
- मान्यता-आधारित प्रोटोकॉल
लॉक-आधारित प्रोटोकॉल
DBMS में लॉक आधारित प्रोटोकॉल एक ऐसा तंत्र है जिसमें कोई लेनदेन तब तक डेटा को पढ़ या लिख नहीं सकता है जब तक कि यह एक उपयुक्त लॉक प्राप्त नहीं करता है। लॉक आधारित प्रोटोकॉल एक उपयोगकर्ता के लिए किसी विशेष लेनदेन को लॉक या अलग करके एक साथ लेनदेन के लिए DBMS में संगामिति की समस्या को खत्म करने में मदद करते हैं।
लॉक एक डेटा वैरिएबल है जो डेटा आइटम के साथ जुड़ा हुआ है। यह लॉक दर्शाता है कि ऑपरेशन को डेटा आइटम पर किया जा सकता है। डीबीएमएस में ताले समवर्ती लेनदेन द्वारा डेटाबेस आइटम तक पहुंच को सिंक्रनाइज़ करने में मदद करते हैं।
सभी लॉक अनुरोध समवर्ती-नियंत्रण प्रबंधक के लिए किए जाते हैं। एक बार लॉक अनुरोध दिए जाने के बाद ही लेनदेन आगे बढ़ता है।
बाइनरी लॉक: किसी डेटा आइटम पर एक बाइनरी लॉक या तो लॉक या अनलॉक की गई स्थिति हो सकती है।
साझा / अनन्य: इस प्रकार का लॉकिंग तंत्र उनके उपयोग के आधार पर DBMS में ताले को अलग करता है। यदि राइट ऑपरेशन करने के लिए किसी डेटा आइटम पर एक लॉक प्राप्त किया जाता है, तो इसे एक विशेष लॉक कहा जाता है।
1. साझा ताला (एस):
एक साझा लॉक को रीड-ओनली लॉक भी कहा जाता है। साझा लॉक के साथ, लेनदेन के बीच डेटा आइटम साझा किया जा सकता है। ऐसा इसलिए है क्योंकि आपको डेटा आइटम पर डेटा अपडेट करने की अनुमति कभी नहीं होगी।
उदाहरण के लिए, ऐसे मामले पर विचार करें जहां दो लेनदेन किसी व्यक्ति के खाते की शेष राशि को पढ़ रहे हों। डेटाबेस उन्हें साझा लॉक लगाकर पढ़ने देगा। हालाँकि, यदि कोई अन्य लेन-देन उस खाते की शेष राशि को अपडेट करना चाहता है, तो साझा लॉक इसे पढ़ने की प्रक्रिया समाप्त होने तक रोकता है।
2. विशेष ताला (एक्स):
एक्सक्लूसिव लॉक के साथ, एक डेटा आइटम भी पढ़ा जा सकता है। यह अनन्य है और समान डेटा आइटम पर समवर्ती रूप से नहीं रखा जा सकता है। लॉक-एक्स इंस्ट्रक्शन का उपयोग करके एक्स-लॉक का अनुरोध किया जाता है। लेनदेन 'राइट' ऑपरेशन को पूरा करने के बाद डेटा आइटम को अनलॉक कर सकते हैं।
उदाहरण के लिए, जब लेनदेन को किसी व्यक्ति के खाते की शेष राशि को अपडेट करने की आवश्यकता होती है। आप इस पर एक्स लॉक लगाकर इस लेन-देन की अनुमति दे सकते हैं। इसलिए, जब दूसरा लेनदेन पढ़ना या लिखना चाहता है, तो अनन्य लॉक इस ऑपरेशन को रोकता है।
3. सरलीकृत लॉक प्रोटोकॉल
इस प्रकार के लॉक-आधारित प्रोटोकॉल लेन-देन को शुरू करने से पहले हर वस्तु पर लॉक प्राप्त करने की अनुमति देते हैं। लेनदेन 'राइट' ऑपरेशन को पूरा करने के बाद डेटा आइटम को अनलॉक कर सकते हैं।
4. प्री-क्लेम करना लॉकिंग
प्री-क्लेम लॉक प्रोटोकॉल संचालन का मूल्यांकन करने और आवश्यक डेटा आइटम की एक सूची बनाने में मदद करता है, जिन्हें निष्पादन प्रक्रिया शुरू करने की आवश्यकता होती है। उस स्थिति में जब सभी ताले दिए जाते हैं, लेनदेन निष्पादित होता है। इसके बाद, सभी लॉक तब रिलीज़ होते हैं जब इसके सभी ऑपरेशन समाप्त हो जाते हैं।
भुखमरी
भुखमरी वह स्थिति है जब एक ताला प्राप्त करने के लिए लेनदेन को अनिश्चित अवधि के लिए प्रतीक्षा करने की आवश्यकता होती है।
निम्नलिखित भुखमरी के कारण हैं:
- जब बंद वस्तुओं के लिए प्रतीक्षा योजना ठीक से प्रबंधित नहीं होती है
- संसाधन रिसाव के मामले में
- एक ही लेनदेन को बार-बार पीड़ित के रूप में चुना जाता है
गतिरोध
डेडलॉक एक विशिष्ट स्थिति को संदर्भित करता है जहां दो या दो से अधिक प्रक्रियाएं संसाधन जारी करने के लिए एक दूसरे की प्रतीक्षा कर रही हैं या दो से अधिक प्रक्रियाएं एक परिपत्र श्रृंखला में संसाधन की प्रतीक्षा कर रही हैं।
दो चरण लॉकिंग प्रोटोकॉल
दो चरण लॉकिंग प्रोटोकॉल जिसे 2PL प्रोटोकॉल के रूप में भी जाना जाता है, DBMS में एक संगामिति नियंत्रण की एक विधि है जो लेनदेन डेटा पर लॉक लगाकर क्रमबद्धता सुनिश्चित करता है जो समान डेटा तक पहुंचने के लिए अन्य लेनदेन को ब्लॉक करता है। दो चरण लॉकिंग प्रोटोकॉल DBMS में समसामयिक समस्या को खत्म करने में मदद करता है।
यह लॉकिंग प्रोटोकॉल लेनदेन के निष्पादन चरण को तीन अलग-अलग भागों में विभाजित करता है।
- पहले चरण में, जब लेन-देन निष्पादित होना शुरू होता है, तो उसे उस ताले की अनुमति की आवश्यकता होती है, जिसकी उसे आवश्यकता होती है।
- दूसरा भाग वह है जहां लेनदेन सभी ताले प्राप्त करता है। जब कोई लेनदेन अपना पहला लॉक जारी करता है, तो तीसरा चरण शुरू होता है।
- इस तीसरे चरण में, लेनदेन किसी नए ताले की मांग नहीं कर सकता है। इसके बजाय, यह केवल अधिग्रहित ताले को जारी करता है।
दो-चरण लॉकिंग प्रोटोकॉल प्रत्येक लेनदेन को दो चरणों में लॉक या अनलॉक अनुरोध करने की अनुमति देता है:
- बढ़ता हुआ चरण : इस चरण में लेनदेन में ताले प्राप्त हो सकते हैं लेकिन कोई भी ताला नहीं छोड़ सकता है।
- सिकुड़ता चरण : इस चरण में, एक लेनदेन ताले को छोड़ सकता है लेकिन कोई नया ताला प्राप्त नहीं कर सकता है
यह सच है कि 2PL प्रोटोकॉल क्रमबद्धता प्रदान करता है। हालांकि, यह सुनिश्चित नहीं करता है कि गतिरोध न हो।
ऊपर दिए गए आरेख में, आप देख सकते हैं कि स्थानीय और वैश्विक गतिरोध डिटेक्टर गतिरोधों को खोज रहे हैं और उन्हें अपने प्रारंभिक राज्यों में लेनदेन फिर से शुरू करने के साथ हल करते हैं।
सख्त दो-चरण लॉकिंग विधि
सख्त-दो चरण लॉकिंग सिस्टम लगभग 2PL के समान है। फर्क सिर्फ इतना है कि स्ट्रिक्ट -2PL कभी भी इसे इस्तेमाल करने के बाद लॉक जारी नहीं करता है। यह सभी ताले तब तक रखता है जब तक कि कमिट पॉइंट नहीं हो जाता है और प्रक्रिया समाप्त होने पर सभी ताले एक ही बार में निकल जाते हैं।
केंद्रीकृत 2PL
केंद्रीकृत 2 पीएल में, एकल साइट लॉक प्रबंधन प्रक्रिया के लिए जिम्मेदार है। पूरे DBMS के लिए इसमें केवल एक लॉक मैनेजर है।
प्राथमिक प्रति 2PL
प्राथमिक प्रतिलिपि 2PL तंत्र, कई ताला प्रबंधकों को विभिन्न साइटों पर वितरित किया जाता है। उसके बाद, एक विशेष लॉक मैनेजर डेटा आइटम के एक सेट के लिए लॉक को प्रबंधित करने के लिए जिम्मेदार है। जब प्राथमिक प्रतिलिपि को अद्यतन किया गया है, तो परिवर्तन दासों के लिए प्रचारित किया जाता है।
2PL वितरित
इस तरह के दो-चरण लॉकिंग तंत्र में, लॉक प्रबंधकों को सभी साइटों पर वितरित किया जाता है। वे उस साइट पर डेटा के लिए ताले के प्रबंधन के लिए जिम्मेदार हैं। यदि कोई डेटा दोहराया नहीं जाता है, तो यह प्राथमिक कॉपी 2PL के बराबर है। वितरित 2PL की संचार लागत प्राथमिक कॉपी 2PL से काफी अधिक है
टाइमस्टैम्प आधारित प्रोटोकॉल
DBMS में टाइमस्टैम्प आधारित प्रोटोकॉल एक एल्गोरिथ्म है जो समवर्ती लेनदेन के निष्पादन को क्रमबद्ध करने के लिए टाइमस्टैम्प के रूप में सिस्टम टाइम या लॉजिकल काउंटर का उपयोग करता है। टाइमस्टैम्प-आधारित प्रोटोकॉल यह सुनिश्चित करता है कि हर विरोधाभास पढ़ने और लिखने के संचालन को टाइमस्टैम्प क्रम में निष्पादित किया जाता है।
इस पद्धति में पुराने लेनदेन को हमेशा प्राथमिकता दी जाती है। यह लेनदेन के समय टिकट को निर्धारित करने के लिए सिस्टम समय का उपयोग करता है। यह सबसे अधिक इस्तेमाल किया जाने वाला कंसीलर प्रोटोकॉल है।
लॉक-आधारित प्रोटोकॉल परस्पर विरोधी लेनदेन के बीच आदेश का प्रबंधन करने में आपकी सहायता करते हैं जब वे निष्पादित करेंगे। टाइमस्टैम्प-आधारित प्रोटोकॉल एक ऑपरेशन बनते ही टकराव का प्रबंधन करते हैं।
उदाहरण:
Suppose there are there transactions T1, T2, and T3.T1 has entered the system at time 0010T2 has entered the system at 0020T3 has entered the system at 0030Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.
लाभ :
- अनुसूचियां 2PL प्रोटोकॉल की तरह धारावाहिक हैं
- लेन-देन की प्रतीक्षा नहीं, जो गतिरोध की संभावना को समाप्त करता है!
नुकसान:
यदि समान लेन-देन को पुनः आरंभ किया जाता है और लगातार निरस्त किया जाता है तो भुखमरी संभव है
मान्यता आधारित प्रोटोकॉल
DBMS में मान्यकरण आधारित प्रोटोकॉल जिसे ऑप्टिमिस्टिक कॉन्सिक्वेंसी कंट्रोल तकनीक के रूप में भी जाना जाता है, लेनदेन में संगामिति से बचने का एक तरीका है। इस प्रोटोकॉल में, लेन-देन डेटा की स्थानीय प्रतियां डेटा के बजाय स्वयं अपडेट की जाती हैं, जिसके परिणामस्वरूप लेनदेन का निष्पादन कम होता है।
सत्यापन आधारित प्रोटोकॉल निम्नलिखित तीन चरणों में किया जाता है:
- चरण पढ़ें
- मान्यता चरण
- चरण लिखें
चरण पढ़ें
रीड चरण में, डेटाबेस से डेटा मान को एक लेनदेन द्वारा पढ़ा जा सकता है लेकिन राइट ऑपरेशन या अपडेट केवल स्थानीय डेटा प्रतियों पर लागू होते हैं, वास्तविक डेटाबेस पर नहीं।
मान्यता चरण
सत्यापन चरण में, डेटा को यह सुनिश्चित करने के लिए चेक किया जाता है कि डेटाबेस में लेनदेन अपडेट लागू करते समय क्रमबद्धता का कोई उल्लंघन नहीं है।
चरण लिखें
राइट लिखने के चरण में, डेटाबेस को अद्यतन लागू किया जाता है यदि सत्यापन सफल होता है, या; अद्यतनों को लागू नहीं किया जाता है, और लेन-देन वापस चालू किया जाता है।
अच्छे कॉन्सिलिटी प्रोटोकॉल के लक्षण
एक आदर्श संगामिति नियंत्रण DBMS तंत्र के निम्नलिखित उद्देश्य हैं:
- साइट और संचार विफलताओं के लिए लचीला होना चाहिए।
- यह लेन-देन के समानांतर निष्पादन को अधिकतम संगामिति प्राप्त करने की अनुमति देता है।
- इसके भंडारण तंत्र और कम्प्यूटेशनल तरीकों को ओवरहेड को कम करने के लिए मामूली होना चाहिए।
- यह लेनदेन के परमाणु कार्यों की संरचना पर कुछ बाधाओं को लागू करना चाहिए।
सारांश
- एक दूसरे के साथ संघर्ष किए बिना एक साथ संचालन के प्रबंधन के लिए डीबीएमएस में कंसीडर कंट्रोल प्रक्रिया है।
- लॉस्ट अपडेट्स, गंदे रीड, नॉन-रिपीटेबल रीड और गलत सारांश इश्यू समसामयिक नियंत्रण की कमी के कारण समस्याएँ हैं।
- लॉक-बेस्ड, टू-फेज, टाइमस्टैम्प-बेस्ड, वैलिडेशन-बेस्ड, कॉनएरेबिलिटी हैंडलिंग प्रोटोकॉल के प्रकार हैं
- ताला साझा किया जा सकता है (एस) या विशेष (एक्स)
- दो-चरण लॉकिंग प्रोटोकॉल जिसे 2PL प्रोटोकॉल के रूप में भी जाना जाता है, इसके एक ताले को जारी करने के बाद लेनदेन को एक लॉक प्राप्त करना चाहिए। इसके बढ़ने और सिकुड़ने के 2 चरण हैं।
- टाइमस्टैम्प-आधारित एल्गोरिथ्म समवर्ती लेनदेन के निष्पादन को क्रमबद्ध करने के लिए टाइमस्टैम्प का उपयोग करता है। प्रोटोकॉल टाइमस्टैम्प के रूप में सिस्टम टाइम या लॉजिकल काउंट का उपयोग करता है ।