डेटाबेस ट्रांजैक्शन
एक डेटाबेस लेनदेन एक डेटाबेस के विरुद्ध डेटाबेस प्रबंधन प्रणाली (या समान प्रणाली) के अंदर किए गए कार्य की एक इकाई का प्रतीक है, जिसे अन्य लेनदेन से स्वतंत्र सुसंगत और विश्वसनीय तरीके से व्यवहार किया जाता है। एक लेनदेन सामान्यतः डेटाबेस में किसी भी बदलाव का प्रतिनिधित्व करता है। डेटाबेस वातावरण में लेनदेन के दो मुख्य उद्देश्य हैं:
- कार्य की विश्वसनीय इकाइयाँ प्रदान करना जो विफलताओं से सही पुनर्प्राप्ति की अनुमति देती हैं और प्रणाली विफलता के स्थितियों में भी डेटाबेस को सुसंगत रखती हैं। उदाहरण के लिए: जब निष्पादन समय से पहले और अप्रत्याशित रूप से रुक जाता है (पूरी तरह या आंशिक रूप से) तब उस स्थिति में डेटाबेस पर अनेक ऑपरेशन अस्पष्ट स्थिति के साथ अधूरे रह जाते हैं।
- डेटाबेस तक एक साथ पहुंचने वाले प्रोग्रामों के मध्य भिन्नाव प्रदान करना। यदि यह भिन्नाव प्रदान नहीं किया जाता है, तब कार्यक्रमों के परिणाम संभवतः ग़लत होंगे।
डेटाबेस प्रबंधन प्रणाली में, लेन-देन तर्क या कार्य की एक एकल इकाई होती है, जो कभी-कभी अनेक परिचालनों से बनी होती है। डेटाबेस में सुसंगत मोड में की गई कोई भी तार्किक गणना लेनदेन के रूप में जानी जाती है। एक उदाहरण एक बैंक खाते से दूसरे बैंक खाते में स्थानांतरण है: संपूर्ण लेनदेन के लिए एक खाते से स्थानांतरित की जाने वाली राशि को घटाने और उसी राशि को दूसरे खाते में जोड़ने की आवश्यकता होती है।
एक डेटाबेस लेनदेन, परिभाषा के अनुसार, परमाणुता (डेटाबेस सिस्टम) होना चाहिए (यह या तब पूरी तरह से पूर्ण होना चाहिए या इसका कोई प्रभाव नहीं होना चाहिए), संगति (डेटाबेस सिस्टम) (यह डेटाबेस में उपस्तिथ बाधाओं के अनुरूप होना चाहिए), भिन्नाव (डेटाबेस) सिस्टम) (इसे अन्य लेनदेन को प्रभावित नहीं करना चाहिए) और टिकाऊपन (डेटाबेस सिस्टम) (इसे लगातार भंडारण के लिए लिखा जाना चाहिए)।[1] डेटाबेस व्यवसायी अधिकांशतः संक्षिप्त नाम ACID का उपयोग करके डेटाबेस लेनदेन के इन गुणों को संदर्भित करते हैं।
उद्देश्य
डेटाबेस और अन्य डेटा स्टोर जो डेटा की अखंडता को सर्वोपरि मानते हैं, उनमें अधिकांशतः डेटा की अखंडता को बनाए रखने के लिए लेनदेन को संभालने की क्षमता सम्मिलित होती है। एक एकल लेन-देन में कार्य की एक या अधिक स्वतंत्र इकाइयाँ सम्मिलित होती हैं, प्रत्येक डेटाबेस या अन्य डेटा स्टोर में जानकारी को पढ़ना और/या लिखना। जब ऐसा होता है तब यह सुनिश्चित करना अधिकांशतः महत्वपूर्ण होता है कि ऐसी सभी प्रोसेसिंग डेटाबेस या डेटा स्टोर को एक सुसंगत स्थिति में छोड़ दे।
डबल-एंट्री बहीखाता प्रणाली के उदाहरण|डबल-एंट्री अकाउंटिंग प्रणाली अधिकांशतः लेनदेन की अवधारणा को दर्शाते हैं। दोहरी-प्रविष्टि लेखांकन में प्रत्येक डेबिट के लिए संबद्ध क्रेडिट की रिकॉर्डिंग की आवश्यकता होती है। यदि कोई किराने का सामान खरीदने के लिए $100 का चेक लिखता है, तब लेनदेन संबंधी दोहरी-प्रविष्टि लेखा प्रणाली को एकल लेनदेन को कवर करने के लिए निम्नलिखित दो प्रविष्टियाँ अंकित करनी होंगी:
- किराना व्यय खाते में $100 डेबिट करें
- चेकिंग खाते में $100 क्रेडिट करें
एक लेन-देन प्रणाली दोनों प्रविष्टियों को पास कर देगी या दोनों प्रविष्टियाँ विफल हो जाएंगी। एकाधिक प्रविष्टियों की रिकॉर्डिंग को कार्य की परमाणु लेनदेन इकाई के रूप में मानकर प्रणाली रिकॉर्ड किए गए डेटा की अखंडता को बनाए रखता है। दूसरे शब्दों में, कोई भी ऐसी स्थिति में नहीं पहुँचता जिसमें डेबिट अंकित किया जाता है किन्तु कोई संबद्ध क्रेडिट अंकित नहीं किया जाता है, या इसके विपरीत।
लेन-देन संबंधी डेटाबेस
ट्रांजेक्शनल डेटाबेस एक DBMS है जो डेटाबेस ऑपरेशंस (स्टार्ट-कमिट) के ब्रैकेटेड समूह के लिए ACID गुण प्रदान करता है। लेन-देन के अंदर सभी लेखन परिचालनों पर सभी या कुछ भी नहीं प्रभाव पड़ता है, अर्थात, या तब लेन-देन सफल होता है और सभी लेखन प्रभावी होते हैं, या अन्यथा, डेटाबेस को ऐसी स्थिति में लाया जाता है जिसमें लेनदेन के किसी भी लेखन को सम्मिलित नहीं किया जाता है . लेन-देन यह भी सुनिश्चित करते हैं कि समवर्ती लेन-देन का प्रभाव कुछ गारंटियों को पूरा करता है, जिन्हें भिन्नाव स्तर के रूप में जाना जाता है। उच्चतम भिन्नाव स्तर क्रमबद्धता है, जो गारंटी देता है कि समवर्ती लेनदेन का प्रभाव उनके क्रमिक (अर्थात अनुक्रमिक) निष्पादन के सामान्तर है।
अधिकांश modern[update] संबंधपरक डेटाबेस प्रबंधन प्रणाली लेनदेन का समर्थन करते हैं। NoSQL डेटाबेस समवर्ती अपडेट और एक्सेस की स्थिति में डेटा स्थिरता की गारंटी के लिए लेनदेन का समर्थन करने के साथ-साथ स्केलेबिलिटी को प्राथमिकता देते हैं।
एक डेटाबेस प्रणाली में, एक लेन-देन में एक या अधिक डेटा-हेरफेर कथन और प्रश्न सम्मिलित हो सकते हैं, प्रत्येक डेटाबेस में जानकारी पढ़ना और/या लिखना। डेटाबेस प्रणाली के उपयोगकर्ता डेटा की स्थिरता और डेटा की अखंडता को अत्यधिक महत्वपूर्ण मानते हैं। एक साधारण लेन-देन सामान्यतः निम्नलिखित के समान पैटर्न का उपयोग करके, लेन-देन में लिपटे SQL जैसी भाषा में डेटाबेस प्रणाली को जारी किया जाता है:
- लेन-देन प्रारंभ करें.
- डेटा हेरफेर और/या प्रश्नों का एक समूह निष्पादित करें।
- यदि कोई त्रुटि नहीं होती है, तब लेनदेन करें।
- यदि कोई त्रुटि होती है, तब लेनदेन को वापस ले लें।
एक लेन-देन प्रतिबद्ध ऑपरेशन डेटाबेस में लेन-देन के सीमा के अंदर डेटा हेरफेर के सभी परिणामों को जारी रखता है। लेन-देन रोलबैक ऑपरेशन डेटाबेस में लेन-देन के सीमा के अंदर डेटा हेरफेर के आंशिक परिणामों को जारी नहीं रखता है। किसी भी स्थिति में डेटाबेस के लिए आंशिक लेनदेन नहीं किया जा सकता क्योंकि इससे डेटाबेस असंगत स्थिति में रह जाएगा।
आंतरिक रूप से, बहु-उपयोगकर्ता डेटाबेस अधिकांशतः लेनदेन पहचानकर्ता या XID का उपयोग करके लेनदेन को संग्रहीत और संसाधित करते हैं।
ऊपर बताए गए सरल तरीके के अतिरिक्त लेन-देन को क्रियान्वित करने के अनेक भिन्न-भिन्न तरीके हैं। उदाहरण के लिए, नेस्टेड लेन-देन वह लेन-देन होते हैं जिनमें ऐसे विवरण होते हैं जो नए लेन-देन (अर्थात उप-लेन-देन) प्रारंभ करते हैं। बहु-स्तरीय लेनदेन नेस्टेड लेनदेन का एक प्रकार है जहां उप-लेनदेन एक स्तरित प्रणाली आर्किटेक्चर के विभिन्न स्तरों पर होते हैं (उदाहरण के लिए, डेटाबेस-इंजन स्तर पर एक ऑपरेशन, ऑपरेटिंग-प्रणाली स्तर पर एक ऑपरेशन)।[2] एक अन्य प्रकार का लेन-देन क्षतिपूर्ति लेन-देन है।
एसक्यूएल में
अधिकांश SQL डेटाबेस कार्यान्वयन में लेनदेन उपलब्ध हैं, यद्यपि शक्तिशाली होने के विभिन्न स्तरों के साथ। उदाहरण के लिए, MySQL ने प्रारंभिक संस्करण 3.23 से लेनदेन का समर्थन करना प्रारंभ कर दिया था, किन्तु InnoDB स्टोरेज इंजन संस्करण 5.5 से पहले डिफ़ॉल्ट नहीं था। पहले उपलब्ध स्टोरेज इंजन, MyISAM लेनदेन का समर्थन नहीं करता है।
लेनदेन सामान्यतः कमांड का उपयोग करके प्रारंभ किया जाता है BEGIN
(यद्यपि SQL मानक निर्दिष्ट करता है START TRANSACTION
). जब प्रणाली प्रोसेस करता है a COMMIT
कथन, लेन-देन सफल समापन के साथ समाप्त होता है। ए ROLLBACK
कथन लेन-देन को समाप्त भी कर सकता है, उसके पश्चात् से किए गए किसी भी कार्य को पूर्ववत कर सकता है BEGIN
. यदि लेनदेन की शुरुआत के साथ स्वत: प्रतिबद्ध को अक्षम कर दिया गया था, तब लेनदेन के अंत के साथ ऑटोकमिट को भी फिर से सक्षम किया जाएगा।
कोई व्यक्ति व्यक्तिगत लेनदेन संचालन के साथ-साथ वैश्विक स्तर पर भी भिन्नाव (डेटाबेस सिस्टम) समूह कर सकता है। उच्चतम स्तर पर (READ COMMITTED
), लेनदेन प्रारंभ होने के पश्चात् किए गए किसी भी ऑपरेशन का परिणाम लेनदेन समाप्त होने तक अन्य डेटाबेस उपयोगकर्ताओं के लिए अदृश्य रहेगा। सबसे निचले स्तर पर (READ UNCOMMITTED
), जिसका उपयोग कभी-कभी उच्च समवर्तीता सुनिश्चित करने के लिए किया जा सकता है, ऐसे परिवर्तन तुरंत दिखाई देंगे।
ऑब्जेक्ट डेटाबेस
रिलेशनल डेटाबेस पारंपरिक रूप से निश्चित आकार के फ़ील्ड और रिकॉर्ड वाली तालिकाओं से बने होते हैं। ऑब्जेक्ट डेटाबेस में वैरिएबल आकार के बाइनरी बड़ी वस्तु सम्मिलित होते हैं, संभवतः क्रमांकन या माइम-प्रकार को सम्मिलित करना। रिलेशनल और ऑब्जेक्ट डेटाबेस के मध्य मूलभूत समानताएं प्रारंभ और कमिट (डेटा प्रबंधन) या रोलबैक (डेटा प्रबंधन) हैं।
लेन-देन प्रारंभ करने के पश्चात्, डेटाबेस रिकॉर्ड या ऑब्जेक्ट लॉक कर दिए जाते हैं, या तब केवल पढ़ने के लिए या पढ़ने के लिए लिखने के लिए। तब पढ़ना और लिखना हो सकता है। एक बार जब लेन-देन पूरी तरह से परिभाषित हो जाता है, तब परिवर्तन किए जाते हैं या एटोमिसिटी (डेटाबेस सिस्टम) को वापस ले लिया जाता है, जैसे कि लेन-देन के अंत में कोई संगति (डेटाबेस सिस्टम) नहीं होती है।
वितरित लेनदेन
डेटाबेस प्रणाली वितरित लेनदेन को क्रियान्वित करते हैं[3] एकाधिक नोड्स पर डेटा तक पहुंचने वाले लेनदेन के रूप में। एक वितरित लेनदेन अनेक नोड्स पर ACID गुणों को क्रियान्वित करता है, और इसमें डेटाबेस, स्टोरेज मैनेजर, फ़ाइल सिस्टम, मैसेजिंग प्रणाली और अन्य डेटा मैनेजर जैसे प्रणाली सम्मिलित हो सकते हैं। वितरित लेनदेन में सामान्यतः एक इकाई होती है जो सभी प्रक्रियाओं का समन्वय करती है जिससे कि यह सुनिश्चित किया जा सके कि लेनदेन के सभी हिस्से सभी प्रासंगिक प्रणालियों पर क्रियान्वित होते हैं।
ट्रांजेक्शनल फ़ाइल सिस्टम
Linux के लिए Namesys Reiser4 फ़ाइल सिस्टम[4] लेन-देन का समर्थन करता है, और Microsoft Windows Vista की तरह, Microsoft NTFS फ़ाइल प्रणाली भी[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
- Gerhard Weikum, Gottfried Vossen (2001), Transactional information systems: theory, algorithms, and the practice of concurrency control and recovery, Morgan Kaufmann, ISBN 1-55860-508-8