2012-05-10 5 views
5

मैं ओरेकल और माइस्क्ल के साथ काम करता हूं, और मैं समझने के लिए संघर्ष करता हूं कि एपीआई क्यों लिखे गए हैं कि मैं एक कॉल जारी कर सकता हूं, दूर जा सकता हूं और कुछ और कर सकता हूं, और फिर वापस आकर इसे बाद में उठा सकता हूं जैसे एनआईओ - मुझे मजबूर किया गया है डेटा की प्रतीक्षा करने के लिए धागे को समर्पित करने के लिए। ऐसा लगता है कि एसक्यूएल इंटरफेस एकमात्र ऐसा स्थान है जहां सिंक आईओ अभी भी मजबूर है, जिसका मतलब है कि डीबी के लिए इंतजार कर रहे थ्रेड को बांधना।प्रमुख डीबी विक्रेता वास्तव में एसिंक्रोनस एपीआई क्यों प्रदान नहीं करते हैं?

क्या कोई इस के कारणों को समझा सकता है? क्या कोई मौलिक है जो इसे मुश्किल बनाता है?

डेटा पुनर्प्राप्त करने के लिए वर्कर थ्रेड का उपयोग करने के बजाय, मेरे डीबी क्वेरी समस्या और परिणाम लाने के लिए 1-2 धागे का उपयोग करने में सक्षम होना बहुत अच्छा होगा।

मुझे लगता है कि एक एसिंक एपीआई लागू करने पर दो प्रयोगात्मक प्रयास (उदाहरण: एडीबीसीजे) हैं लेकिन उत्पादन उत्पादन के लिए कोई भी तैयार नहीं है।

+0

मैं भी इस बारे में हैरान था। –

उत्तर

1

डेटाबेस सर्वर हजारों ग्राहकों को संभालने में सक्षम होना चाहिए। एक एसिंक्रोनस इंटरफ़ेस प्रदान करने के लिए, डीबी सर्वर को परिणाम को क्वेरी में मेमोरी में रखने की आवश्यकता होगी, ताकि आप इसे बाद के चरण में उठा सकें। यह जल्दी से संसाधनों से बाहर हो जाएगा।

+1

मैं आपकी बात को कुछ हद तक देखता हूं - हालांकि यह वैसे भी होना है; बड़े नतीजे लाने से आमतौर पर एक ही परिणाम में एक संपूर्ण परिणाम प्राप्त नहीं होता है। – jasonk

1

एसिंक के साथ एक बड़ी समस्या लेनदेन के लिए थ्रेडलोकल का उपयोग कई पुस्तकालयों है।

उदाहरण के लिए जावा में अधिकांश जेडीबीसी विनिर्देश एकल थ्रेड प्रति लेनदेन प्राप्त करने के लिए एक तुल्यकालिक व्यवहार पर निर्भर करता है। आप प्रक्रियात्मक क्रम में अपना लेनदेन लिखते हैं।

ऐसा करने के लिए कॉलबैक के माध्यम से सही लेनदेन करना होगा, लेकिन वे नहीं हैं। मैं केवल node.js के बारे में जानता हूं जो यह करता है लेकिन इसका अस्पष्ट अगर यह वास्तव में async है।

बेशक यदि आप एसिंक करते हैं तो भी मुझे यकीन नहीं है कि यह वास्तव में डेटाबेस के रूप में प्रदर्शन में सुधार करेगा यदि संभवतः यह सिंक्रोनस कर रहा है। Is asynchronous jdbc call possible?

निजी तौर पर इस समस्या के समाधान पाने के लिए मैं RabbitMQ की तरह एक संदेश बस का उपयोग करें:

तरीके (जावा) में बिना आबादी धागा से बचने के लिए की बहुत सारी हैं।

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