डेटाबेस ट्रांजैक्शन

From Vigyanwiki

एक डेटाबेस ट्रांजैक्शन डेटाबेस के विरुद्ध डेटाबेस प्रबंधन प्रणाली (या समान प्रणाली) के अंदर किए गए कार्य की इकाई का प्रतीक है, जिसे अन्य ट्रांजैक्शन से स्वतंत्र सुसंगत और विश्वसनीय तरीके से व्यवहार किया जाता है। ट्रांजैक्शन सामान्यतः डेटाबेस में किसी भी बदलाव का प्रतिनिधित्व करता है। डेटाबेस वातावरण में ट्रांजैक्शन के दो मुख्य उद्देश्य हैं:

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

डेटाबेस प्रबंधन प्रणाली में, ट्रांजैक्शन तर्क या कार्य की एकल इकाई होती है, जो कभी-कभी अनेक परिचालनों से बनी होती है। डेटाबेस में सुसंगत मोड में की गई कोई भी तार्किक गणना ट्रांजैक्शन के रूप में जानी जाती है। इस प्रकार उदाहरण बैंक खाते से दूसरे बैंक खाते में स्थानांतरण है: संपूर्ण ट्रांजैक्शन के लिए खाते से स्थानांतरित की जाने वाली राशि को घटाने और उसी राशि को दूसरे खाते में जोड़ने की आवश्यकता होती है।

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

उद्देश्य

डेटाबेस और अन्य डेटा स्टोर जो डेटा की अखंडता को सर्वोपरि मानते हैं, उनमें अधिकांशतः डेटा की अखंडता को बनाए रखने के लिए ट्रांजैक्शन को संभालने की क्षमता सम्मिलित होती है। एकल ट्रांजैक्शन में कार्य की या अधिक स्वतंत्र इकाइयाँ सम्मिलित होती हैं, प्रत्येक डेटाबेस या अन्य डेटा स्टोर में जानकारी को पढ़ना और/या लिखना। जब ऐसा होता है तब यह सुनिश्चित करना अधिकांशतः महत्वपूर्ण होता है कि ऐसी सभी प्रोसेसिंग डेटाबेस या डेटा स्टोर को सुसंगत स्थिति में छोड़ दे।

डबल-एंट्री बहीखाता प्रणाली के उदाहरण अधिकांशतः ट्रांजैक्शन की अवधारणा को दर्शाते हैं। दोहरी-प्रविष्टि लेखांकन में प्रत्येक डेबिट के लिए संबद्ध क्रेडिट की रिकॉर्डिंग की आवश्यकता होती है। यदि कोई किराने का सामान खरीदने के लिए $100 का चेक लिखता है, तब ट्रांजैक्शन संबंधी दोहरी-प्रविष्टि लेखा प्रणाली को एकल ट्रांजैक्शन को कवर करने के लिए निम्नलिखित दो प्रविष्टियाँ अंकित करनी होंगी:

  1. किराना व्यय खाते में $100 डेबिट करें
  2. चेकिंग खाते में $100 क्रेडिट करें

एक ट्रांजैक्शन प्रणाली दोनों प्रविष्टियों को पास कर देगी या दोनों प्रविष्टियाँ विफल हो जाएंगी। इस प्रकार एकाधिक प्रविष्टियों की रिकॉर्डिंग को कार्य की परमाणु ट्रांजैक्शन इकाई के रूप में मानकर प्रणाली रिकॉर्ड किए गए डेटा की अखंडता को बनाए रखता है। इस प्रकार दूसरे शब्दों में, कोई भी ऐसी स्थिति में नहीं पहुँचता जिसमें डेबिट अंकित किया जाता है किन्तु कोई संबद्ध क्रेडिट अंकित नहीं किया जाता है, या इसके विपरीत अंकित किया जाता हैं।

ट्रांजैक्शन संबंधी डेटाबेस

ट्रांजेक्शनल डेटाबेस डीबीएमएस है जो डेटाबेस ऑपरेशंस (स्टार्ट-कमिट) के ब्रैकेटेड समूह के लिए एसीआईडी गुण प्रदान करता है। ट्रांजैक्शन के अंदर सभी लेखन परिचालनों पर सभी या कुछ भी नहीं प्रभाव पड़ता है, अर्थात, या तब ट्रांजैक्शन सफल होता है और सभी लेखन प्रभावी होते हैं, या अन्यथा, डेटाबेस को ऐसी स्थिति में लाया जाता है जिसमें ट्रांजैक्शन के किसी भी लेखन को सम्मिलित नहीं किया जाता है ट्रांजैक्शन यह भी सुनिश्चित करते हैं कि समवर्ती ट्रांजैक्शन का प्रभाव कुछ गारंटियों को पूरा करता है, जिन्हें पृथक स्तर के रूप में जाना जाता है। उच्चतम पृथक स्तर क्रमबद्धता है, जो गारंटी देता है कि समवर्ती ट्रांजैक्शन का प्रभाव उनके क्रमिक (अर्थात अनुक्रमिक) निष्पादन के सामान्तर है।

अधिकांश आधुनिक संबंधपरक डेटाबेस प्रबंधन प्रणालियाँ ट्रांजैक्शन का समर्थन करते हैं। NoSQL डेटाबेस समवर्ती अपडेट और एक्सेस की स्थिति में डेटा स्थिरता की गारंटी के लिए ट्रांजैक्शन का समर्थन करने के साथ-साथ स्केलेबिलिटी को प्राथमिकता देते हैं।

एक डेटाबेस प्रणाली में, ट्रांजैक्शन में या अधिक डेटा-हेरफेर कथन और प्रश्न सम्मिलित हो सकते हैं, प्रत्येक डेटाबेस में जानकारी पढ़ना और/या लिखना। डेटाबेस प्रणाली के उपयोगकर्ता डेटा की स्थिरता और डेटा की अखंडता को अत्यधिक महत्वपूर्ण मानते हैं। साधारण ट्रांजैक्शन सामान्यतः निम्नलिखित के समान पैटर्न का उपयोग करके, ट्रांजैक्शन में लिपटे एसक्यूएल जैसी भाषा में डेटाबेस प्रणाली को जारी किया जाता है:

  1. ट्रांजैक्शन प्रारंभ करें.
  2. डेटा हेरफेर और/या प्रश्नों का समूह निष्पादित करें।
  3. यदि कोई त्रुटि नहीं होती है, तब ट्रांजैक्शन करें।
  4. यदि कोई त्रुटि होती है, तब ट्रांजैक्शन को वापस ले लें।

एक ट्रांजैक्शन प्रतिबद्ध ऑपरेशन डेटाबेस में ट्रांजैक्शन के सीमा के अंदर डेटा हेरफेर के सभी परिणामों को जारी रखता है। ट्रांजैक्शन रोलबैक ऑपरेशन डेटाबेस में ट्रांजैक्शन के सीमा के अंदर डेटा हेरफेर के आंशिक परिणामों को जारी नहीं रखता है। इस प्रकार किसी भी स्थिति में डेटाबेस के लिए आंशिक ट्रांजैक्शन नहीं किया जा सकता क्योंकि इससे डेटाबेस असंगत स्थिति में रह जाएगा।

आंतरिक रूप से, बहु-उपयोगकर्ता डेटाबेस अधिकांशतः ट्रांजैक्शन पहचानकर्ता या एक्सआईडी का उपयोग करके ट्रांजैक्शन को संग्रहीत और संसाधित करते हैं।

ऊपर बताए गए सरल तरीके के अतिरिक्त ट्रांजैक्शन को क्रियान्वित करने के अनेक भिन्न-भिन्न तरीके हैं। उदाहरण के लिए, नेस्टेड ट्रांजैक्शन वह ट्रांजैक्शन होते हैं जिनमें ऐसे विवरण होते हैं जो नए ट्रांजैक्शन (अर्थात उप-ट्रांजैक्शन) प्रारंभ करते हैं। इस प्रकार बहु-स्तरीय ट्रांजैक्शन नेस्टेड ट्रांजैक्शन का प्रकार है जहां उप-ट्रांजैक्शन स्तरित प्रणाली आर्किटेक्चर के विभिन्न स्तरों पर होते हैं (उदाहरण के लिए, डेटाबेस-इंजन स्तर पर ऑपरेशन, ऑपरेटिंग-प्रणाली स्तर पर ऑपरेशन)।[2] अन्य प्रकार का ट्रांजैक्शन क्षतिपूर्ति ट्रांजैक्शन है।

एसक्यूएल में

अधिकांश एसक्यूएल डेटाबेस कार्यान्वयन में ट्रांजैक्शन उपलब्ध हैं, यद्यपि शक्तिशाली होने के विभिन्न स्तरों के साथ। उदाहरण के लिए, MySQL ने प्रारंभिक संस्करण 3.23 से ट्रांजैक्शन का समर्थन करना प्रारंभ कर दिया था, किन्तु InnoDB स्टोरेज इंजन संस्करण 5.5 से पहले डिफ़ॉल्ट नहीं था। पहले उपलब्ध स्टोरेज इंजन, MyISAM ट्रांजैक्शन का समर्थन नहीं करता है।

ट्रांजैक्शन सामान्यतः BEGIN कमांड का उपयोग करके प्रारंभ किया जाता है (यद्यपि एसक्यूएल मानक START TRANSACTIONनिर्दिष्ट करता है। जब सिस्टम COMMIT स्टेटमेंट को संसाधित करता है, तो ट्रांजैक्शन सफलतापूर्वक पूरा होने के साथ समाप्त होता है। ROLLBACK स्टेटमेंट ट्रांजैक्शन को समाप्त भी कर सकता है, उसके पश्चात् से किए गए किसी भी कार्य को पूर्ववत कर सकता है BEGINके बाद से किए गए किसी भी कार्य को पूर्ववत कर सकता है। यदि ट्रांजैक्शन की शुरुआत के साथ ऑटोकमिट को अक्षम कर दिया गया था, तो ट्रांजैक्शन के अंत के साथ ऑटोकमिट को भी फिर से सक्षम किया जाएगा।

कोई व्यक्ति व्यक्तिगत ट्रांजैक्शन संचालन के साथ-साथ वैश्विक स्तर पर भी पृथक (डेटाबेस सिस्टम) समूह कर सकता है। उच्चतम स्तर पर (READ COMMITTED), ट्रांजैक्शन प्रारंभ होने के पश्चात् किए गए किसी भी ऑपरेशन का परिणाम ट्रांजैक्शन समाप्त होने तक अन्य डेटाबेस उपयोगकर्ताओं के लिए अदृश्य रहेगा। सबसे निचले स्तर पर (READ UNCOMMITTED), जिसका उपयोग कभी-कभी उच्च समवर्तीता सुनिश्चित करने के लिए किया जा सकता है, ऐसे परिवर्तन तुरंत दिखाई देंगे।

ऑब्जेक्ट डेटाबेस

रिलेशनल डेटाबेस पारंपरिक रूप से निश्चित आकार के फ़ील्ड और रिकॉर्ड वाली तालिकाओं से बने होते हैं। ऑब्जेक्ट डेटाबेस में परिवर्तनीय आकार के ब्लॉब्स सम्मिलित होते हैं, संभवतः क्रमांकन या माइम-प्रकार को सम्मिलित करते हुए। रिलेशनल और ऑब्जेक्ट डेटाबेस के मध्य मूलभूत समानताएं प्रारंभ और कमिट या रोलबैक हैं।

इस प्रकार ट्रांजैक्शन प्रारंभ करने के पश्चात्, डेटाबेस रिकॉर्ड या ऑब्जेक्ट लॉक कर दिए जाते हैं, या तब केवल पढ़ने के लिए या पढ़ने के लिए लिखने के लिए। तब पढ़ना और लिखना हो सकता है। बार जब ट्रांजैक्शन पूरी तरह से परिभाषित हो जाता है, तब परिवर्तन किए जाते हैं या एटोमिसिटी (डेटाबेस सिस्टम) को वापस ले लिया जाता है, जैसे कि ट्रांजैक्शन के अंत में कोई संगति (डेटाबेस सिस्टम) नहीं होती है।

वितरित ट्रांजैक्शन

डेटाबेस प्रणाली वितरित ट्रांजैक्शन को क्रियान्वित करते हैं[3] इस प्रकार यह से अधिक नोड्स पर डेटा तक पहुंचने वाले ट्रांजैक्शन के रूप में एवं वितरित ट्रांजैक्शन अनेक नोड्स पर एसीआईडी गुणों को क्रियान्वित करता है, और इसमें डेटाबेस, स्टोरेज मैनेजर, फ़ाइल सिस्टम, मैसेजिंग प्रणाली और अन्य डेटा मैनेजर जैसे प्रणाली सम्मिलित हो सकते हैं। इस प्रकार वितरित ट्रांजैक्शन में सामान्यतः इकाई होती है जो सभी प्रक्रियाओं का समन्वय करती है जिससे कि यह सुनिश्चित किया जा सके कि ट्रांजैक्शन के सभी हिस्से सभी प्रासंगिक प्रणालियों पर क्रियान्वित होते हैं।

ट्रांजैक्शन संबंधी फाइल सिस्टम

लिनक्स के लिए नेमसिस Reiser4 फ़ाइल सिस्टम[4] ट्रांजैक्शन का समर्थन करता है, और माइक्रोसॉफ्ट विंडोज विस्टा की तरह, माइक्रोसॉफ्ट एनटीएफएस फ़ाइल प्रणाली[5] पूरे नेटवर्क पर वितरित ट्रांजैक्शन का समर्थन करता है। इस प्रकार अधिक डेटा सुसंगत फाइल सिस्टम, जैसे कि वार्प ट्रांजेक्शनल फाइलप्रणाली प्रणाली (डब्ल्यूटीएफ) पर शोध हो रहा है।[6]

यह भी देखें

संदर्भ

  1. "What is a Transaction? (Windows)". msdn.microsoft.com.
  2. Beeri, C.; Bernstein, P. A.; Goodman, N. (1989). "नेस्टेड लेनदेन प्रणालियों में समवर्तीता के लिए एक मॉडल". Journal of the ACM. 36 (1): 230–269. doi:10.1145/62044.62046. S2CID 12956480.
  3. Ö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.
  4. "लिनक्स.ऑर्ग". लिनक्स.ऑर्ग.
  5. "एमएसडीएन लाइब्रेरी". Retrieved 16 October 2014.
  6. 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

बाहरी संबंध