डेटाबेस ट्रांजैक्शन: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{Short description|Unit of work performed within a database management system}}एक '''[[डेटाबेस]] लेनदेन''' | {{Short description|Unit of work performed within a database management system}}एक '''[[डेटाबेस]] लेनदेन''' डेटाबेस के विरुद्ध [[डेटाबेस प्रबंधन प्रणाली]] (या समान प्रणाली) के अंदर किए गए कार्य की इकाई का प्रतीक है, जिसे अन्य लेनदेन से स्वतंत्र सुसंगत और विश्वसनीय तरीके से व्यवहार किया जाता है। लेनदेन सामान्यतः डेटाबेस में किसी भी बदलाव का प्रतिनिधित्व करता है। डेटाबेस वातावरण में लेनदेन के दो मुख्य उद्देश्य हैं: | ||
# कार्य की विश्वसनीय इकाइयाँ प्रदान करना जो विफलताओं से सही पुनर्प्राप्ति की अनुमति देती हैं और प्रणाली विफलता की स्थितियों में भी डेटाबेस को सुसंगत रखती हैं। उदाहरण के लिए: जब निष्पादन समय से पहले और अप्रत्याशित रूप से रुक जाता है (पूरी तरह या आंशिक रूप से) तब उस स्थिति में डेटाबेस पर अनेक ऑपरेशन अस्पष्ट स्थिति के साथ अधूरे रह जाते हैं। | # कार्य की विश्वसनीय इकाइयाँ प्रदान करना जो विफलताओं से सही पुनर्प्राप्ति की अनुमति देती हैं और प्रणाली विफलता की स्थितियों में भी डेटाबेस को सुसंगत रखती हैं। उदाहरण के लिए: जब निष्पादन समय से पहले और अप्रत्याशित रूप से रुक जाता है (पूरी तरह या आंशिक रूप से) तब उस स्थिति में डेटाबेस पर अनेक ऑपरेशन अस्पष्ट स्थिति के साथ अधूरे रह जाते हैं। | ||
# डेटाबेस तक | # डेटाबेस तक साथ पहुंचने वाले प्रोग्रामों के मध्य अलगाव प्रदान करना। यदि यह अलगाव प्रदान नहीं किया जाता है, तब कार्यक्रमों के परिणाम संभवतः ग़लत होंगे। | ||
डेटाबेस प्रबंधन प्रणाली में, लेन-देन तर्क या कार्य की | डेटाबेस प्रबंधन प्रणाली में, लेन-देन तर्क या कार्य की एकल इकाई होती है, जो कभी-कभी अनेक परिचालनों से बनी होती है। डेटाबेस में सुसंगत मोड में की गई कोई भी तार्किक गणना लेनदेन के रूप में जानी जाती है। इस प्रकार उदाहरण बैंक खाते से दूसरे बैंक खाते में स्थानांतरण है: संपूर्ण लेनदेन के लिए खाते से स्थानांतरित की जाने वाली राशि को घटाने और उसी राशि को दूसरे खाते में जोड़ने की आवश्यकता होती है। | ||
एक डेटाबेस लेनदेन, परिभाषा के अनुसार, [[ परमाणुता (डेटाबेस सिस्टम) |परमाणुता (डेटाबेस सिस्टम)]] होना चाहिए (यह या तब पूरी तरह से पूर्ण होना चाहिए या इसका कोई प्रभाव नहीं होना चाहिए), [[संगति (डेटाबेस सिस्टम)|सुसंगत]] (यह डेटाबेस में उपस्तिथ बाधाओं के अनुरूप होना चाहिए), पृथक (इसे अन्य लेनदेन को प्रभावित नहीं करना चाहिए) और टिकाऊ होना चाहिए (इसे लगातार भंडारण के लिए लिखा जाना चाहिए)।<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/aa366402(VS.85).aspx|title=What is a Transaction? (Windows)|website=msdn.microsoft.com}}</ref> डेटाबेस व्यवसायी अधिकांशतः संक्षिप्त नाम [[ACID|एसीआईडी]] का उपयोग करके डेटाबेस लेनदेन के इन गुणों को संदर्भित करते हैं। | एक डेटाबेस लेनदेन, परिभाषा के अनुसार, [[ परमाणुता (डेटाबेस सिस्टम) |परमाणुता (डेटाबेस सिस्टम)]] होना चाहिए (यह या तब पूरी तरह से पूर्ण होना चाहिए या इसका कोई प्रभाव नहीं होना चाहिए), [[संगति (डेटाबेस सिस्टम)|सुसंगत]] (यह डेटाबेस में उपस्तिथ बाधाओं के अनुरूप होना चाहिए), पृथक (इसे अन्य लेनदेन को प्रभावित नहीं करना चाहिए) और टिकाऊ होना चाहिए (इसे लगातार भंडारण के लिए लिखा जाना चाहिए)।<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/aa366402(VS.85).aspx|title=What is a Transaction? (Windows)|website=msdn.microsoft.com}}</ref> डेटाबेस व्यवसायी अधिकांशतः संक्षिप्त नाम [[ACID|एसीआईडी]] का उपयोग करके डेटाबेस लेनदेन के इन गुणों को संदर्भित करते हैं। | ||
==उद्देश्य== | ==उद्देश्य== | ||
डेटाबेस और अन्य डेटा स्टोर जो डेटा की अखंडता को सर्वोपरि मानते हैं, उनमें अधिकांशतः डेटा की अखंडता को बनाए रखने के लिए लेनदेन को संभालने की क्षमता सम्मिलित होती है। | डेटाबेस और अन्य डेटा स्टोर जो डेटा की अखंडता को सर्वोपरि मानते हैं, उनमें अधिकांशतः डेटा की अखंडता को बनाए रखने के लिए लेनदेन को संभालने की क्षमता सम्मिलित होती है। एकल लेन-देन में कार्य की या अधिक स्वतंत्र इकाइयाँ सम्मिलित होती हैं, प्रत्येक डेटाबेस या अन्य डेटा स्टोर में जानकारी को पढ़ना और/या लिखना। जब ऐसा होता है तब यह सुनिश्चित करना अधिकांशतः महत्वपूर्ण होता है कि ऐसी सभी प्रोसेसिंग डेटाबेस या डेटा स्टोर को सुसंगत स्थिति में छोड़ दे। | ||
डबल-एंट्री बहीखाता प्रणाली के उदाहरण अधिकांशतः लेनदेन की अवधारणा को दर्शाते हैं। दोहरी-प्रविष्टि लेखांकन में प्रत्येक डेबिट के लिए संबद्ध क्रेडिट की रिकॉर्डिंग की आवश्यकता होती है। यदि कोई किराने का सामान खरीदने के लिए $100 का चेक लिखता है, तब लेनदेन संबंधी दोहरी-प्रविष्टि लेखा प्रणाली को एकल लेनदेन को कवर करने के लिए निम्नलिखित दो प्रविष्टियाँ अंकित करनी होंगी: | डबल-एंट्री बहीखाता प्रणाली के उदाहरण अधिकांशतः लेनदेन की अवधारणा को दर्शाते हैं। दोहरी-प्रविष्टि लेखांकन में प्रत्येक डेबिट के लिए संबद्ध क्रेडिट की रिकॉर्डिंग की आवश्यकता होती है। यदि कोई किराने का सामान खरीदने के लिए $100 का चेक लिखता है, तब लेनदेन संबंधी दोहरी-प्रविष्टि लेखा प्रणाली को एकल लेनदेन को कवर करने के लिए निम्नलिखित दो प्रविष्टियाँ अंकित करनी होंगी: | ||
Line 16: | Line 16: | ||
# चेकिंग खाते में $100 क्रेडिट करें | # चेकिंग खाते में $100 क्रेडिट करें | ||
एक लेन-देन प्रणाली दोनों प्रविष्टियों को पास कर देगी या दोनों प्रविष्टियाँ विफल हो जाएंगी। एकाधिक प्रविष्टियों की रिकॉर्डिंग को कार्य की परमाणु लेनदेन इकाई के रूप में मानकर प्रणाली रिकॉर्ड किए गए डेटा की अखंडता को बनाए रखता है। दूसरे शब्दों में, कोई भी ऐसी स्थिति में नहीं पहुँचता जिसमें डेबिट अंकित किया जाता है किन्तु कोई संबद्ध क्रेडिट अंकित नहीं किया जाता है, या इसके विपरीत अंकित किया जाता हैं। | एक लेन-देन प्रणाली दोनों प्रविष्टियों को पास कर देगी या दोनों प्रविष्टियाँ विफल हो जाएंगी। इस प्रकार एकाधिक प्रविष्टियों की रिकॉर्डिंग को कार्य की परमाणु लेनदेन इकाई के रूप में मानकर प्रणाली रिकॉर्ड किए गए डेटा की अखंडता को बनाए रखता है। इस प्रकार दूसरे शब्दों में, कोई भी ऐसी स्थिति में नहीं पहुँचता जिसमें डेबिट अंकित किया जाता है किन्तु कोई संबद्ध क्रेडिट अंकित नहीं किया जाता है, या इसके विपरीत अंकित किया जाता हैं। | ||
==लेन-देन संबंधी डेटाबेस== | ==लेन-देन संबंधी डेटाबेस== | ||
ट्रांजेक्शनल डेटाबेस | '''ट्रांजेक्शनल डेटाबेस''' [[DBMS|डीबीएमएस]] है जो डेटाबेस ऑपरेशंस (स्टार्ट-कमिट) के ब्रैकेटेड समूह के लिए एसीआईडी गुण प्रदान करता है। लेन-देन के अंदर सभी लेखन परिचालनों पर सभी या कुछ भी नहीं प्रभाव पड़ता है, अर्थात, या तब लेन-देन सफल होता है और सभी लेखन प्रभावी होते हैं, या अन्यथा, डेटाबेस को ऐसी स्थिति में लाया जाता है जिसमें लेनदेन के किसी भी लेखन को सम्मिलित नहीं किया जाता है लेन-देन यह भी सुनिश्चित करते हैं कि समवर्ती लेन-देन का प्रभाव कुछ गारंटियों को पूरा करता है, जिन्हें [[अलगाव स्तर|पृथक स्तर]] के रूप में जाना जाता है। उच्चतम पृथक स्तर [[क्रमबद्धता]] है, जो गारंटी देता है कि समवर्ती लेनदेन का प्रभाव उनके क्रमिक (अर्थात अनुक्रमिक) निष्पादन के सामान्तर है। | ||
अधिकांश {{As of|2008|alt=आधुनिक}} [[संबंधपरक डेटाबेस प्रबंधन प्रणाली|संबंधपरक डेटाबेस प्रबंधन प्रणालियाँ]] लेनदेन का समर्थन करते हैं। No[[SQL]] डेटाबेस समवर्ती अपडेट और एक्सेस की स्थिति में डेटा स्थिरता की गारंटी के लिए लेनदेन का समर्थन करने के साथ-साथ स्केलेबिलिटी को प्राथमिकता देते हैं। | अधिकांश {{As of|2008|alt=आधुनिक}} [[संबंधपरक डेटाबेस प्रबंधन प्रणाली|संबंधपरक डेटाबेस प्रबंधन प्रणालियाँ]] लेनदेन का समर्थन करते हैं। No[[SQL]] डेटाबेस समवर्ती अपडेट और एक्सेस की स्थिति में डेटा स्थिरता की गारंटी के लिए लेनदेन का समर्थन करने के साथ-साथ स्केलेबिलिटी को प्राथमिकता देते हैं। | ||
एक [[डेटाबेस प्रणाली]] में, | एक [[डेटाबेस प्रणाली]] में, लेन-देन में या अधिक डेटा-हेरफेर कथन और प्रश्न सम्मिलित हो सकते हैं, प्रत्येक डेटाबेस में जानकारी पढ़ना और/या लिखना। डेटाबेस प्रणाली के उपयोगकर्ता डेटा की स्थिरता और डेटा की अखंडता को अत्यधिक महत्वपूर्ण मानते हैं। साधारण लेन-देन सामान्यतः निम्नलिखित के समान पैटर्न का उपयोग करके, लेन-देन में लिपटे SQL जैसी भाषा में डेटाबेस प्रणाली को जारी किया जाता है: | ||
# लेन-देन प्रारंभ करें. | # लेन-देन प्रारंभ करें. | ||
# डेटा हेरफेर और/या प्रश्नों का | # डेटा हेरफेर और/या प्रश्नों का समूह निष्पादित करें। | ||
# यदि कोई त्रुटि नहीं होती है, तब लेनदेन करें। | # यदि कोई त्रुटि नहीं होती है, तब लेनदेन करें। | ||
# यदि कोई त्रुटि होती है, तब लेनदेन को वापस ले लें। | # यदि कोई त्रुटि होती है, तब लेनदेन को वापस ले लें। | ||
एक लेन-देन प्रतिबद्ध ऑपरेशन डेटाबेस में लेन-देन के सीमा के अंदर डेटा हेरफेर के सभी परिणामों को जारी रखता है। लेन-देन रोलबैक ऑपरेशन डेटाबेस में लेन-देन के सीमा के अंदर डेटा हेरफेर के आंशिक परिणामों को जारी नहीं रखता है। किसी भी स्थिति में डेटाबेस के लिए आंशिक लेनदेन नहीं किया जा सकता क्योंकि इससे डेटाबेस असंगत स्थिति में रह जाएगा। | एक लेन-देन प्रतिबद्ध ऑपरेशन डेटाबेस में लेन-देन के सीमा के अंदर डेटा हेरफेर के सभी परिणामों को जारी रखता है। लेन-देन रोलबैक ऑपरेशन डेटाबेस में लेन-देन के सीमा के अंदर डेटा हेरफेर के आंशिक परिणामों को जारी नहीं रखता है। इस प्रकार किसी भी स्थिति में डेटाबेस के लिए आंशिक लेनदेन नहीं किया जा सकता क्योंकि इससे डेटाबेस असंगत स्थिति में रह जाएगा। | ||
आंतरिक रूप से, बहु-उपयोगकर्ता डेटाबेस अधिकांशतः लेनदेन [[पहचानकर्ता]] या एक्सआईडी का उपयोग करके लेनदेन को संग्रहीत और संसाधित करते हैं। | आंतरिक रूप से, बहु-उपयोगकर्ता डेटाबेस अधिकांशतः लेनदेन [[पहचानकर्ता]] या एक्सआईडी का उपयोग करके लेनदेन को संग्रहीत और संसाधित करते हैं। | ||
ऊपर बताए गए सरल तरीके के अतिरिक्त लेन-देन को क्रियान्वित करने के अनेक भिन्न-भिन्न तरीके हैं। उदाहरण के लिए, [[नेस्टेड लेन-देन]] वह लेन-देन होते हैं जिनमें ऐसे विवरण होते हैं जो नए लेन-देन (अर्थात उप-लेन-देन) प्रारंभ करते हैं। बहु-स्तरीय लेनदेन नेस्टेड लेनदेन का | ऊपर बताए गए सरल तरीके के अतिरिक्त लेन-देन को क्रियान्वित करने के अनेक भिन्न-भिन्न तरीके हैं। उदाहरण के लिए, [[नेस्टेड लेन-देन]] वह लेन-देन होते हैं जिनमें ऐसे विवरण होते हैं जो नए लेन-देन (अर्थात उप-लेन-देन) प्रारंभ करते हैं। इस प्रकार बहु-स्तरीय लेनदेन नेस्टेड लेनदेन का प्रकार है जहां उप-लेनदेन स्तरित प्रणाली आर्किटेक्चर के विभिन्न स्तरों पर होते हैं (उदाहरण के लिए, डेटाबेस-इंजन स्तर पर ऑपरेशन, ऑपरेटिंग-प्रणाली स्तर पर ऑपरेशन)।<ref>{{cite journal |last1=Beeri |first1=C. |last2=Bernstein |first2=P. A. |last3=Goodman |first3=N. |title=नेस्टेड लेनदेन प्रणालियों में समवर्तीता के लिए एक मॉडल|journal=Journal of the ACM |volume=36 |issue=1 |pages=230–269 |year=1989 |doi=10.1145/62044.62046|s2cid=12956480 }}</ref> अन्य प्रकार का लेन-देन क्षतिपूर्ति लेन-देन है। | ||
===एसक्यूएल में=== | ===एसक्यूएल में=== | ||
अधिकांश एसक्यूएल डेटाबेस कार्यान्वयन में लेनदेन उपलब्ध हैं, यद्यपि शक्तिशाली होने के विभिन्न स्तरों के साथ। उदाहरण के लिए, [[MySQL]] ने प्रारंभिक संस्करण 3.23 से लेनदेन का समर्थन करना प्रारंभ कर दिया था, किन्तु [[InnoDB]] स्टोरेज इंजन संस्करण 5.5 से पहले डिफ़ॉल्ट नहीं था। पहले उपलब्ध स्टोरेज इंजन, [[MyISAM]] लेनदेन का समर्थन नहीं करता है। | अधिकांश एसक्यूएल डेटाबेस कार्यान्वयन में लेनदेन उपलब्ध हैं, यद्यपि शक्तिशाली होने के विभिन्न स्तरों के साथ। उदाहरण के लिए, [[MySQL]] ने प्रारंभिक संस्करण 3.23 से लेनदेन का समर्थन करना प्रारंभ कर दिया था, किन्तु [[InnoDB]] स्टोरेज इंजन संस्करण 5.5 से पहले डिफ़ॉल्ट नहीं था। पहले उपलब्ध स्टोरेज इंजन, [[MyISAM]] लेनदेन का समर्थन नहीं करता है। | ||
लेनदेन सामान्यतः <code>BEGIN</code> कमांड का उपयोग करके प्रारंभ किया जाता है (यद्यपि एसक्यूएल मानक <code>START TRANSACTION</code>निर्दिष्ट करता है। जब सिस्टम | लेनदेन सामान्यतः <code>BEGIN</code> कमांड का उपयोग करके प्रारंभ किया जाता है (यद्यपि एसक्यूएल मानक <code>START TRANSACTION</code>निर्दिष्ट करता है। जब सिस्टम COMMIT स्टेटमेंट को संसाधित करता है, तो लेनदेन सफलतापूर्वक पूरा होने के साथ समाप्त होता है। <code>[[Rollback (data management)|ROLLBACK]]</code> स्टेटमेंट लेन-देन को समाप्त भी कर सकता है, उसके पश्चात् से किए गए किसी भी कार्य को पूर्ववत कर सकता है <code>BEGIN</code>के बाद से किए गए किसी भी कार्य को पूर्ववत कर सकता है। यदि लेनदेन की शुरुआत के साथ ऑटोकमिट को अक्षम कर दिया गया था, तो लेनदेन के अंत के साथ ऑटोकमिट को भी फिर से सक्षम किया जाएगा। | ||
कोई व्यक्ति व्यक्तिगत लेनदेन संचालन के साथ-साथ वैश्विक स्तर पर भी पृथक (डेटाबेस सिस्टम) समूह कर सकता है। उच्चतम स्तर पर (<code>READ COMMITTED</code>), लेनदेन प्रारंभ होने के पश्चात् किए गए किसी भी ऑपरेशन का परिणाम लेनदेन समाप्त होने तक अन्य डेटाबेस उपयोगकर्ताओं के लिए अदृश्य रहेगा। सबसे निचले स्तर पर (<code>READ UNCOMMITTED</code>), जिसका उपयोग कभी-कभी उच्च समवर्तीता सुनिश्चित करने के लिए किया जा सकता है, ऐसे परिवर्तन तुरंत दिखाई देंगे। | कोई व्यक्ति व्यक्तिगत लेनदेन संचालन के साथ-साथ वैश्विक स्तर पर भी पृथक (डेटाबेस सिस्टम) समूह कर सकता है। उच्चतम स्तर पर (<code>READ COMMITTED</code>), लेनदेन प्रारंभ होने के पश्चात् किए गए किसी भी ऑपरेशन का परिणाम लेनदेन समाप्त होने तक अन्य डेटाबेस उपयोगकर्ताओं के लिए अदृश्य रहेगा। सबसे निचले स्तर पर (<code>READ UNCOMMITTED</code>), जिसका उपयोग कभी-कभी उच्च समवर्तीता सुनिश्चित करने के लिए किया जा सकता है, ऐसे परिवर्तन तुरंत दिखाई देंगे। | ||
Line 46: | Line 46: | ||
रिलेशनल डेटाबेस पारंपरिक रूप से निश्चित आकार के फ़ील्ड और रिकॉर्ड वाली तालिकाओं से बने होते हैं। ऑब्जेक्ट डेटाबेस में परिवर्तनीय आकार के [[बाइनरी बड़ी वस्तु|ब्लॉब्स]] सम्मिलित होते हैं, संभवतः क्रमांकन या माइम-प्रकार को सम्मिलित करते हुए। रिलेशनल और ऑब्जेक्ट डेटाबेस के मध्य मूलभूत समानताएं प्रारंभ और कमिट या [[रोलबैक (डेटा प्रबंधन)|रोलबैक]] हैं। | रिलेशनल डेटाबेस पारंपरिक रूप से निश्चित आकार के फ़ील्ड और रिकॉर्ड वाली तालिकाओं से बने होते हैं। ऑब्जेक्ट डेटाबेस में परिवर्तनीय आकार के [[बाइनरी बड़ी वस्तु|ब्लॉब्स]] सम्मिलित होते हैं, संभवतः क्रमांकन या माइम-प्रकार को सम्मिलित करते हुए। रिलेशनल और ऑब्जेक्ट डेटाबेस के मध्य मूलभूत समानताएं प्रारंभ और कमिट या [[रोलबैक (डेटा प्रबंधन)|रोलबैक]] हैं। | ||
लेन-देन प्रारंभ करने के पश्चात्, डेटाबेस रिकॉर्ड या ऑब्जेक्ट लॉक कर दिए जाते हैं, या तब केवल पढ़ने के लिए या पढ़ने के लिए लिखने के लिए। तब पढ़ना और लिखना हो सकता है। | इस प्रकार लेन-देन प्रारंभ करने के पश्चात्, डेटाबेस रिकॉर्ड या ऑब्जेक्ट लॉक कर दिए जाते हैं, या तब केवल पढ़ने के लिए या पढ़ने के लिए लिखने के लिए। तब पढ़ना और लिखना हो सकता है। बार जब लेन-देन पूरी तरह से परिभाषित हो जाता है, तब परिवर्तन किए जाते हैं या एटोमिसिटी (डेटाबेस सिस्टम) को वापस ले लिया जाता है, जैसे कि लेन-देन के अंत में कोई संगति (डेटाबेस सिस्टम) नहीं होती है। | ||
==[[वितरित लेनदेन|'''वितरित लेनदेन''']]== | ==[[वितरित लेनदेन|'''वितरित लेनदेन''']]== | ||
डेटाबेस प्रणाली वितरित लेनदेन को क्रियान्वित करते हैं<ref>{{Cite book|title=वितरित डेटाबेस सिस्टम के सिद्धांत, तीसरा संस्करण|publisher=Springer|last1=Özsu|first1=M. Tamer|last2=Valduriez|first2=Patrick|language=en|doi=10.1007/978-1-4419-8834-8|year = 2011|bibcode=2011podd.book.....O |isbn = 978-1-4419-8833-1}}</ref> इस प्रकार यह | डेटाबेस प्रणाली वितरित लेनदेन को क्रियान्वित करते हैं<ref>{{Cite book|title=वितरित डेटाबेस सिस्टम के सिद्धांत, तीसरा संस्करण|publisher=Springer|last1=Özsu|first1=M. Tamer|last2=Valduriez|first2=Patrick|language=en|doi=10.1007/978-1-4419-8834-8|year = 2011|bibcode=2011podd.book.....O |isbn = 978-1-4419-8833-1}}</ref> इस प्रकार यह से अधिक नोड्स पर डेटा तक पहुंचने वाले लेनदेन के रूप में एवं वितरित लेनदेन अनेक नोड्स पर एसीआईडी गुणों को क्रियान्वित करता है, और इसमें डेटाबेस, स्टोरेज मैनेजर, फ़ाइल सिस्टम, मैसेजिंग प्रणाली और अन्य डेटा मैनेजर जैसे प्रणाली सम्मिलित हो सकते हैं। इस प्रकार वितरित लेनदेन में सामान्यतः इकाई होती है जो सभी प्रक्रियाओं का समन्वय करती है जिससे कि यह सुनिश्चित किया जा सके कि लेनदेन के सभी हिस्से सभी प्रासंगिक प्रणालियों पर क्रियान्वित होते हैं। | ||
==लेन-देन संबंधी फाइल सिस्टम== | ==लेन-देन संबंधी फाइल सिस्टम== | ||
[[Linux|लिनक्स]] के लिए [[Namesys|नेमसिस]] [[Reiser4]] फ़ाइल सिस्टम<ref>{{cite web|url=https://www.linux.org/|title=लिनक्स.ऑर्ग|website=लिनक्स.ऑर्ग}}</ref> लेन-देन का समर्थन करता है, और [[Microsoft|माइक्रोसॉफ्ट]] [[Windows Vista|विंडोज विस्टा]] की तरह, माइक्रोसॉफ्ट [[NTFS|एनटीएफएस]] फ़ाइल प्रणाली<ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/ff361664(v=vs.110).aspx|title=एमएसडीएन लाइब्रेरी|access-date=16 October 2014}}</ref> पूरे नेटवर्क पर वितरित लेनदेन का समर्थन करता है। अधिक डेटा सुसंगत फाइल सिस्टम, जैसे कि [[वार्प ट्रांजेक्शनल फाइलसिस्टम|वार्प ट्रांजेक्शनल फाइल]]प्रणाली प्रणाली (डब्ल्यूटीएफ) पर शोध हो रहा है।<ref>https://www.usenix.org/system/files/conference/nsdi16/nsdi16-paper-escriva.pdf {{Bare URL PDF|date=March 2022}}</ref> | [[Linux|लिनक्स]] के लिए [[Namesys|नेमसिस]] [[Reiser4]] फ़ाइल सिस्टम<ref>{{cite web|url=https://www.linux.org/|title=लिनक्स.ऑर्ग|website=लिनक्स.ऑर्ग}}</ref> लेन-देन का समर्थन करता है, और [[Microsoft|माइक्रोसॉफ्ट]] [[Windows Vista|विंडोज विस्टा]] की तरह, माइक्रोसॉफ्ट [[NTFS|एनटीएफएस]] फ़ाइल प्रणाली<ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/ff361664(v=vs.110).aspx|title=एमएसडीएन लाइब्रेरी|access-date=16 October 2014}}</ref> पूरे नेटवर्क पर वितरित लेनदेन का समर्थन करता है। इस प्रकार अधिक डेटा सुसंगत फाइल सिस्टम, जैसे कि [[वार्प ट्रांजेक्शनल फाइलसिस्टम|वार्प ट्रांजेक्शनल फाइल]]प्रणाली प्रणाली (डब्ल्यूटीएफ) पर शोध हो रहा है।<ref>https://www.usenix.org/system/files/conference/nsdi16/nsdi16-paper-escriva.pdf {{Bare URL PDF|date=March 2022}}</ref> | ||
==यह भी देखें== | ==यह भी देखें== | ||
* [[समरूपता नियंत्रण]] | * [[समरूपता नियंत्रण]] |
Revision as of 11:43, 19 July 2023
एक डेटाबेस लेनदेन डेटाबेस के विरुद्ध डेटाबेस प्रबंधन प्रणाली (या समान प्रणाली) के अंदर किए गए कार्य की इकाई का प्रतीक है, जिसे अन्य लेनदेन से स्वतंत्र सुसंगत और विश्वसनीय तरीके से व्यवहार किया जाता है। लेनदेन सामान्यतः डेटाबेस में किसी भी बदलाव का प्रतिनिधित्व करता है। डेटाबेस वातावरण में लेनदेन के दो मुख्य उद्देश्य हैं:
- कार्य की विश्वसनीय इकाइयाँ प्रदान करना जो विफलताओं से सही पुनर्प्राप्ति की अनुमति देती हैं और प्रणाली विफलता की स्थितियों में भी डेटाबेस को सुसंगत रखती हैं। उदाहरण के लिए: जब निष्पादन समय से पहले और अप्रत्याशित रूप से रुक जाता है (पूरी तरह या आंशिक रूप से) तब उस स्थिति में डेटाबेस पर अनेक ऑपरेशन अस्पष्ट स्थिति के साथ अधूरे रह जाते हैं।
- डेटाबेस तक साथ पहुंचने वाले प्रोग्रामों के मध्य अलगाव प्रदान करना। यदि यह अलगाव प्रदान नहीं किया जाता है, तब कार्यक्रमों के परिणाम संभवतः ग़लत होंगे।
डेटाबेस प्रबंधन प्रणाली में, लेन-देन तर्क या कार्य की एकल इकाई होती है, जो कभी-कभी अनेक परिचालनों से बनी होती है। डेटाबेस में सुसंगत मोड में की गई कोई भी तार्किक गणना लेनदेन के रूप में जानी जाती है। इस प्रकार उदाहरण बैंक खाते से दूसरे बैंक खाते में स्थानांतरण है: संपूर्ण लेनदेन के लिए खाते से स्थानांतरित की जाने वाली राशि को घटाने और उसी राशि को दूसरे खाते में जोड़ने की आवश्यकता होती है।
एक डेटाबेस लेनदेन, परिभाषा के अनुसार, परमाणुता (डेटाबेस सिस्टम) होना चाहिए (यह या तब पूरी तरह से पूर्ण होना चाहिए या इसका कोई प्रभाव नहीं होना चाहिए), सुसंगत (यह डेटाबेस में उपस्तिथ बाधाओं के अनुरूप होना चाहिए), पृथक (इसे अन्य लेनदेन को प्रभावित नहीं करना चाहिए) और टिकाऊ होना चाहिए (इसे लगातार भंडारण के लिए लिखा जाना चाहिए)।[1] डेटाबेस व्यवसायी अधिकांशतः संक्षिप्त नाम एसीआईडी का उपयोग करके डेटाबेस लेनदेन के इन गुणों को संदर्भित करते हैं।
उद्देश्य
डेटाबेस और अन्य डेटा स्टोर जो डेटा की अखंडता को सर्वोपरि मानते हैं, उनमें अधिकांशतः डेटा की अखंडता को बनाए रखने के लिए लेनदेन को संभालने की क्षमता सम्मिलित होती है। एकल लेन-देन में कार्य की या अधिक स्वतंत्र इकाइयाँ सम्मिलित होती हैं, प्रत्येक डेटाबेस या अन्य डेटा स्टोर में जानकारी को पढ़ना और/या लिखना। जब ऐसा होता है तब यह सुनिश्चित करना अधिकांशतः महत्वपूर्ण होता है कि ऐसी सभी प्रोसेसिंग डेटाबेस या डेटा स्टोर को सुसंगत स्थिति में छोड़ दे।
डबल-एंट्री बहीखाता प्रणाली के उदाहरण अधिकांशतः लेनदेन की अवधारणा को दर्शाते हैं। दोहरी-प्रविष्टि लेखांकन में प्रत्येक डेबिट के लिए संबद्ध क्रेडिट की रिकॉर्डिंग की आवश्यकता होती है। यदि कोई किराने का सामान खरीदने के लिए $100 का चेक लिखता है, तब लेनदेन संबंधी दोहरी-प्रविष्टि लेखा प्रणाली को एकल लेनदेन को कवर करने के लिए निम्नलिखित दो प्रविष्टियाँ अंकित करनी होंगी:
- किराना व्यय खाते में $100 डेबिट करें
- चेकिंग खाते में $100 क्रेडिट करें
एक लेन-देन प्रणाली दोनों प्रविष्टियों को पास कर देगी या दोनों प्रविष्टियाँ विफल हो जाएंगी। इस प्रकार एकाधिक प्रविष्टियों की रिकॉर्डिंग को कार्य की परमाणु लेनदेन इकाई के रूप में मानकर प्रणाली रिकॉर्ड किए गए डेटा की अखंडता को बनाए रखता है। इस प्रकार दूसरे शब्दों में, कोई भी ऐसी स्थिति में नहीं पहुँचता जिसमें डेबिट अंकित किया जाता है किन्तु कोई संबद्ध क्रेडिट अंकित नहीं किया जाता है, या इसके विपरीत अंकित किया जाता हैं।
लेन-देन संबंधी डेटाबेस
ट्रांजेक्शनल डेटाबेस डीबीएमएस है जो डेटाबेस ऑपरेशंस (स्टार्ट-कमिट) के ब्रैकेटेड समूह के लिए एसीआईडी गुण प्रदान करता है। लेन-देन के अंदर सभी लेखन परिचालनों पर सभी या कुछ भी नहीं प्रभाव पड़ता है, अर्थात, या तब लेन-देन सफल होता है और सभी लेखन प्रभावी होते हैं, या अन्यथा, डेटाबेस को ऐसी स्थिति में लाया जाता है जिसमें लेनदेन के किसी भी लेखन को सम्मिलित नहीं किया जाता है लेन-देन यह भी सुनिश्चित करते हैं कि समवर्ती लेन-देन का प्रभाव कुछ गारंटियों को पूरा करता है, जिन्हें पृथक स्तर के रूप में जाना जाता है। उच्चतम पृथक स्तर क्रमबद्धता है, जो गारंटी देता है कि समवर्ती लेनदेन का प्रभाव उनके क्रमिक (अर्थात अनुक्रमिक) निष्पादन के सामान्तर है।
अधिकांश आधुनिक[update] संबंधपरक डेटाबेस प्रबंधन प्रणालियाँ लेनदेन का समर्थन करते हैं। NoSQL डेटाबेस समवर्ती अपडेट और एक्सेस की स्थिति में डेटा स्थिरता की गारंटी के लिए लेनदेन का समर्थन करने के साथ-साथ स्केलेबिलिटी को प्राथमिकता देते हैं।
एक डेटाबेस प्रणाली में, लेन-देन में या अधिक डेटा-हेरफेर कथन और प्रश्न सम्मिलित हो सकते हैं, प्रत्येक डेटाबेस में जानकारी पढ़ना और/या लिखना। डेटाबेस प्रणाली के उपयोगकर्ता डेटा की स्थिरता और डेटा की अखंडता को अत्यधिक महत्वपूर्ण मानते हैं। साधारण लेन-देन सामान्यतः निम्नलिखित के समान पैटर्न का उपयोग करके, लेन-देन में लिपटे SQL जैसी भाषा में डेटाबेस प्रणाली को जारी किया जाता है:
- लेन-देन प्रारंभ करें.
- डेटा हेरफेर और/या प्रश्नों का समूह निष्पादित करें।
- यदि कोई त्रुटि नहीं होती है, तब लेनदेन करें।
- यदि कोई त्रुटि होती है, तब लेनदेन को वापस ले लें।
एक लेन-देन प्रतिबद्ध ऑपरेशन डेटाबेस में लेन-देन के सीमा के अंदर डेटा हेरफेर के सभी परिणामों को जारी रखता है। लेन-देन रोलबैक ऑपरेशन डेटाबेस में लेन-देन के सीमा के अंदर डेटा हेरफेर के आंशिक परिणामों को जारी नहीं रखता है। इस प्रकार किसी भी स्थिति में डेटाबेस के लिए आंशिक लेनदेन नहीं किया जा सकता क्योंकि इससे डेटाबेस असंगत स्थिति में रह जाएगा।
आंतरिक रूप से, बहु-उपयोगकर्ता डेटाबेस अधिकांशतः लेनदेन पहचानकर्ता या एक्सआईडी का उपयोग करके लेनदेन को संग्रहीत और संसाधित करते हैं।
ऊपर बताए गए सरल तरीके के अतिरिक्त लेन-देन को क्रियान्वित करने के अनेक भिन्न-भिन्न तरीके हैं। उदाहरण के लिए, नेस्टेड लेन-देन वह लेन-देन होते हैं जिनमें ऐसे विवरण होते हैं जो नए लेन-देन (अर्थात उप-लेन-देन) प्रारंभ करते हैं। इस प्रकार बहु-स्तरीय लेनदेन नेस्टेड लेनदेन का प्रकार है जहां उप-लेनदेन स्तरित प्रणाली आर्किटेक्चर के विभिन्न स्तरों पर होते हैं (उदाहरण के लिए, डेटाबेस-इंजन स्तर पर ऑपरेशन, ऑपरेटिंग-प्रणाली स्तर पर ऑपरेशन)।[2] अन्य प्रकार का लेन-देन क्षतिपूर्ति लेन-देन है।
एसक्यूएल में
अधिकांश एसक्यूएल डेटाबेस कार्यान्वयन में लेनदेन उपलब्ध हैं, यद्यपि शक्तिशाली होने के विभिन्न स्तरों के साथ। उदाहरण के लिए, MySQL ने प्रारंभिक संस्करण 3.23 से लेनदेन का समर्थन करना प्रारंभ कर दिया था, किन्तु InnoDB स्टोरेज इंजन संस्करण 5.5 से पहले डिफ़ॉल्ट नहीं था। पहले उपलब्ध स्टोरेज इंजन, MyISAM लेनदेन का समर्थन नहीं करता है।
लेनदेन सामान्यतः BEGIN
कमांड का उपयोग करके प्रारंभ किया जाता है (यद्यपि एसक्यूएल मानक START TRANSACTION
निर्दिष्ट करता है। जब सिस्टम COMMIT स्टेटमेंट को संसाधित करता है, तो लेनदेन सफलतापूर्वक पूरा होने के साथ समाप्त होता है। ROLLBACK
स्टेटमेंट लेन-देन को समाप्त भी कर सकता है, उसके पश्चात् से किए गए किसी भी कार्य को पूर्ववत कर सकता है BEGIN
के बाद से किए गए किसी भी कार्य को पूर्ववत कर सकता है। यदि लेनदेन की शुरुआत के साथ ऑटोकमिट को अक्षम कर दिया गया था, तो लेनदेन के अंत के साथ ऑटोकमिट को भी फिर से सक्षम किया जाएगा।
कोई व्यक्ति व्यक्तिगत लेनदेन संचालन के साथ-साथ वैश्विक स्तर पर भी पृथक (डेटाबेस सिस्टम) समूह कर सकता है। उच्चतम स्तर पर (READ COMMITTED
), लेनदेन प्रारंभ होने के पश्चात् किए गए किसी भी ऑपरेशन का परिणाम लेनदेन समाप्त होने तक अन्य डेटाबेस उपयोगकर्ताओं के लिए अदृश्य रहेगा। सबसे निचले स्तर पर (READ UNCOMMITTED
), जिसका उपयोग कभी-कभी उच्च समवर्तीता सुनिश्चित करने के लिए किया जा सकता है, ऐसे परिवर्तन तुरंत दिखाई देंगे।
ऑब्जेक्ट डेटाबेस
रिलेशनल डेटाबेस पारंपरिक रूप से निश्चित आकार के फ़ील्ड और रिकॉर्ड वाली तालिकाओं से बने होते हैं। ऑब्जेक्ट डेटाबेस में परिवर्तनीय आकार के ब्लॉब्स सम्मिलित होते हैं, संभवतः क्रमांकन या माइम-प्रकार को सम्मिलित करते हुए। रिलेशनल और ऑब्जेक्ट डेटाबेस के मध्य मूलभूत समानताएं प्रारंभ और कमिट या रोलबैक हैं।
इस प्रकार लेन-देन प्रारंभ करने के पश्चात्, डेटाबेस रिकॉर्ड या ऑब्जेक्ट लॉक कर दिए जाते हैं, या तब केवल पढ़ने के लिए या पढ़ने के लिए लिखने के लिए। तब पढ़ना और लिखना हो सकता है। बार जब लेन-देन पूरी तरह से परिभाषित हो जाता है, तब परिवर्तन किए जाते हैं या एटोमिसिटी (डेटाबेस सिस्टम) को वापस ले लिया जाता है, जैसे कि लेन-देन के अंत में कोई संगति (डेटाबेस सिस्टम) नहीं होती है।
वितरित लेनदेन
डेटाबेस प्रणाली वितरित लेनदेन को क्रियान्वित करते हैं[3] इस प्रकार यह से अधिक नोड्स पर डेटा तक पहुंचने वाले लेनदेन के रूप में एवं वितरित लेनदेन अनेक नोड्स पर एसीआईडी गुणों को क्रियान्वित करता है, और इसमें डेटाबेस, स्टोरेज मैनेजर, फ़ाइल सिस्टम, मैसेजिंग प्रणाली और अन्य डेटा मैनेजर जैसे प्रणाली सम्मिलित हो सकते हैं। इस प्रकार वितरित लेनदेन में सामान्यतः इकाई होती है जो सभी प्रक्रियाओं का समन्वय करती है जिससे कि यह सुनिश्चित किया जा सके कि लेनदेन के सभी हिस्से सभी प्रासंगिक प्रणालियों पर क्रियान्वित होते हैं।
लेन-देन संबंधी फाइल सिस्टम
लिनक्स के लिए नेमसिस Reiser4 फ़ाइल सिस्टम[4] लेन-देन का समर्थन करता है, और माइक्रोसॉफ्ट विंडोज विस्टा की तरह, माइक्रोसॉफ्ट एनटीएफएस फ़ाइल प्रणाली[5] पूरे नेटवर्क पर वितरित लेनदेन का समर्थन करता है। इस प्रकार अधिक डेटा सुसंगत फाइल सिस्टम, जैसे कि वार्प ट्रांजेक्शनल फाइलप्रणाली प्रणाली (डब्ल्यूटीएफ) पर शोध हो रहा है।[6]
यह भी देखें
- समरूपता नियंत्रण
- महत्वपूर्ण अनुभाग
- पोस्ट शून्य
संदर्भ
- ↑ "What is a Transaction? (Windows)". msdn.microsoft.com.
- ↑ Beeri, C.; Bernstein, P. A.; Goodman, N. (1989). "नेस्टेड लेनदेन प्रणालियों में समवर्तीता के लिए एक मॉडल". Journal of the ACM. 36 (1): 230–269. doi:10.1145/62044.62046. S2CID 12956480.
- ↑ Özsu, M. Tamer; Valduriez, Patrick (2011). वितरित डेटाबेस सिस्टम के सिद्धांत, तीसरा संस्करण (in English). Springer. Bibcode:2011podd.book.....O. doi:10.1007/978-1-4419-8834-8. ISBN 978-1-4419-8833-1.
- ↑ "लिनक्स.ऑर्ग". लिनक्स.ऑर्ग.
- ↑ "एमएसडीएन लाइब्रेरी". Retrieved 16 October 2014.
- ↑ https://www.usenix.org/system/files/conference/nsdi16/nsdi16-paper-escriva.pdf[bare URL PDF]
अग्रिम पठन
- Philip A. Bernstein, Eric Newcomer (2009): Principles of Transaction Processing, 2nd Edition, Morgan Kaufmann (Elsevier), ISBN 978-1-55860-623-4
- गेरहार्ड वेइकुम, गॉटफ्राइड वोसेन (2001), लेन-देन संबंधी सूचना प्रणाली: सिद्धांत, एल्गोरिदम, और समवर्ती नियंत्रण और पुनर्प्राप्ति का अभ्यास, मॉर्गन कॉफमैन, ISBN 1-55860-508-8