का उपयोग करके कई डेटाबेस में वितरित लेनदेन करने का 'सबसे अच्छा तरीका' क्या है मेरे पास एक एप्लिकेशन है - एक उपयोगिता की तरह - जो एक कोने में बैठता है और समय-समय पर दो अलग-अलग डेटाबेस अपडेट करता है।स्प्रिंग और हाइबरनेट
यह एक छोटा सा स्टैंडअलोन ऐप है जिसे स्प्रिंग एप्लिकेशन संदर्भ के साथ बनाया गया है। इस संदर्भ में स्प्रिंग में कॉन्फ़िगर किए गए कॉमन्स डीबीसीपी डेटा स्रोतों का उपयोग करके कॉन्फ़िगर किए गए दो हाइबरनेट सत्र कारखानों में कॉन्फ़िगर किया गया है।
वर्तमान में कोई लेनदेन प्रबंधन नहीं है, लेकिन मैं कुछ जोड़ना चाहता हूं। एक डेटाबेस में अद्यतन दूसरे के लिए एक सफल अद्यतन पर निर्भर करता है।
ऐप जावा ईई कंटेनर में नहीं बैठता है - यह शेल स्क्रिप्ट से बुलाए गए स्थिर लॉन्चर क्लास द्वारा बूटस्ट्रैप किया जाता है। लॉन्चर क्लास एप्लिकेशन संदर्भ को तुरंत चालू करता है और फिर अपने बीन्स में से एक पर एक विधि का आह्वान करता है।
डेटाबेस अपडेट के आसपास लेनदेन को रखने का सबसे अच्छा तरीका क्या है?
मैं आपको 'सर्वश्रेष्ठ' की परिभाषा छोड़ दूंगा, लेकिन मुझे लगता है कि यह 'आसान सेट अप', 'कॉन्फ़िगर करने में आसान', 'सस्ता', और 'पैकेज करने में आसान और पुनर्वितरण' के कुछ कार्य होना चाहिए। । स्वाभाविक रूप से एफओएसएस अच्छा होगा।
वितरित लेनदेन को सभी 4 एसीआईडी गुणों को संतुष्ट करना होगा। तुम्हारी समस्या क्या है? आपके द्वारा वर्णित परिदृश्य ऐसा नहीं हो सकता है, क्योंकि प्रबंधक एक दूसरे के साथ संवाद कर रहे हैं और केवल तभी प्रतिबद्ध होते हैं जब सभी भाग लेने वाले नोड्स ने "जाओ" का आदान-प्रदान किया हो। – Falcon
@ फाल्कन: तो क्या होता है यदि नेटवर्क तैयार और COMMIT के बीच विफल रहता है? या सर्वर में से एक मर जाता है? "ऐसा नहीं हो सकता" वास्तविकता में नहीं हो सकता है। –
नहीं, उन्हें वापस रोल करने का निर्देश नहीं दिया गया है क्योंकि इस परिदृश्य में, कुछ नोड्स पहले से ही प्रतिबद्ध हैं। क्या होता है जब दुर्घटनाग्रस्त नोड उपलब्ध हो जाता है, लेनदेन समन्वयक इसे फिर से करने के लिए कहता है। क्योंकि नोड ने "तैयार" चरण में सकारात्मक प्रतिक्रिया दी, इसलिए इसे "प्रतिबद्ध" करने में सक्षम होना आवश्यक है, भले ही यह किसी दुर्घटना से वापस आ जाए। –