आइसोलेशन (डेटाबेस सिस्टम): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 140: Line 140:
</syntaxhighlight>
</syntaxhighlight>
|}
|}
नॉन-रिपीटेबल रीड्स और फैंटम रीड्स को रोकने के लिए दो बुनियादी रणनीतियों का उपयोग किया जाता है। पहली रणनीति में, लॉक-आधारित संगामिति नियंत्रण, लेन-देन 1 के प्रतिबद्ध होने या वापस लुढ़कने के बाद लेनदेन 2 प्रतिबद्ध होता है। यह सीरियल शेड्यूल (कंप्यूटर साइंस) T1, T2 का उत्पादन करता है। अन्य रणनीति में, बहुसंस्कृति समवर्ती नियंत्रण, लेन-देन 2 तुरंत प्रतिबद्ध होता है, जबकि लेन-देन 1, जो लेन-देन 2 से पहले प्रारम्भ हुआ था, लेन-देन 1 के प्रारम्भ में लिए गए डेटाबेस के पुराने स्नैपशॉट पर काम करना जारी रखता है, और जब लेन-देन 1 अंततः प्रतिबद्ध करने की कोशिश करता है , यदि कमिटमेंट का परिणाम सीरियल शेड्यूल T1, T2 के बराबर होगा, तो ट्रांजैक्शन 1 प्रतिबद्ध है; अन्यथा, प्रतिबद्ध विरोध होता है और लेनदेन 1 को क्रमांकन विफलता के साथ वापस ले लिया जाता है।
नॉन-रिपीटेबल रीड्स और फैंटम रीड्स को रोकने के लिए दो बुनियादी रणनीतियों का उपयोग किया जाता है। पहली रणनीति में, लॉक-आधारित संगामिति नियंत्रण, लेन-देन 1 के प्रतिबद्ध होने या वापस लुढ़कने के बाद लेनदेन 2 प्रतिबद्ध होता है। यह सीरियल शेड्यूल (कंप्यूटर साइंस) T1, T2 का उत्पादन करता है। अन्य रणनीति में, बहुसंस्कृति समवर्ती नियंत्रण, लेन-देन 2 तुरंत प्रतिबद्ध होता है, जबकि लेन-देन 1, जो लेन-देन 2 से पहले प्रारम्भ हुआ था, लेन-देन 1 के प्रारम्भ में लिए गए डेटाबेस के पुराने स्नैपशॉट पर काम करना प्रस्तावित  रखता है, और जब लेन-देन 1 अंततः प्रतिबद्ध करने की कोशिश करता है , यदि कमिटमेंट का परिणाम सीरियल शेड्यूल T1, T2 के बराबर होगा, तो ट्रांजैक्शन 1 प्रतिबद्ध है; अन्यथा, प्रतिबद्ध विरोध होता है और लेनदेन 1 को क्रमांकन विफलता के साथ वापस ले लिया जाता है।


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


== आइसोलेशन स्तर ==
== आइसोलेशन स्तर ==
Line 156: Line 156:
यह आइसोलेशन का उच्चतम स्तर है।
यह आइसोलेशन का उच्चतम स्तर है।


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


गैर-लॉक आधारित समवर्ती नियंत्रण का उपयोग करते समय, कोई लॉक प्राप्त नहीं किया जाता है; चूँकि, यदि प्रणाली कई समवर्ती लेन-देन के मध्य लेखन टकराव का पता लगाता है, तो उनमें से केवल एक को ही प्रतिबद्ध होने की अनुमति होती है। इस विषय पर अधिक विवरण के लिए [[स्नैपशॉट अलगाव|स्नैपशॉट आइसोलेशन]] देखें।
गैर-लॉक आधारित समवर्ती नियंत्रण का उपयोग करते समय, कोई लॉक प्राप्त नहीं किया जाता है; चूँकि, यदि प्रणाली कई समवर्ती लेन-देन के मध्य लेखन विरोध को ज्ञात करना है, तो उनमें से केवल एक को ही प्रतिबद्ध होने की अनुमति होती है। इस विषय पर अधिक विवरण के लिए [[स्नैपशॉट अलगाव|स्नैपशॉट आइसोलेशन]] देखें।


प्रेषक: (द्वितीय अनौपचारिक समीक्षा प्रारूप) आईएसओ/आईईसी 9075:1992, डेटाबेस लैंग्वेज एसक्यूएल- 30 जुलाई, 1992:
प्रेषक: (द्वितीय अनौपचारिक समीक्षा प्रारूप) आईएसओ/आईईसी 9075:1992, डेटाबेस लैंग्वेज एसक्यूएल- 30 जुलाई, 1992:
Line 164: Line 164:


=== बार-बार पढ़ने योग्य ===
=== बार-बार पढ़ने योग्य ===
इस आइसोलेशन स्तर में, लॉक-आधारित समवर्ती नियंत्रण डीबीएमएस कार्यान्वयन लेन-देन के अंत तक रीड और राइट लॉक (चयनित डेटा पर प्राप्त) रखता है। चूँकि, रेंज-लॉक प्रबंधित नहीं किए जाते हैं, इसलिए 'आइसोलेशन (डेटाबेस प्रणाली) फैंटम रीड्स' हो सकता है।
इस आइसोलेशन स्तर में, लॉक-आधारित समवर्ती नियंत्रण डीबीएमएस कार्यान्वयन लेन-देन के अंत तक रीड और राइट लॉक (चयनित डेटा पर प्राप्त) रखता है। चूँकि, श्रेणी -लॉक प्रबंधित नहीं किए जाते हैं, इसलिए 'आइसोलेशन (डेटाबेस प्रणाली) फैंटम रीड्स' हो सकता है।


कुछ प्रणालियों में इस आइसोलेशन स्तर पर तिरछा लिखना संभव होता है। तिरछा लिखना घटना है जहां दो भिन्न-भिन्न लेखकों द्वारा तालिका में ही कॉलम में दो लिखने की अनुमति दी जाती है (जिन्होंने पहले उन कॉलमों को पढ़ा है जिन्हें वे अपडेट कर रहे हैं), जिसके परिणामस्वरूप कॉलम में डेटा होता है जो दो लेनदेन का मिश्रण होता है .<ref>{{cite web|url=https://vladmihalcea.com/2015/10/20/a-beginners-guide-to-read-and-write-skew-phenomena/|title=A beginner's guide to read and write skew phenomena|author=Vlad Mihalcea|date=2015-10-20}}</ref><ref>{{cite web|url=https://wiki.postgresql.org/wiki/SSI#Simple_Write_Skew|title=Postgresql wiki - SSI}}</ref>
कुछ प्रणालियों में इस आइसोलेशन स्तर पर तिरछा लिखना संभव होता है। तिरछा लिखना घटना है जहां दो भिन्न-भिन्न लेखकों द्वारा तालिका में ही कॉलम में दो लिखने की अनुमति दी जाती है (जिन्होंने पहले उन कॉलमों को पढ़ा है जिन्हें वे अपडेट कर रहे हैं), जिसके परिणामस्वरूप कॉलम में डेटा होता है जो दो लेनदेन का मिश्रण होता है .<ref>{{cite web|url=https://vladmihalcea.com/2015/10/20/a-beginners-guide-to-read-and-write-skew-phenomena/|title=A beginner's guide to read and write skew phenomena|author=Vlad Mihalcea|date=2015-10-20}}</ref><ref>{{cite web|url=https://wiki.postgresql.org/wiki/SSI#Simple_Write_Skew|title=Postgresql wiki - SSI}}</ref>
=== प्रतिबद्ध पढ़ें ===
=== प्रतिबद्ध पढ़ें ===
इस आइसोलेशन स्तर में, लॉक-आधारित समवर्ती नियंत्रण डीबीएमएस कार्यान्वयन लेन-देन के अंत तक राइट लॉक (चयनित डेटा पर प्राप्त) रखता है, लेकिन जैसे ही सेलेक्ट (एसक्यूएल) ऑपरेशन किया जाता है, रीड लॉक जारी हो जाते हैं (इसलिए ''आइसोलेशन (डेटाबेस प्रणाली)नॉन-रिपीटेबल रीड्स, नॉन-रिपीटेबल रीड्स इवेंट '' इस आइसोलेशन लेवल में हो सकता है)। पिछले स्तर की तरह, ''रेंज-लॉक'' को प्रबंधित नहीं किया जाता है।
इस आइसोलेशन स्तर में, लॉक-आधारित समवर्ती नियंत्रण डीबीएमएस कार्यान्वयन लेन-देन के अंत तक राइट लॉक (चयनित डेटा पर प्राप्त) रखता है, लेकिन जैसे ही सेलेक्ट (एसक्यूएल) ऑपरेशन किया जाता है, रीड लॉक प्रस्तावित  हो जाते हैं (इसलिए ''आइसोलेशन (डेटाबेस प्रणाली)नॉन-रिपीटेबल रीड्स, नॉन-रिपीटेबल रीड्स इवेंट '' इस आइसोलेशन लेवल में हो सकता है)। पिछले स्तर की तरह, ''श्रेणी -लॉक'' को प्रबंधित नहीं किया जाता है।


इसे सरल शब्दों में कहें तो रीड कमिटेड आइसोलेशन लेवल है जो आश्वासन देता है कि कोई भी डेटा रीड उसी समय कमिट हो जाता है जब वह पढ़ा जाता है। यह पाठक को किसी भी मध्यवर्ती, अप्रतिबद्ध, 'गंदे' पढ़ने को देखने से रोकता है। यह कोई वादा नहीं करता है कि यदि लेन-देन रीड को फिर से जारी करता है, तो उसे वही डेटा मिलेगा; पढ़ने के बाद डेटा बदलने के लिए स्वतंत्र है।
इसे सरल शब्दों में कहें तो रीड कमिटेड आइसोलेशन लेवल है जो आश्वासन देता है कि कोई भी डेटा रीड उसी समय कमिट हो जाता है जब वह पढ़ा जाता है। यह पाठक को किसी भी मध्यवर्ती, अप्रतिबद्ध, 'गंदे' पढ़ने को देखने से रोकता है। यह कोई वादा नहीं करता है कि यदि लेन-देन रीड को फिर से प्रस्तावित  करता है, तो उसे वही डेटा मिलेगा; पढ़ने के बाद डेटा बदलने के लिए स्वतंत्र है।


=== अप्रतिबद्ध पढ़ें ===
=== अप्रतिबद्ध पढ़ें ===

Revision as of 17:19, 25 February 2023

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

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

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

आइसोलेशन चार एसीआईडी ​​​​गुणों के साथ परमाणुता (डेटाबेस प्रणाली), संगति (डेटाबेस प्रणाली) और स्थायित्व (डेटाबेस प्रणाली) में से है।

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

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

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

घटनाएं पढ़ें

एएनएसआई/आईएसओ मानक एसक्यूएल (SQL) 92 तीन भिन्न-भिन्न पठन परिघटनाओं को संदर्भित करता है जब लेन-देन उस डेटा को पुनः प्राप्त करता है जिसे किसी अन्य लेन-देन ने अपडेट किया हो।

निम्नलिखित उदाहरणों में, दो लेन-देन होते हैं। लेन-देन 1 में, क्वेरी निष्पादित की जाती है, फिर लेनदेन 2 में, अद्यतन किया जाता है, और अंत में लेनदेन 1 में, वही क्वेरी फिर से की जाती है।

उदाहरण निम्नलिखित संबंध का उपयोग करते हैं:

उपयोगकर्ता
आईडी नाम आयु
1 ऐलिस 20
2 बीओबी 25

अपरिष्कृत पठन

अपरिष्कृत पठन (अप्रतिबंधित निर्भरता) तब होता है जब लेन-देन पंक्ति को पुनः प्राप्त करता है जिसे किसी अन्य लेन-देन द्वारा अद्यतन किया गया है जो अभी तक प्रतिबद्ध नहीं है।

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

लेन-देन 1 लेन-देन 2
BEGIN;
SELECT age FROM users WHERE id = 1;
-- retrieves 20
BEGIN;
UPDATE users SET age = 21 WHERE id = 1;
-- no commit here
SELECT age FROM users WHERE id = 1;
-- READ UNCOMMITTED retrieves 21 (dirty read)
-- READ COMMITTED retrieves 20 (dirty read has been avoided)
-- REPEATABLE READ retrieves 20 (dirty read has been avoided)
-- SERIALIZABLE retrieves 20 (dirty read has been avoided)
COMMIT;
ROLLBACK;


नॉन-रिपीटेबल रीड

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

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

लेन-देन 1 लेन-देन 2
BEGIN;
SELECT age FROM users WHERE id = 1;
-- retrieves 20
BEGIN;
UPDATE users SET age = 21 WHERE id = 1;
COMMIT;
SELECT age FROM users WHERE id = 1;
-- READ UNCOMMITTED retrieves 21 (non-repeatable read)
-- READ COMMITTED retrieves 21 (non-repeatable read)
-- REPEATABLE READ retrieves 20 (non-repeatable read has been avoided)
-- SERIALIZABLE retrieves 20 (non-repeatable read has been avoided)
COMMIT;


फैंटम रीड

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

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

लेन-देन 1 लेन-देन 2
BEGIN;
SELECT name FROM users WHERE age > 17;
BEGIN;
INSERT INTO users VALUES (3, 'Carol', 26);
COMMIT;
SELECT name FROM users WHERE age > 17;
-- READ UNCOMMITTED retrieves Alice, Bob and Carol (phantom read)
-- READ COMMITTED retrieves Alice, Bob and Carol (phantom read)
-- REPEATABLE READ retrieves Alice, Bob and Carol (phantom read)
-- SERIALIZABLE retrieves Alice and Bob (phantom read has been avoided)
COMMIT;

नॉन-रिपीटेबल रीड्स और फैंटम रीड्स को रोकने के लिए दो बुनियादी रणनीतियों का उपयोग किया जाता है। पहली रणनीति में, लॉक-आधारित संगामिति नियंत्रण, लेन-देन 1 के प्रतिबद्ध होने या वापस लुढ़कने के बाद लेनदेन 2 प्रतिबद्ध होता है। यह सीरियल शेड्यूल (कंप्यूटर साइंस) T1, T2 का उत्पादन करता है। अन्य रणनीति में, बहुसंस्कृति समवर्ती नियंत्रण, लेन-देन 2 तुरंत प्रतिबद्ध होता है, जबकि लेन-देन 1, जो लेन-देन 2 से पहले प्रारम्भ हुआ था, लेन-देन 1 के प्रारम्भ में लिए गए डेटाबेस के पुराने स्नैपशॉट पर काम करना प्रस्तावित रखता है, और जब लेन-देन 1 अंततः प्रतिबद्ध करने की कोशिश करता है , यदि कमिटमेंट का परिणाम सीरियल शेड्यूल T1, T2 के बराबर होगा, तो ट्रांजैक्शन 1 प्रतिबद्ध है; अन्यथा, प्रतिबद्ध विरोध होता है और लेनदेन 1 को क्रमांकन विफलता के साथ वापस ले लिया जाता है।

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

आइसोलेशन स्तर

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

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

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

मानकीकरण एसक्यूएल मानक के लिए अमेरिकी राष्ट्रीय मानक संस्थान/अंतर्राष्ट्रीय संगठन द्वारा परिभाषित आइसोलेशन स्तर निम्नानुसार सूचीबद्ध हैं।

सीरियल करने योग्य

यह आइसोलेशन का उच्चतम स्तर है।

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

गैर-लॉक आधारित समवर्ती नियंत्रण का उपयोग करते समय, कोई लॉक प्राप्त नहीं किया जाता है; चूँकि, यदि प्रणाली कई समवर्ती लेन-देन के मध्य लेखन विरोध को ज्ञात करना है, तो उनमें से केवल एक को ही प्रतिबद्ध होने की अनुमति होती है। इस विषय पर अधिक विवरण के लिए स्नैपशॉट आइसोलेशन देखें।

प्रेषक: (द्वितीय अनौपचारिक समीक्षा प्रारूप) आईएसओ/आईईसी 9075:1992, डेटाबेस लैंग्वेज एसक्यूएल- 30 जुलाई, 1992: आइसोलेशन स्तर पर समवर्ती एसक्यूएल-लेन-देन का निष्पादन सेरिअलिज़ाब्ली को क्रमिक होने की आश्वासन है। क्रमबद्ध निष्पादन को एसक्यूएल-लेन-देन को समवर्ती रूप से निष्पादित करने के संचालन के निष्पादन के रूप में परिभाषित किया गया है जो समान एसक्यूएल-लेन-देन के कुछ सीरियल निष्पादन के समान प्रभाव पैदा करता है। सीरियल निष्पादन वह है जिसमें प्रत्येक एसक्यूएल-लेनदेन अगले एसक्यूएल-लेनदेन प्रारम्भ होने से पहले पूरा होने के लिए निष्पादित होता है।

बार-बार पढ़ने योग्य

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

कुछ प्रणालियों में इस आइसोलेशन स्तर पर तिरछा लिखना संभव होता है। तिरछा लिखना घटना है जहां दो भिन्न-भिन्न लेखकों द्वारा तालिका में ही कॉलम में दो लिखने की अनुमति दी जाती है (जिन्होंने पहले उन कॉलमों को पढ़ा है जिन्हें वे अपडेट कर रहे हैं), जिसके परिणामस्वरूप कॉलम में डेटा होता है जो दो लेनदेन का मिश्रण होता है .[3][4]

प्रतिबद्ध पढ़ें

इस आइसोलेशन स्तर में, लॉक-आधारित समवर्ती नियंत्रण डीबीएमएस कार्यान्वयन लेन-देन के अंत तक राइट लॉक (चयनित डेटा पर प्राप्त) रखता है, लेकिन जैसे ही सेलेक्ट (एसक्यूएल) ऑपरेशन किया जाता है, रीड लॉक प्रस्तावित हो जाते हैं (इसलिए आइसोलेशन (डेटाबेस प्रणाली)नॉन-रिपीटेबल रीड्स, नॉन-रिपीटेबल रीड्स इवेंट इस आइसोलेशन लेवल में हो सकता है)। पिछले स्तर की तरह, श्रेणी -लॉक को प्रबंधित नहीं किया जाता है।

इसे सरल शब्दों में कहें तो रीड कमिटेड आइसोलेशन लेवल है जो आश्वासन देता है कि कोई भी डेटा रीड उसी समय कमिट हो जाता है जब वह पढ़ा जाता है। यह पाठक को किसी भी मध्यवर्ती, अप्रतिबद्ध, 'गंदे' पढ़ने को देखने से रोकता है। यह कोई वादा नहीं करता है कि यदि लेन-देन रीड को फिर से प्रस्तावित करता है, तो उसे वही डेटा मिलेगा; पढ़ने के बाद डेटा बदलने के लिए स्वतंत्र है।

अप्रतिबद्ध पढ़ें

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

डिफ़ॉल्ट आइसोलेशन स्तर

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

चूँकि, ऊपर दी गई परिभाषाओं की अस्पष्ट होने के रूप में आलोचना की गई है, और कई डेटाबेस द्वारा प्रदान किए गए आइसोलेशन को सटीक रूप से प्रतिबिंबित नहीं करते हैं:

यह पत्र आइसोलेशन के स्तर को परिभाषित करने के लिए विसंगतिपूर्ण दृष्टिकोण में कई अल्प जोरियों को दर्शाता है। तीन एएनएसआई घटनाएं अस्पष्ट हैं, और यहां तक ​​​​कि उनकी सबसे छोटी व्याख्याओं में कुछ विषम व्यवहारों को सम्मलित नहीं किया गया है, यह कुछ प्रति-सहज ज्ञान युक्त परिणामों की ओर जाता है। विशेष रूप से, लॉक-आधारित आइसोलेशन स्तरों में उनके एएनएसआई समकक्षों की तुलना में भिन्न विशेषताएं होती हैं। यह चिंताजनक है क्योंकि व्यावसायिक डेटाबेस प्रणाली सामान्यतः लॉकिंग कार्यान्वयन का उपयोग करते हैं। इसके अतिरिक्त, एएनएसआई घटना कई प्रकार के आइसोलेशन स्तर के व्यवहार के मध्य अंतर नहीं करती है जो वाणिज्यिक प्रणालियों में लोकप्रिय हैं।[5]

एएनएसआई एसक्यूएल की आइसोलेशन परिभाषा से संबंधित अन्य आलोचनाएँ भी हैं, जिसमें यह कार्यान्वयनकर्ताओं को बुरे काम करने के लिए प्रोत्साहित करती है:

यह एक धारणा पर सूक्ष्म तरीकों से निर्भर करता है कि आशावादी या बहु-संस्करण समवर्ती योजना के विपरीत समवर्ती नियंत्रण के लिए लॉकिंग स्कीमा का उपयोग किया जाता है। इसका तात्पर्य है कि प्रस्तावित शब्दार्थ गलत परिभाषित हैं।[6]


आइसोलेशन लेवल बनाम रीड फेनोमेना

Read phenomenon



Isolation level
डर्टी रीड नॉन-रिपीटेबल रीड्स फैंटम रीड
सेरिअलिज़ाब्ली style="background: #BFD; vertical-align: middle; text-align: center; " class="yes2 table-yes2"| no no no
रिपीटेबल रीड style="background: #BFD; vertical-align: middle; text-align: center; " class="yes2 table-yes2"| no no yes
प्रतिबद्ध पढ़ें style="background: #BFD; vertical-align: middle; text-align: center; " class="yes2 table-yes2"| no yes yes
अप्रतिबद्ध पढ़ें style="background:#FFC7C7;vertical-align:middle;text-align:center;" class="table-no"|yes yes yes

सीरियल करने योग्य एनॉमली सीरियल करने योग्य के समान नहीं है। अर्थात्, यह आवश्यक है, लेकिन पर्याप्त नहीं है कि क्रमबद्ध कार्यक्रम तीनों प्रकार की घटनाओं से मुक्त होना चाहिए।[5]


यह भी देखें

संदर्भ

  1. "Isolation Levels in the Database Engine", TechNet, Microsoft, https://technet.microsoft.com/en-us/library/ms189122(v=SQL.105).aspx
  2. "The Architecture of Transaction Processing Systems", Chapter 23, Evolution of Processing Systems, Department of Computer Science, Stony Brook University, retrieved 20 March 2014, http://www.cs.sunysb.edu/~liu/cse315/23.pdf
  3. Vlad Mihalcea (2015-10-20). "A beginner's guide to read and write skew phenomena".
  4. "Postgresql wiki - SSI".
  5. 5.0 5.1 "A Critique of ANSI SQL Isolation Levels" (PDF). Retrieved 29 July 2012.
  6. salesforce (2010-12-06). "Customer testimonials (SimpleGeo, CLOUDSTOCK 2010)". www.DataStax.com: DataStax. Retrieved 2010-03-09. (see above at about 13:30 minutes of the webcast!)


बाहरी संबंध