2017-04-30 6 views
5

का उपयोग करके वितरित (वैश्विक) लेनदेन में अलगाव, जैसा कि हम जानते हैं कि अलगाव और परमाणुता दो अलग-अलग गुण हैं। परमाणुता "सभी या कुछ भी नहीं" संपत्ति है, या तो एक लेनदेन सफलतापूर्वक पूरा हो जाता है या पूरी तरह से विफल रहता है। परमाणुता निश्चित रूप से जेटीए और एक्स/ओपन एक्सए दो चरण कमिट मानक द्वारा समर्थित है जिस पर जेटीए आधारित है।जेटीए

मेरा सवाल है: क्या जेटीए अलगाव का समर्थन करता है? मैं केवल इस मामले का जिक्र कर रहा हूं जब हम ईजेबी और जेडीबीसी का उपयोग करते हैं, जेटीए के अलावा कोई ढांचा (उदा। वसंत) या लेनदेन प्रबंधक नहीं।

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

क्या हमारे पास वैश्विक लेनदेन के अंदर गंदे/दोहराने योग्य/प्रेत पढ़ने जैसे किसी भी सहमति के मुद्दे होंगे?

AFAIK जेटीए में अलगाव स्तर निर्दिष्ट करने का कोई तरीका नहीं है।

उत्तर

2

अलगाव एसीआईडी ​​परिवार की काली भेड़ है। यह लेनदेन प्रबंधक की संपत्ति, सख्ती से बात नहीं कर रहा है। यह पूरी तरह से संसाधन प्रबंधक यानी डेटाबेस द्वारा नियंत्रित है। कुछ अलगाव स्तर पर डेटाबेस के खिलाफ सभी लेनदेन चलाते हैं। एक्सए (जेटीए) लेनदेन में अंतर यह है कि उस स्तर का चयन कैसे किया जाता है।

अधिकांश भाग के लिए नियमित लेनदेन के साथ प्रति लेनदेन अलगाव स्तर चयन नियंत्रण प्राप्त करना संभव नहीं है, हालांकि कुछ संसाधन प्रबंधक एसक्यूएल सेट लेनदेन अलगाव आदेशों को एक्सए नियंत्रित लेनदेन शाखा में पहले बयान के रूप में अनुमति दे सकते हैं । कभी-कभी इस्तेमाल किया जाने वाला दूसरा मॉडल XAResource.start पर कस्टम झंडे है, उदाहरण के लिए लिया गया एक दृष्टिकोण आकाशवाणी। इनमें से किसी भी का समर्थन करने वाले डेटाबेस इंजनों के लिए, एक्सए लेनदेन डेटाबेस सर्वर के लिए विश्व स्तर पर कॉन्फ़िगर किए गए अलगाव स्तर पर डिफ़ॉल्ट होता है।

ध्यान दें कि 'धारावाहिक' लेनदेन, जेटीए या अन्यथा भी, आपको अभी भी सिरदर्द होने जा रहे हैं। पढ़ें पीटर Bailis उत्तम Acidrain कागज और फिर जाना में चुपचाप रोने के लिए एक कोने पाते हैं।

http://www.bailis.org/papers/acidrain-sigmod2017.pdf

+0

ठीक है, मैं एक साधारण JTA वैश्विक लेनदेन कार्यान्वयन के सभी बारीकियों को सीखने की प्रक्रिया में वास्तव में कर रहा हूँ तो एक मूर्खतापूर्ण अनुमति देते हैं सवाल। अगर मान लें कि मेरे पास एक जेटीए लेनदेन है जो जेडीबीसी के माध्यम से 2 अलग-अलग डेटाबेस तक पहुंचता है, तो क्या मैं वांछित अलगाव स्तर के साथ कनेक्शन.सेट ट्रान्सएक्शन इन्सोलेशन को कॉल नहीं कर सकता जो वास्तव में उनमें से प्रत्येक के लिए अलग हो सकता है और परमाणुता की मेरी समस्या का समाधान कर सकता है? जैसा कि मैं अपने छोटे से शोध से समझता हूं, मैं लेनदेन के सभी संसाधनों के लिए एक सामान्य अलगाव स्तर "प्रचार" नहीं कर सकता लेकिन इसका मतलब यह नहीं है कि मैं प्रत्येक संसाधन के लिए इसे अलग से सेट नहीं कर सकता। सही? – Bat0u89

+0

और, यदि मैं अलगाव स्तर को सभी लेनदेन संसाधनों पर "ट्रांज़ेक्शन_SERIALIZABLE" पर सेट करता हूं तो मेरे पास संभावित समवर्ती पहुंच के कारण कोई अलगाव (यानी डेटा स्थिरता) समस्या नहीं होगी? – Bat0u89

संबंधित मुद्दे