डेटाबेस ट्रांजैक्शन
This article needs additional citations for verification. (August 2010) (Learn how and when to remove this template message) |
एक डेटाबेस लेनदेन एक डेटाबेस के विरुद्ध डेटाबेस प्रबंधन प्रणाली (या समान प्रणाली) के भीतर किए गए कार्य की एक इकाई का प्रतीक है, जिसे अन्य लेनदेन से स्वतंत्र सुसंगत और विश्वसनीय तरीके से व्यवहार किया जाता है। एक लेनदेन आम तौर पर डेटाबेस में किसी भी बदलाव का प्रतिनिधित्व करता है। डेटाबेस वातावरण में लेनदेन के दो मुख्य उद्देश्य हैं:
- कार्य की विश्वसनीय इकाइयाँ प्रदान करना जो विफलताओं से सही पुनर्प्राप्ति की अनुमति देती हैं और सिस्टम विफलता के मामलों में भी डेटाबेस को सुसंगत रखती हैं। उदाहरण के लिए: जब निष्पादन समय से पहले और अप्रत्याशित रूप से रुक जाता है (पूरी तरह या आंशिक रूप से) तो उस स्थिति में डेटाबेस पर कई ऑपरेशन अस्पष्ट स्थिति के साथ अधूरे रह जाते हैं।
- डेटाबेस तक एक साथ पहुंचने वाले प्रोग्रामों के बीच अलगाव प्रदान करना। यदि यह अलगाव प्रदान नहीं किया जाता है, तो कार्यक्रमों के परिणाम संभवतः ग़लत होंगे।
डेटाबेस प्रबंधन प्रणाली में, लेन-देन तर्क या कार्य की एक एकल इकाई होती है, जो कभी-कभी कई परिचालनों से बनी होती है। डेटाबेस में सुसंगत मोड में की गई कोई भी तार्किक गणना लेनदेन के रूप में जानी जाती है। एक उदाहरण एक बैंक खाते से दूसरे बैंक खाते में स्थानांतरण है: संपूर्ण लेनदेन के लिए एक खाते से स्थानांतरित की जाने वाली राशि को घटाने और उसी राशि को दूसरे खाते में जोड़ने की आवश्यकता होती है।
एक डेटाबेस लेनदेन, परिभाषा के अनुसार, परमाणुता (डेटाबेस सिस्टम) होना चाहिए (यह या तो पूरी तरह से पूर्ण होना चाहिए या इसका कोई प्रभाव नहीं होना चाहिए), संगति (डेटाबेस सिस्टम) (यह डेटाबेस में मौजूदा बाधाओं के अनुरूप होना चाहिए), अलगाव (डेटाबेस) सिस्टम) (इसे अन्य लेनदेन को प्रभावित नहीं करना चाहिए) और टिकाऊपन (डेटाबेस सिस्टम) (इसे लगातार भंडारण के लिए लिखा जाना चाहिए)।[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