आइसोलेशन (डेटाबेस सिस्टम): Difference between revisions
No edit summary |
No edit summary |
||
(11 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> | |||
आइसोलेशन को सामान्यतः डेटाबेस लेवल पर प्रॉपर्टी के रूप में डिफाइन किया जाता है जो यह डिफाइन करता है कि कैसे या कब ऑपरेशन द्वारा किए गए परिवर्तन दूसरों को दिखाई देने लगते हैं। प्राचीन सिस्टमों पर, इसे टेम्पररी टेबल्स के उपयोग के माध्यम से व्यवस्थित रूप से प्रारम्भ किया जा सकता है। द्वि-टायर सिस्टमों में, आइसोलेशन को मेन्टेन रखने के लिए ट्रांसक्शन प्रोसेसिंग (टीपी) मैनेजर की आवश्यकता होती है। 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> | |||
[[ | आइसोलेशन चार एसीआईडी गुणों के साथ [[परमाणुता (डेटाबेस सिस्टम)|अटॉमिसिटी (डेटाबेस सिस्टम)]], [[संगति (डेटाबेस सिस्टम)|कंसिस्टेंसी (डेटाबेस सिस्टम)]] और [[स्थायित्व (डेटाबेस सिस्टम)|ड्यूरेबिलिटी (डेटाबेस सिस्टम)]] में से है। | ||
== | == कंकर्रेंसी कण्ट्रोल == | ||
कंकर्रेंसी कण्ट्रोल में डीबीएमएस में अंतर्निहित सेट सम्मलित होते हैं जो आइसोलेशन को संभालते हैं और संबंधित शुद्धता की आश्वासन देते हैं। समवर्ती ट्रांसक्शन के सही निष्पादन का आश्वासन देने के लिए और (विभिन्न तंत्रों के माध्यम से) अन्य डीबीएमएस प्रक्रियाओं की शुद्धता का आश्वासन देने के लिए डेटाबेस और स्टोरेज इंजन दोनों द्वारा इसका भारी उपयोग किया जाता है। लेन-देन से संबंधित सेट सामान्यतः डेटाबेस डेटा एक्सेस ऑपरेशंस के समय ([[अनुसूची (कंप्यूटर विज्ञान)]]) को [[क्रमबद्धता]] और पुनर्प्राप्ति योग्यता के अनुसूची गुणों के रूप में वर्णित कुछ आदेशों तक सीमित करते हैं। डेटाबेस एक्सेस ऑपरेशन निष्पादन को बाधित करने का तात्पर्य सामान्यतः अल्प प्रदर्शन (निष्पादन की दरों से मापा जाता है), और इस प्रकार संगामिति नियंत्रण सेट को सामान्यतः बाधाओं के अंतर्गत सर्वोत्तम प्रदर्शन प्रदान करने के लिए निर्मित किया गया है। प्रायः, जब संभव हो तो शुद्धता को हानि पहुँचाए बिना, उत्तम प्रदर्शन के लिए क्रमबद्धता संपत्ति से समाधान किया जाता है। चूँकि, पुनर्प्राप्ति क्षमता से समाधान नहीं किया जा सकता है, क्योंकि सामान्यतः त्वरित डेटाबेस इंटीग्रिटी उल्लंघन का परिणाम होता है। | |||
निम्नलिखित उदाहरणों में, दो लेन-देन होते हैं। लेन-देन 1 में, क्वेरी निष्पादित की जाती है, फिर | [[डीबीएमएस]] में दो-चरण लॉकिंग सबसे सामान्यः लेन-देन कंकर्रेंसी कण्ट्रोल विधि है, जिसका उपयोग शुद्धता क्रमिकता और पुनर्प्राप्ति दोनों प्रदान करने के लिए किया जाता है। किसी डेटाबेस वस्तु तक पहुँचने के लिए किसी लेन-देन को पूर्व इस वस्तु के लिए [[लॉक (डेटाबेस)]] प्राप्त करने की आवश्यकता होती है। एक्सेस ऑपरेशन प्रकार (उदाहरण के लिए, किसी ऑब्जेक्ट को पढ़ना या लिखना) और लॉक प्रकार पर निर्भर करते हुए, लॉक को प्राप्त करना अवरुद्ध और स्थगित किया जा सकता है, यदि कोई अन्य लेन-देन उस ऑब्जेक्ट के लिए लॉक रखता है। | ||
== रीड फिनामिना == | |||
एएनएसआई/आईएसओ मानक एसक्यूएल (SQL) 92 तीन भिन्न-भिन्न पठन परिघटनाओं को संदर्भित करता है जब लेन-देन उस डेटा को पुनः प्राप्त करता है जिसे किसी अन्य लेन-देन ने अपडेट किया हो। | |||
निम्नलिखित उदाहरणों में, दो लेन-देन होते हैं। लेन-देन 1 में, क्वेरी निष्पादित की जाती है, फिर ट्रांसक्शन 2 में, अद्यतन किया जाता है, और अंत में ट्रांसक्शन 1 में, वही क्वेरी फिर से की जाती है। | |||
उदाहरण निम्नलिखित संबंध का उपयोग करते हैं: | उदाहरण निम्नलिखित संबंध का उपयोग करते हैं: | ||
{|class="wikitable" | {|class="wikitable" | ||
|+ | |+ यूजर | ||
!आईडी | !आईडी | ||
!नाम | !नाम | ||
Line 30: | Line 32: | ||
|} | |} | ||
=== | === डर्टी रेड्स === | ||
अपरिष्कृत पठन (अप्रतिबंधित निर्भरता) तब होता है जब लेन-देन पंक्ति को पुनः प्राप्त करता है जिसे किसी अन्य लेन-देन द्वारा अद्यतन किया गया है जो अभी तक प्रतिबद्ध नहीं है। | |||
इस उदाहरण में, लेन-देन 1 आईडी 1 के साथ पंक्ति को पुनः प्राप्त करता है,: फिर लेन-देन 2 पंक्ति को आईडी 1 के साथ अद्यतन करता है, और अंत में | इस उदाहरण में, लेन-देन 1 आईडी 1 के साथ पंक्ति को पुनः प्राप्त करता है,: फिर लेन-देन 2 पंक्ति को आईडी 1 के साथ अद्यतन करता है, और अंत में ट्रांसक्शन 1 आईडी 1 के साथ पंक्ति को फिर से प्राप्त करता है। अब यदि लेन-देन 2 अपने अपडेट को वापस ले लेता है (पूर्व से ही लेन-देन 1 द्वारा पुनर्प्राप्त किया गया है) या अन्य अपडेट करता है, तो लेन-देन में पंक्ति का दृश्य अशुद्ध हो सकता है। लेन-देन 1 में पढ़ा गया है आइसोलेशन लेवल पर, दूसरा लेन-देन 1 में चयन अद्यतन पंक्ति को पुनः प्राप्त करता है। यह अशुद्ध पठन है। रीड कमिटेड, रिपीटेबल रीड, और सीरियलाइज़ेबल आइसोलेशन लेवल पर, लेन-देन 1 में दूसरा सेलेक्ट प्रारंभिक पंक्ति को पुनः प्राप्त करता है। | ||
{| | {| | ||
Line 74: | Line 76: | ||
गैर-दोहराने योग्य पठन तब होता है जब लेन-देन पंक्ति को दो बार प्राप्त करता है और उस पंक्ति को किसी अन्य लेन-देन द्वारा अद्यतन किया जाता है जो मध्य में प्रतिबद्ध होता है। | गैर-दोहराने योग्य पठन तब होता है जब लेन-देन पंक्ति को दो बार प्राप्त करता है और उस पंक्ति को किसी अन्य लेन-देन द्वारा अद्यतन किया जाता है जो मध्य में प्रतिबद्ध होता है। | ||
इस उदाहरण में, लेन-देन 1 आईडी 1 के साथ पंक्ति को पुनः प्राप्त करता है, फिर लेन-देन 2 आईडी 1 के साथ पंक्ति को अपडेट करता है और प्रतिबद्ध होता है, और अंत में | इस उदाहरण में, लेन-देन 1 आईडी 1 के साथ पंक्ति को पुनः प्राप्त करता है, फिर लेन-देन 2 आईडी 1 के साथ पंक्ति को अपडेट करता है और प्रतिबद्ध होता है, और अंत में ट्रांसक्शन 1 आईडी 1 के साथ पंक्ति को फिर से प्राप्त करता है। रीड अनकमिटेड और रीड कमिटेड आइसोलेशन लेवल पर, ट्रांजैक्शन 1 में दूसरा सेलेक्ट अपडेटेड रो को रिट्रीव करता है: यह नॉन-रिपीटेबल रीड है। रिपीटेबल रीड और सेरिअलिज़ाब्ली (SERIALIZABLE) आइसोलेशन लेवल पर, लेन-देन 1 में दूसरा सेलेक्ट प्रारंभिक पंक्ति को पुनः प्राप्त करता है। | ||
{| | {| | ||
Line 104: | Line 106: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |} | ||
=== फैंटम रीड === | === फैंटम रीड === | ||
फैंटम रीड तब होता है जब लेन-देन दो बार | फैंटम रीड तब होता है जब लेन-देन दो बार रो के सेट को पुनः प्राप्त करता है और नई रो को उस सेट में डाला जाता है या मध्य में किए गए किसी अन्य ट्रांसक्शन द्वारा हटा दिया जाता है। | ||
इस उदाहरण में, लेन-देन 1 17 से अधिक आयु के साथ | इस उदाहरण में, लेन-देन 1 17 से अधिक आयु के साथ रो के सेट को पुनः प्राप्त करता है, फिर लेन-देन 2 26 वर्ष की आयु के साथ पंक्ति सम्मिलित करता है और प्रतिबद्ध होता है, और अंत में लेन-देन 1 रो के सेट को 17 से अधिक आयु के साथ पुनः प्राप्त करता है। रीड अनकमिटेड, रीड कमिटेड, और रिपीटेबल रीड आइसोलेशन लेवल पर, ट्रांजैक्शन 1 में दूसरा सेलेक्ट रो के नए सेट को पुनः प्राप्त करता है जिसमें सम्मिलित पंक्ति सम्मलित होती है: यह फैंटम रीड है। सेरिअलिज़ाब्ली आइसोलेशन लेवल पर, लेन-देन 1 में दूसरा चयन रो के प्रारंभिक सेट को पुनः प्राप्त करता है। | ||
{| | {| | ||
Line 138: | Line 139: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |} | ||
नॉन-रिपीटेबल रीड्स और फैंटम रीड्स को रोकने के लिए दो बुनियादी रणनीतियों का उपयोग किया जाता है। पहली रणनीति में, लॉक-आधारित संगामिति नियंत्रण, लेन-देन 1 के प्रतिबद्ध होने या वापस लुढ़कने के बाद | नॉन-रिपीटेबल रीड्स और फैंटम रीड्स को रोकने के लिए दो बुनियादी रणनीतियों का उपयोग किया जाता है। पहली रणनीति में, लॉक-आधारित संगामिति नियंत्रण, लेन-देन 1 के प्रतिबद्ध होने या वापस लुढ़कने के बाद ट्रांसक्शन 2 प्रतिबद्ध होता है। यह सीरियल शेड्यूल (कंप्यूटर साइंस) T1, T2 का उत्पादन करता है। अन्य रणनीति में, बहुसंस्कृति कंकर्रेंसी कण्ट्रोल, लेन-देन 2 तुरंत प्रतिबद्ध होता है, जबकि लेन-देन 1, जो लेन-देन 2 से पहले प्रारम्भ हुआ था, लेन-देन 1 के प्रारम्भ में लिए गए डेटाबेस के पुराने स्नैपशॉट पर काम करना प्रस्तावित रखता है, और जब लेन-देन 1 अंततः प्रतिबद्ध करने की कोशिश करता है , यदि कमिटमेंट का परिणाम सीरियल शेड्यूल T1, T2 के बराबर होगा, तो ट्रांजैक्शन 1 प्रतिबद्ध है; अन्यथा, प्रतिबद्ध विरोध होता है और ट्रांसक्शन 1 को क्रमांकन विफलता के साथ वापस ले लिया जाता है। | ||
लॉक-आधारित | लॉक-आधारित कंकर्रेंसी कण्ट्रोल के अंतर्गत, नॉन-रिपीटेबल रीड्स और फैंटम रीड तब हो सकते हैं जब सेलेक्ट करते समय रीड लॉक प्राप्त नहीं होते हैं, या जब सेलेक्ट होते ही प्रभावित रो पर अधिग्रहीत लॉक प्रस्तावित हो जाते हैं। [[बहुसंस्करण समवर्ती नियंत्रण|बहुसंस्करण कंकर्रेंसी कण्ट्रोल]] के अंतर्गत, गैर-दोहराए जाने योग्य रीड्स और फैंटम रीड्स तब हो सकते हैं जब कमिट विरोध से प्रभावित ट्रांसक्शन को रोल बैक करने की आवश्यकता को आराम दिया जाता है। | ||
== आइसोलेशन | == आइसोलेशन लेवल == | ||
[[डेटाबेस प्रबंधन प्रणाली]] (डेटाबेस मैनेजमेंट | [[डेटाबेस प्रबंधन प्रणाली|डेटाबेस प्रबंधन सिस्टम]] (डेटाबेस मैनेजमेंट सिस्टम) में चार एसीआईडी गुणों में से, आइसोलेशन गुण सबसे अधिक सुविधा देने वाला गुण है। आइसोलेशन के उच्चतम लेवल को बनाए रखने का प्रयास करते समय, डीबीएमएस सामान्यतः डेटा पर लॉक (डेटाबेस) प्राप्त करता है, जिसके परिणामस्वरूप संगामिति (कंप्यूटर विज्ञान) को हानि हो सकती है, या बहुसंस्करण संगामिति नियंत्रण प्रारम्भ करता है। [[सॉफ़्टवेयर एप्लिकेशन]] को सही रूप से कार्य करने के लिए इसमें लॉजिक जोड़ने की आवश्यकता होती है। | ||
अधिकांश डीबीएमएस कई लेन-देन आइसोलेशन स्तरों को प्रस्तुत करते हैं, जो डेटा का चयन करते समय होने वाली लॉकिंग की डिग्री को नियंत्रित करते हैं। कई डेटाबेस अनुप्रयोगों के लिए, अधिकांश डेटाबेस | अधिकांश डीबीएमएस कई लेन-देन आइसोलेशन स्तरों को प्रस्तुत करते हैं, जो डेटा का चयन करते समय होने वाली लॉकिंग की डिग्री को नियंत्रित करते हैं। कई डेटाबेस अनुप्रयोगों के लिए, अधिकांश डेटाबेस ट्रांसक्शन उच्च आइसोलेशन स्तरों (जैसे सेरिअलिज़ाब्ली लेवल) की आवश्यकता से बचने के लिए बनाए जा सकते हैं, इस प्रकार सिस्टम के लिए लॉकिंग ओवरहेड को अल्प करते हैं। प्रोग्रामर को डेटाबेस एक्सेस कोड का सावधानीपूर्वक विश्लेषण करना चाहिए जिससे यह सुनिश्चित किया जा सके कि आइसोलेशन की किसी भी सुविधा के कारण सॉफ़्टवेयर बग नहीं मिलते हैं जिन्हें विलोकना करना कठिन होता है। इसके विपरीत, यदि उच्च आइसोलेशन स्तरों का उपयोग किया जाता है, तो [[गतिरोध]] की संभावना बढ़ जाती है, जिससे बचने के लिए सावधानीपूर्वक विश्लेषण और प्रोग्रामिंग तकनीकों की भी आवश्यकता होती है। | ||
चूँकि प्रत्येक आइसोलेशन | चूँकि प्रत्येक आइसोलेशन लेवल नीचे की तुलना में अधिक शक्तिशाली होता है, इसमें कोई भी उच्च आइसोलेशन लेवल किसी निम्न लेवल द्वारा निषिद्ध कार्यतत्परता की अनुमति नहीं देता है, मानक डीबीएमएस को आइसोलेशन लेवल पर ट्रांसक्शन चलाने की अनुमति देता है जो कि अनुरोध किए गए से अधिक शक्तिशाली होता है (उदाहरण के लिए, पढ़ा हुआ ट्रांसक्शन हो सकता है) वास्तव में बार-बार पढ़ने योग्य आइसोलेशन लेवल पर किया जाता है। | ||
मानकीकरण [[SQL|एसक्यूएल]] मानक के लिए अमेरिकी राष्ट्रीय मानक संस्थान/अंतर्राष्ट्रीय संगठन द्वारा परिभाषित आइसोलेशन | मानकीकरण [[SQL|एसक्यूएल]] मानक के लिए अमेरिकी राष्ट्रीय मानक संस्थान/अंतर्राष्ट्रीय संगठन द्वारा परिभाषित आइसोलेशन लेवल निम्नानुसार सूचीबद्ध हैं। | ||
=== | === सीरियलइजबल === | ||
यह आइसोलेशन का उच्चतम | यह आइसोलेशन का उच्चतम लेवल है। | ||
लॉक-आधारित संगामिति नियंत्रण डीबीएमएस कार्यान्वयन के साथ, क्रमबद्धता के लिए लेन-देन के अंत में | लॉक-आधारित संगामिति नियंत्रण डीबीएमएस कार्यान्वयन के साथ, क्रमबद्धता के लिए लेन-देन के अंत में प्रस्तावित होने के लिए पढ़ने और लिखने वाले लॉक (चयनित डेटा पर अधिग्रहित) की आवश्यकता होती है। साथ ही श्रेणी-लॉक तब भी प्राप्त किया जाना चाहिए जब सेलेक्ट (एसक्यूएल) क्वेरी विस्तृत वेयर (WHERE) क्लॉज का उपयोग करती है, विशेष रूप से 'आइसोलेशन (डेटाबेस सिस्टम) फैंटम रीड्स' घटना से बचने के लिए करती है। | ||
गैर-लॉक आधारित | गैर-लॉक आधारित कंकर्रेंसी कण्ट्रोल का उपयोग करते समय, कोई लॉक प्राप्त नहीं किया जाता है; चूँकि, यदि सिस्टम कई समवर्ती लेन-देन के मध्य लेखन विरोध को ज्ञात करना है, तो उनमें से केवल एक को ही प्रतिबद्ध होने की अनुमति होती है। इस विषय पर अधिक विवरण के लिए [[स्नैपशॉट अलगाव|स्नैपशॉट आइसोलेशन]] देखें। | ||
प्रेषक: (द्वितीय अनौपचारिक समीक्षा प्रारूप) आईएसओ/आईईसी 9075:1992, डेटाबेस | प्रेषक: (द्वितीय अनौपचारिक समीक्षा प्रारूप) आईएसओ/आईईसी 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> | ||
=== | === रीड कमिटेड === | ||
इस आइसोलेशन | इस आइसोलेशन लेवल में, लॉक-आधारित कंकर्रेंसी कण्ट्रोल डीबीएमएस कार्यान्वयन लेन-देन के अंत तक राइट लॉक (चयनित डेटा पर प्राप्त) रखता है, किन्तु जैसे ही सेलेक्ट (एसक्यूएल) ऑपरेशन किया जाता है, रीड लॉक प्रस्तावित हो जाते हैं (इसलिए आइसोलेशन (डेटाबेस सिस्टम)नॉन-रिपीटेबल रीड्स, नॉन-रिपीटेबल रीड्स इवेंट इस आइसोलेशन लेवल में हो सकता है)। पिछले लेवल के जैसे, श्रेणी -लॉक को प्रबंधित नहीं किया जाता है। | ||
इसे सरल शब्दों में कहें तो रीड कमिटेड आइसोलेशन लेवल है जो | इसे सरल शब्दों में कहें तो रीड कमिटेड आइसोलेशन लेवल है जो आश्वासन देता है कि कोई भी डेटा रीड उसी समय कमिट हो जाता है जब वह पढ़ा जाता है। यह पाठक को किसी भी मध्यवर्ती, अप्रतिबद्ध, 'अपरिष्कृत' पढ़ने को देखने से रोकता है। यह कोई वचन नहीं करता है कि यदि लेन-देन रीड को फिर से प्रस्तावित करता है, तो उसे वही डेटा मिलेगा; पढ़ने के पश्चात डेटा परिवर्तन के लिए स्वतंत्र है। | ||
=== | === रीड अनकमिटेड === | ||
यह आइसोलेशन का सबसे निचला | यह आइसोलेशन का सबसे निचला लेवल है। इस लेवल पर, 'आइसोलेशन (डेटाबेस सिस्टम) डर्टी रीड्स' की अनुमति देता है, इसलिए लेन-देन अन्य ट्रांसक्शन द्वारा किए गए अभी तक प्रतिबद्ध नहीं किए गए परिवर्तनों को देख सकता है। | ||
== डिफ़ॉल्ट आइसोलेशन | == डिफ़ॉल्ट आइसोलेशन लेवल == | ||
विभिन्न डेटाबेस प्रबंधन | विभिन्न डेटाबेस प्रबंधन सिस्टमों का डिफ़ॉल्ट आइसोलेशन लेवल अधिक व्यापक रूप से भिन्न होता है। अधिकांश डेटाबेस जो लेन-देन की सुविधा देते हैं, यूजर को किसी भी आइसोलेशन लेवल को सेट करने की अनुमति देते हैं। लॉक प्राप्त करने के लिए सेलेक्ट स्टेटमेंट करते समय कुछ डीबीएमएस को अतिरिक्त सिंटैक्स की भी आवश्यकता होती है (उदाहरण के लिए एक्सेस की गई रो पर एक्सक्लूसिव राइट लॉक प्राप्त करने के लिए SELECT FOR UPDATE) करते है। | ||
चूँकि, ऊपर दी गई परिभाषाओं की अस्पष्ट होने के रूप में आलोचना की गई है, और कई डेटाबेस द्वारा प्रदान किए गए आइसोलेशन को | चूँकि, ऊपर दी गई परिभाषाओं की अस्पष्ट होने के रूप में आलोचना की गई है, और कई डेटाबेस द्वारा प्रदान किए गए आइसोलेशन को त्रुटिहीन रूप से प्रतिबिंबित नहीं करते हैं: | ||
: यह पत्र आइसोलेशन के | : यह पत्र आइसोलेशन के लेवल को परिभाषित करने के लिए विसंगतिपूर्ण दृष्टिकोण में कई अल्पता को दर्शाता है। तीन एएनएसआई घटनाएं अस्पष्ट हैं, और यहां तक कि उनकी सबसे छोटी व्याख्याओं में कुछ विषम व्यवहारों को सम्मलित नहीं किया गया है, यह कुछ प्रति-सहज ज्ञान युक्त परिणामों की ओर जाता है। विशेष रूप से, लॉक-आधारित आइसोलेशन स्तरों में उनके एएनएसआई समकक्षों की तुलना में भिन्न विशेषताएं होती हैं। यह चिंताजनक है क्योंकि व्यावसायिक डेटाबेस सिस्टम सामान्यतः लॉकिंग कार्यान्वयन का उपयोग करते हैं। इसके अतिरिक्त, एएनएसआई घटना कई प्रकार के आइसोलेशन लेवल के व्यवहार के मध्य अंतर नहीं करती है जो वाणिज्यिक सिस्टमों में लोकप्रिय हैं।<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 184: | Line 184: | ||
| access-date = 29 July 2012 }} | | access-date = 29 July 2012 }} | ||
</ref> | </ref> | ||
एएनएसआई एसक्यूएल की आइसोलेशन परिभाषा से संबंधित अन्य आलोचनाएँ भी हैं, जिसमें यह कार्यान्वयनकर्ताओं को | एएनएसआई एसक्यूएल की आइसोलेशन परिभाषा से संबंधित अन्य आलोचनाएँ भी हैं, जिसमें यह कार्यान्वयनकर्ताओं को निकृष्ट कार्य करने के लिए प्रोत्साहित करती है: | ||
: | :यह धारणा पर सूक्ष्म विधियों पर निर्भर करता है कि आशावादी या बहु-संस्करण समवर्ती योजना के विपरीत कंकर्रेंसी कण्ट्रोल के लिए लॉकिंग स्कीमा का उपयोग किया जाता है। इसका तात्पर्य है कि प्रस्तावित शब्दार्थ अशुद्ध परिभाषित हैं।<ref>{{cite web | ||
| access-date = 2010-03-09 | | access-date = 2010-03-09 | ||
| publisher = DataStax | | publisher = DataStax | ||
Line 194: | 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" | ||
Line 204: | Line 202: | ||
!फैंटम रीड | !फैंटम रीड | ||
|- | |- | ||
| | |सीरियलाइज़ेबल | ||
|| {{good|no}} || {{good|no}} || {{good|no}} | || {{good|no}} || {{good|no}} || {{good|no}} | ||
|- | |- | ||
Line 210: | Line 208: | ||
|| {{good|no}} || {{good|no}} || {{bad|yes}} | || {{good|no}} || {{good|no}} || {{bad|yes}} | ||
|- | |- | ||
| | |रीड कमिटेड | ||
|| {{good|no}} || {{bad|yes}} || {{bad|yes}} | || {{good|no}} || {{bad|yes}} || {{bad|yes}} | ||
|- | |- | ||
| | |रीड अनकमिटेड | ||
|| {{bad|yes}} || {{bad|yes}} || {{bad|yes}} | || {{bad|yes}} || {{bad|yes}} || {{bad|yes}} | ||
|} | |} | ||
एनॉमली सीरियलाइज़ेबल के समान नहीं है। अर्थात्, यह आवश्यक है, किन्तु पर्याप्त नहीं है कि सीरियलाइज़ेबल शेड्यूल तीनों प्रकार की घटनाओं से फ्री होना चाहिए।<ref name="sql-isolation"/> | |||
== यह भी देखें == | == यह भी देखें == | ||
* | * अटॉमिसिटी (डेटाबेस सिस्टम) | ||
* | * कंसिस्टेंसी (डेटाबेस सिस्टम) | ||
* | * ड्यूरेबिलिटी (डेटाबेस सिस्टम) | ||
* लॉक (डेटाबेस) | * लॉक (डेटाबेस) | ||
* [[आशावादी समवर्ती नियंत्रण]] | * [[आशावादी समवर्ती नियंत्रण|ऑप्टिमिस्टिक कंकर्रेंसी कण्ट्रोल]] | ||
* [[संबंधपरक डेटाबेस प्रबंधन प्रणाली]] | * [[संबंधपरक डेटाबेस प्रबंधन प्रणाली|रिलेशनल डेटाबेस मैनेजमेंट सिस्टम]] | ||
* स्नैपशॉट आइसोलेशन | * स्नैपशॉट आइसोलेशन | ||
==संदर्भ== | ==संदर्भ== | ||
{{Reflist}} | {{Reflist}} | ||
==बाहरी संबंध== | ==बाहरी संबंध== | ||
Line 241: | 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] | ||
[[Category:Created On 16/02/2023|Isolation (Database Systems)]] | |||
[[Category:Machine Translated Page|Isolation (Database Systems)]] | |||
[[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: | [[Category:लेनदेन प्रक्रिया|Isolation (Database Systems)]] | ||
[[Category: |
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]
यह भी देखें
- अटॉमिसिटी (डेटाबेस सिस्टम)
- कंसिस्टेंसी (डेटाबेस सिस्टम)
- ड्यूरेबिलिटी (डेटाबेस सिस्टम)
- लॉक (डेटाबेस)
- ऑप्टिमिस्टिक कंकर्रेंसी कण्ट्रोल
- रिलेशनल डेटाबेस मैनेजमेंट सिस्टम
- स्नैपशॉट आइसोलेशन
संदर्भ
- ↑ "Isolation Levels in the Database Engine", TechNet, Microsoft, https://technet.microsoft.com/en-us/library/ms189122(v=SQL.105).aspx
- ↑ "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
- ↑ Vlad Mihalcea (2015-10-20). "A beginner's guide to read and write skew phenomena".
- ↑ "Postgresql wiki - SSI".
- ↑ 5.0 5.1 "A Critique of ANSI SQL Isolation Levels" (PDF). Retrieved 29 July 2012.
- ↑ 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!)
बाहरी संबंध
- Oracle® Database Concepts, chapter 13 Data Concurrency and Consistency, Preventable Phenomena and Transaction Isolation Levels
- Oracle® Database SQL Reference, chapter 19 SQL Statements: SAVEPOINT to UPDATE, SET TRANSACTION
- in JDBC: Connection constant fields, Connection.getTransactionIsolation(), Connection.setTransactionIsolation(int)
- in Spring Framework: @Transactional, Isolation
- P.Bailis. When is "ACID" ACID? Rarely