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

From Vigyanwiki
No edit summary
No edit summary
 
(15 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[डेटाबेस]] प्रणाली में, आइसोलेशन यह निर्धारित करता है कि डेटाबेस लेनदेन की अखंडता अन्य उपयोगकर्ताओं और प्रणालियों के लिए कैसे दिखाई देती है।
[[डेटाबेस]] सिस्टम में, '''आइसोलेशन''' यह निर्धारित करता है कि डेटाबेस ट्रांसक्शन की इंटीग्रिटी अन्य यूजरो और सिस्टमों के लिए कैसे दिखाई देती है।


न्यून आइसोलेशन स्तर एक ही समय में एक ही डेटा तक पहुंचने के लिए कई उपयोगकर्ताओं की क्षमता को बढ़ाता है, लेकिन कॉन्करेंसी (कंप्यूटर विज्ञान) प्रभावों की संख्या को बढ़ाता है (जैसे कि राइट-रीड कॉन्फ्लिक्ट या खोए हुए अपडेट) उपयोगकर्ताओं का सामना हो सकता है। इसके विपरीत, उच्च आइसोलेशन स्तर उन समवर्ती प्रभावों के प्रकारों को कम करता है जिनका उपयोगकर्ता सामना कर सकते हैं, लेकिन इसके लिए अधिक प्रणाली संसाधनों की आवश्यकता होती है और संभावना बढ़ जाती है कि एक लेनदेन दूसरे को ब्लॉक कर देता है।<ref>"Isolation Levels in the Database Engine", TechNet, Microsoft, https://technet.microsoft.com/en-us/library/ms189122(v=SQL.105).aspx</ref>
लोअर आइसोलेशन लेवल समान समय में विशेष डेटा एक्सेस के लिए कई यूजरो की क्षमता में वृद्धि करता है, किन्तु समवर्ती (कंप्यूटर विज्ञान) प्रभावों की संख्या में वृद्धि करता है, जिससे यूजरो का सामना हो सकता है। इसके विपरीत, हायर आइसोलेशन लेवल उन समवर्ती प्रभावों के प्रकारों को अल्प करता है जिनका यूजर सामना कर सकते हैं, किन्तु इसके लिए अधिक सिस्टम रिसोर्सेज की आवश्यकता होती है और ट्रांसक्शन दूसरे ट्रांसक्शन को ब्लॉक कर देगा इसकी संभावना बढ़ जाती है।<ref>"Isolation Levels in the Database Engine", TechNet, Microsoft, https://technet.microsoft.com/en-us/library/ms189122(v=SQL.105).aspx</ref>
आइसोलेशन को सामान्यतः डेटाबेस स्तर पर संपत्ति के रूप में परिभाषित किया जाता है जो परिभाषित करता है कि कैसे या कब{{clarify|date=June 2021}}ऑपरेशन द्वारा किए गए परिवर्तन दूसरों को दिखाई देने लगते हैं। पुरानी प्रणालियों पर, इसे अस्थायी तालिकाओं के उपयोग के माध्यम से व्यवस्थित रूप से लागू किया जा सकता है। द्वि-स्तरीय प्रणालियों में, आइसोलेशन बनाए रखने के लिए लेनदेन प्रसंस्करण (टीपी) प्रबंधक की आवश्यकता होती है। एन-टियर प्रणाली में (जैसे कि कई वेबसाइटें एक उड़ान में अंतिम सीट बुक करने का प्रयास करती हैं), बुकिंग करने और ग्राहक को पुष्टि भेजने के लिए संग्रहीत प्रक्रियाओं और लेनदेन प्रबंधन के संयोजन की आवश्यकता होती है।<ref>"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</ref>
आइसोलेशन चार एसीआईडी ​​​​गुणों के साथ [[परमाणुता (डेटाबेस सिस्टम)|परमाणुता (डेटाबेस प्रणाली)]], [[संगति (डेटाबेस सिस्टम)|संगति (डेटाबेस प्रणाली)]] और [[स्थायित्व (डेटाबेस सिस्टम)|स्थायित्व (डेटाबेस प्रणाली)]] में से है, ।


== समवर्ती नियंत्रण ==
आइसोलेशन को सामान्यतः डेटाबेस लेवल पर प्रॉपर्टी के रूप में डिफाइन किया जाता है जो यह डिफाइन करता है कि कैसे या कब ऑपरेशन द्वारा किए गए परिवर्तन दूसरों को दिखाई देने लगते हैं। प्राचीन सिस्टमों पर, इसे टेम्पररी टेबल्स के उपयोग के माध्यम से व्यवस्थित रूप से प्रारम्भ किया जा सकता है। द्वि-टायर सिस्टमों में, आइसोलेशन को मेन्टेन रखने के लिए ट्रांसक्शन प्रोसेसिंग (टीपी) मैनेजर की आवश्यकता होती है। n-टियर सिस्टम में (जैसे कि कई वेबसाइटें फ्लाइट में अंतिम सीट बुक करने का प्रयास करती हैं), बुकिंग करने और कस्टमर को पुष्टि भेजने के लिए संग्रहीत प्रक्रियाओं और ट्रांसक्शन मैनेजमेंट के संयोजन की आवश्यकता होती है।<ref>"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</ref>
समवर्ती नियंत्रण में एक डीबीएमएस में अंतर्निहित तंत्र सम्मलित होते हैं जो आइसोलेशन को संभालते हैं और संबंधित शुद्धता की गारंटी देते हैं। समवर्ती लेनदेन के सही निष्पादन की गारंटी देने के लिए और (विभिन्न तंत्रों के माध्यम से) अन्य डीबीएमएस प्रक्रियाओं की शुद्धता की गारंटी देने के लिए डेटाबेस और स्टोरेज इंजन दोनों द्वारा इसका भारी उपयोग किया जाता है। लेन-देन से संबंधित तंत्र सामान्यतः डेटाबेस डेटा एक्सेस ऑपरेशंस के समय ([[अनुसूची (कंप्यूटर विज्ञान)]]) को [[क्रमबद्धता]] और पुनर्प्राप्ति योग्यता अनुसूची गुणों के रूप में वर्णित कुछ आदेशों तक सीमित करते हैं। डेटाबेस एक्सेस ऑपरेशन निष्पादन को बाधित करने का तात्पर्य सामान्यतः कम प्रदर्शन (निष्पादन की दरों से मापा जाता है), और इस प्रकार संगामिति नियंत्रण तंत्र को सामान्यतः बाधाओं के तहत सर्वोत्तम प्रदर्शन प्रदान करने के लिए निर्मित किया गया है। प्रायः,जब संभव हो तो शुद्धता को हानि पहुँचाए बिना, बेहतर प्रदर्शन के लिए क्रमबद्धता संपत्ति से समझौता किया जाता है। चूँकि, पुनर्प्राप्ति क्षमता से समझौता नहीं किया जा सकता है, क्योंकि सामान्यतः त्वरित डेटाबेस अखंडता उल्लंघन का परिणाम होता है।


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


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


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


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


{|class="wikitable"
{|class="wikitable"
|+ users
|+ यूजर
! id !! name !! age
!आईडी
!नाम
! आयु
|-
|-
| 1  || Alice  || 20
| 1  ||ऐलिस
| 20
|-
|-
| 2  || Bob || 25
| 2  ||बीओबी
| 25
|}
|}


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


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


{|
{|
|-
|-
! Transaction 1
! लेन-देन 1
! Transaction 2
! लेन-देन 2
|-
|-
|<syntaxhighlight lang="sql">
|<syntaxhighlight lang="sql">
Line 68: Line 73:




=== गैर-दोहराने योग्य पढ़ता है ===
=== नॉन-रिपीटेबल रीड ===
एक गैर-दोहराने योग्य पठन तब होता है जब एक लेन-देन एक पंक्ति को दो बार प्राप्त करता है और उस पंक्ति को किसी अन्य लेन-देन द्वारा अद्यतन किया जाता है जो बीच में प्रतिबद्ध होता है।
गैर-दोहराने योग्य पठन तब होता है जब लेन-देन पंक्ति को दो बार प्राप्त करता है और उस पंक्ति को किसी अन्य लेन-देन द्वारा अद्यतन किया जाता है जो मध्य में प्रतिबद्ध होता है।


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


{|
{|
|-
|-
! Transaction 1
! लेन-देन 1
! Transaction 2
! लेन-देन 2
|-
|-
|<syntaxhighlight lang="sql">
|<syntaxhighlight lang="sql">
Line 102: Line 107:
|}
|}


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


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


{|
{|
|-
|-
! Transaction 1
! लेन-देन 1
! Transaction 2
! लेन-देन 2
|-
|-
|<syntaxhighlight lang="sql">
|<syntaxhighlight lang="sql">
Line 135: Line 139:
</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 को क्रमांकन विफलता के साथ वापस ले लिया जाता है।
 
लॉक-आधारित समवर्ती नियंत्रण के तहत, गैर-दोहराए जाने योग्य रीड और फैंटम रीड तब ​​हो सकते हैं जब सेलेक्ट करते समय रीड लॉक प्राप्त नहीं होते हैं, या जब सेलेक्ट होते ही प्रभावित पंक्तियों पर अधिग्रहीत लॉक जारी हो जाते हैं। [[बहुसंस्करण समवर्ती नियंत्रण]] के तहत, गैर-दोहराए जाने योग्य रीड्स और फैंटम रीड्स तब हो सकते हैं जब कमिट विरोध से प्रभावित लेनदेन को रोल बैक करने की आवश्यकता को आराम दिया जाता है।
 
== आइसोलेशन स्तर ==
[[डेटाबेस प्रबंधन प्रणाली]] (डेटाबेस मैनेजमेंट प्रणाली) में चार एसीआईडी ​​​​गुणों में से, आइसोलेशन गुण सबसे अधिक आराम देने वाला गुण है। आइसोलेशन के उच्चतम स्तर को बनाए रखने का प्रयास करते समय, एक DBMS आमतौर पर डेटा पर लॉक (डेटाबेस) प्राप्त करता है, जिसके परिणामस्वरूप संगामिति (कंप्यूटर विज्ञान) का नुकसान हो सकता है, या बहुसंस्करण संगामिति नियंत्रण लागू करता है। [[सॉफ़्टवेयर एप्लिकेशन]] को सही ढंग से कार्य करने के लिए इसमें तर्क जोड़ने की आवश्यकता है।


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


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


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


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


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


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


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


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


कुछ प्रणालियों में इस आइसोलेशन स्तर पर तिरछा लिखना संभव है। तिरछा लिखना एक घटना है जहां दो अलग-अलग लेखकों द्वारा तालिका में एक ही कॉलम में दो लिखने की अनुमति दी जाती है (जिन्होंने पहले उन कॉलमों को पढ़ा है जिन्हें वे अपडेट कर रहे हैं), जिसके परिणामस्वरूप कॉलम में डेटा होता है जो दो लेनदेन का मिश्रण होता है .<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>
प्रेषक: (द्वितीय अनौपचारिक समीक्षा प्रारूप) आईएसओ/आईईसी 9075:1992, डेटाबेस भाषा एसक्यूएल- 30 जुलाई, 1992: आइसोलेशन लेवल पर समवर्ती एसक्यूएल-लेन-देन का निष्पादन सेरिअलिज़ाब्ली को क्रमिक होने का आश्वासन है। क्रमबद्ध निष्पादन को एसक्यूएल-लेन-देन को समवर्ती रूप से निष्पादित करने के संचालन के निष्पादन के रूप में परिभाषित किया गया है जो समान एसक्यूएल-लेन-देन के कुछ सीरियल निष्पादन के समान प्रभाव उद्गम करता है। सीरियल निष्पादन वह है जिसमें प्रत्येक एसक्यूएल-ट्रांसक्शन अगले एसक्यूएल-ट्रांसक्शन प्रारम्भ होने से पूर्व पूर्ण होने के लिए निष्पादित होता है।


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


=== पढ़ें प्रतिबद्ध ===
कुछ सिस्टमों में इस आइसोलेशन लेवल पर तिरछा लिखना संभव होता है। तिरछा लिखना घटना है जहां दो भिन्न-भिन्न लेखकों द्वारा सारणी में ही कॉलम में दो लिखने की अनुमति दी जाती है (जिन्होंने पूर्व उन कॉलमों को पढ़ा है जिन्हें वे अपडेट कर रहे हैं), जिसके परिणामस्वरूप कॉलम में डेटा होता है जो दो ट्रांसक्शन का मिश्रण होता है .<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>
इस आइसोलेशन स्तर में, एक लॉक-आधारित समवर्ती नियंत्रण DBMS कार्यान्वयन लेन-देन के अंत तक राइट लॉक (चयनित डेटा पर प्राप्त) रखता है, लेकिन जैसे ही सेलेक्ट (SQL) ऑपरेशन किया जाता है, रीड लॉक जारी हो जाते हैं (इसलिए '' आइसोलेशन (डेटाबेस प्रणाली)#नॉन-रिपीटेबल रीड्स|नॉन-रिपीटेबल रीड्स इवेंट '' इस आइसोलेशन लेवल में हो सकता है)। पिछले स्तर की तरह, ''रेंज-लॉक'' को प्रबंधित नहीं किया जाता है।
=== रीड कमिटेड ===
इस आइसोलेशन लेवल में, लॉक-आधारित कंकर्रेंसी कण्ट्रोल डीबीएमएस कार्यान्वयन लेन-देन के अंत तक राइट लॉक (चयनित डेटा पर प्राप्त) रखता है, किन्तु जैसे ही सेलेक्ट (एसक्यूएल) ऑपरेशन किया जाता है, रीड लॉक प्रस्तावित  हो जाते हैं (इसलिए आइसोलेशन (डेटाबेस सिस्टम)नॉन-रिपीटेबल रीड्स, नॉन-रिपीटेबल रीड्स इवेंट इस आइसोलेशन लेवल में हो सकता है)। पिछले लेवल के जैसे, श्रेणी -लॉक को प्रबंधित नहीं किया जाता है।


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


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


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


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


: यह पत्र आइसोलेशन के स्तर को परिभाषित करने के लिए विसंगतिपूर्ण दृष्टिकोण में कई कमजोरियों को दर्शाता है। तीन एएनएसआई घटनाएं अस्पष्ट हैं, और यहां तक ​​​​कि उनकी सबसे छोटी व्याख्याओं में कुछ विषम व्यवहारों को सम्मलित नहीं किया गया है ... यह कुछ प्रति-सहज ज्ञान युक्त परिणामों की ओर जाता है। विशेष रूप से, लॉक-आधारित आइसोलेशन स्तरों में उनके एएनएसआई समकक्षों की तुलना में भिन्न विशेषताएं होती हैं। यह चिंताजनक है क्योंकि व्यावसायिक डेटाबेस प्रणाली आमतौर पर लॉकिंग कार्यान्वयन का उपयोग करते हैं। इसके अतिरिक्त, ANSI घटना कई प्रकार के आइसोलेशन स्तर के व्यवहार के बीच अंतर नहीं करती है जो वाणिज्यिक प्रणालियों में लोकप्रिय हैं।<ref name="sql-isolation">
: यह पत्र आइसोलेशन के लेवल को परिभाषित करने के लिए विसंगतिपूर्ण दृष्टिकोण में कई अल्पता को दर्शाता है। तीन एएनएसआई घटनाएं अस्पष्ट हैं, और यहां तक ​​​​कि उनकी सबसे छोटी व्याख्याओं में कुछ विषम व्यवहारों को सम्मलित नहीं किया गया है, यह कुछ प्रति-सहज ज्ञान युक्त परिणामों की ओर जाता है। विशेष रूप से, लॉक-आधारित आइसोलेशन स्तरों में उनके एएनएसआई समकक्षों की तुलना में भिन्न विशेषताएं होती हैं। यह चिंताजनक है क्योंकि व्यावसायिक डेटाबेस सिस्टम सामान्यतः लॉकिंग कार्यान्वयन का उपयोग करते हैं। इसके अतिरिक्त, एएनएसआई घटना कई प्रकार के आइसोलेशन लेवल के व्यवहार के मध्य अंतर नहीं करती है जो वाणिज्यिक सिस्टमों में लोकप्रिय हैं।<ref name="sql-isolation">
{{cite web
{{cite web
| url = http://www.cs.umb.edu/~poneil/iso.pdf
| url = http://www.cs.umb.edu/~poneil/iso.pdf
Line 183: Line 184:
| access-date = 29 July 2012 }}
| access-date = 29 July 2012 }}
</ref>
</ref>
ANSI SQL की आइसोलेशन परिभाषा से संबंधित अन्य आलोचनाएँ भी हैं, जिसमें यह कार्यान्वयनकर्ताओं को बुरे काम करने के लिए प्रोत्साहित करती है:
एएनएसआई एसक्यूएल की आइसोलेशन परिभाषा से संबंधित अन्य आलोचनाएँ भी हैं, जिसमें यह कार्यान्वयनकर्ताओं को निकृष्ट कार्य करने के लिए प्रोत्साहित करती है:


:... यह एक धारणा पर सूक्ष्म तरीकों से निर्भर करता है कि आशावादी या बहु-संस्करण समवर्ती योजना के विपरीत समवर्ती नियंत्रण के लिए लॉकिंग स्कीमा का उपयोग किया जाता है। इसका तात्पर्य है कि प्रस्तावित शब्दार्थ खराब परिभाषित हैं।<ref>{{cite web
:यह धारणा पर सूक्ष्म विधियों पर निर्भर करता है कि आशावादी या बहु-संस्करण समवर्ती योजना के विपरीत कंकर्रेंसी कण्ट्रोल के लिए लॉकिंग स्कीमा का उपयोग किया जाता है। इसका तात्पर्य है कि प्रस्तावित शब्दार्थ अशुद्ध परिभाषित हैं।<ref>{{cite web
| access-date = 2010-03-09
| access-date = 2010-03-09
| publisher = DataStax
| publisher = DataStax
Line 193: Line 194:
| date = 2010-12-06
| date = 2010-12-06
| url = https://www.youtube.com/v/7J61pPG9j90?version=3
| url = https://www.youtube.com/v/7J61pPG9j90?version=3
| quote = (see above at about 13:30 minutes of the webcast!)}}</ref>
| quote = (see above at about 13:30 minutes of the webcast!)}}</ref><br />
 
== आइसोलेशन लेवल के प्रति रीड फेनोमेना ==
 
== आइसोलेशन लेवल बनाम रीड फेनोमेना ==


{|class="wikitable"
{|class="wikitable"
! {{diagonal split header|Isolation level|Read phenomenon<br><br><br><br>}} !! Dirty read !! Non-repeatable read !! Phantom read
! {{diagonal split header|Isolation level|Read phenomenon<br><br><br><br>}} !!डर्टी रीड
!नॉन-रिपीटेबल रीड्स
!फैंटम रीड
|-
|-
| Serializable || {{good|no}} || {{good|no}} || {{good|no}}
|सीरियलाइज़ेबल
|| {{good|no}} || {{good|no}} || {{good|no}}
|-
|-
| Repeatable read || {{good|no}} || {{good|no}} || {{bad|yes}}
|रिपीटेबल रीड
|| {{good|no}} || {{good|no}} || {{bad|yes}}
|-
|-
| Read committed || {{good|no}} || {{bad|yes}} || {{bad|yes}}
|रीड कमिटेड
|| {{good|no}} || {{bad|yes}} || {{bad|yes}}
|-
|-
| Read uncommitted || {{bad|yes}} || {{bad|yes}} || {{bad|yes}}
|रीड अनकमिटेड
|| {{bad|yes}} || {{bad|yes}} || {{bad|yes}}
|}
|}
सीरियल करने योग्य एनॉमली सीरियल करने योग्य के समान नहीं है। अर्थात्, यह आवश्यक है, लेकिन पर्याप्त नहीं है कि एक क्रमबद्ध कार्यक्रम तीनों प्रकार की घटनाओं से मुक्त होना चाहिए।<ref name="sql-isolation"/>
एनॉमली सीरियलाइज़ेबल के समान नहीं है। अर्थात्, यह आवश्यक है, किन्तु पर्याप्त नहीं है कि सीरियलाइज़ेबल शेड्यूल तीनों प्रकार की घटनाओं से फ्री होना चाहिए।<ref name="sql-isolation"/>
 
 
== यह भी देखें ==
== यह भी देखें ==
* परमाणुता (डेटाबेस प्रणाली)
* अटॉमिसिटी (डेटाबेस सिस्टम)
* संगति (डेटाबेस प्रणाली)
* कंसिस्टेंसी (डेटाबेस सिस्टम)
* स्थायित्व (डेटाबेस प्रणाली)
* ड्यूरेबिलिटी (डेटाबेस सिस्टम)
* लॉक (डेटाबेस)
* लॉक (डेटाबेस)
* [[आशावादी समवर्ती नियंत्रण]]
* [[आशावादी समवर्ती नियंत्रण|ऑप्टिमिस्टिक कंकर्रेंसी कण्ट्रोल]]
* [[संबंधपरक डेटाबेस प्रबंधन प्रणाली]]
* [[संबंधपरक डेटाबेस प्रबंधन प्रणाली|रिलेशनल डेटाबेस मैनेजमेंट सिस्टम]]
* स्नैपशॉट आइसोलेशन
* स्नैपशॉट आइसोलेशन


==संदर्भ==
==संदर्भ==
{{Reflist}}
{{Reflist}}


==बाहरी संबंध==
==बाहरी संबंध==
Line 234: Line 236:
* [http://www.bailis.org/blog/when-is-acid-acid-rarely/ P.Bailis. When is "ACID" ACID? Rarely]
* [http://www.bailis.org/blog/when-is-acid-acid-rarely/ P.Bailis. When is "ACID" ACID? Rarely]


{{Authority control}}
[[Category:Created On 16/02/2023|Isolation (Database Systems)]]
 
[[Category:Machine Translated Page|Isolation (Database Systems)]]
{{DEFAULTSORT:Isolation (Database Systems)}}[[Category: डेटा प्रबंधन]] [[Category: लेनदेन प्रक्रिया]]  
[[Category:Pages with script errors|Isolation (Database Systems)]]
 
[[Category:Templates Vigyan Ready|Isolation (Database Systems)]]
 
[[Category:Wikipedia articles needing clarification from June 2021|Isolation (Database Systems)]]
 
[[Category:डेटा प्रबंधन|Isolation (Database Systems)]]
[[Category: Machine Translated Page]]
[[Category:लेनदेन प्रक्रिया|Isolation (Database Systems)]]
[[Category:Created On 16/02/2023]]

Latest revision as of 15:18, 27 October 2023

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

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

आइसोलेशन को सामान्यतः डेटाबेस लेवल पर प्रॉपर्टी के रूप में डिफाइन किया जाता है जो यह डिफाइन करता है कि कैसे या कब ऑपरेशन द्वारा किए गए परिवर्तन दूसरों को दिखाई देने लगते हैं। प्राचीन सिस्टमों पर, इसे टेम्पररी टेबल्स के उपयोग के माध्यम से व्यवस्थित रूप से प्रारम्भ किया जा सकता है। द्वि-टायर सिस्टमों में, आइसोलेशन को मेन्टेन रखने के लिए ट्रांसक्शन प्रोसेसिंग (टीपी) मैनेजर की आवश्यकता होती है। n-टियर सिस्टम में (जैसे कि कई वेबसाइटें फ्लाइट में अंतिम सीट बुक करने का प्रयास करती हैं), बुकिंग करने और कस्टमर को पुष्टि भेजने के लिए संग्रहीत प्रक्रियाओं और ट्रांसक्शन मैनेजमेंट के संयोजन की आवश्यकता होती है।[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!)

बाहरी संबंध