2009-01-29 14 views
14

जेडीबीसी 3.0 स्पेक कनेक्शन (और तैयार वक्तव्य) पूलिंग के बारे में बात करता है।क्या डीबीसीपी (अपाचे कॉमन्स डाटाबेस कनेक्शन पूलिंग) अभी भी प्रासंगिक है?

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

हम MySQL (कनेक्टर/जे) का उपयोग कर रहे हैं और अंततः SQL सर्वर समर्थन (जेटीडीएस) जोड़ रहे होंगे; यह असंभव है कि हम किसी भी अन्य डेटाबेस का समर्थन करेंगे।

संपादित करें: कनेक्शन पूलिंग लाइब्रेरी को खत्म करने के मेरे प्रयास के बारे में नीचे टिप्पणी देखें। ऐसा लगता है कि डीबीसीपी अभी भी प्रासंगिक है (ध्यान दें कि कुछ टिप्पणीकारों ने डीबीसीपी पर सी 3 पी 0 की सिफारिश की है)।

उत्तर

13

अन्य पोस्टर के प्रोत्साहन के आधार पर, मैंने डीबीसीपी को खत्म करने और सीधे MySQL जेडीबीसी ड्राइवर (कनेक्टर/जे 5.0.4) का उपयोग करने का प्रयास किया। मैं ऐसा करने में असमर्थ था।

ऐसा प्रतीत होता है कि ड्राइवर पूलिंग के लिए आधार प्रदान करता है, यह सबसे महत्वपूर्ण बात प्रदान नहीं करता है: एक वास्तविक पूल (स्रोत कोड इस के लिए आसान था)। यह इस भाग को प्रदान करने के लिए एप्लिकेशन सर्वर तक छोड़ा गया है।

मैंने जेडीबीसी 3.0 दस्तावेज पर एक और नज़र डाली (मेरे पास "अध्याय 11 कनेक्शन पूलिंग" लेबल वाली किसी चीज की मुद्रित प्रति है, यह सुनिश्चित नहीं है कि यह कहां से आया था) और मैं देख सकता हूं कि MySQL ड्राइवर जेडीबीसी दस्तावेज़ का पालन कर रहा है ।

जब मैं डीबीसीपी को देखता हूं, तो यह निर्णय समझ में आता है। अच्छा पूल प्रबंधन कई विकल्प प्रदान करता है। उदाहरण के लिए, आप अप्रयुक्त कनेक्शन को कब शुद्ध करते हैं? आप कौन से कनेक्शन शुद्ध करते हैं? क्या पूल में कनेक्शन की अधिकतम संख्या पर हार्ड या मुलायम सीमा है? क्या आपको कॉलर को देने से पहले "लचीलापन" के लिए कनेक्शन का परीक्षण करना चाहिए?आदि

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

0

लोग अभी भी डीबीसीपी का उपयोग करते हैं, मुझे लगता है कि यह भी हाइबरनेट के साथ डिफ़ॉल्ट के रूप में आता है।

क्या डीबीसीपी आपकी वर्तमान जरूरतों को पूरा नहीं कर रहा है?

मैं बुनियादी ढांचे को बदलने में एक बड़ा आस्तिक नहीं हूं जब तक कि पहले से ही कोई प्रदर्शन या कार्यक्षमता अंतर नहीं भरता है, भले ही यह नया या प्रशंसक विकल्प न हो।

+0

डीबीसीपी काम करता है, लेकिन अगर मैं जेडीबीसी चालक से वही सुविधाएं प्राप्त कर सकता हूं, तो मैं बस चीजों को सरल बना दूंगा। मैं डीबीसीपी अपवाद हैंडलिंग को "ठीक" करने के लिए जोड़े गए कुछ कोड को भी याद नहीं रखूंगा। – jdigital

+1

c3p0 हाइबरनेट के साथ आता है। –

1

मैं डीबीसीपी या सी 3 पी 0 का उपयोग करना पसंद करता हूं क्योंकि वे विक्रेता तटस्थ हैं। मुझे पता चला कि कम से कम mysql या oracle के साथ, जब भी मैं jdbc क्लाइंट के साथ कुछ करने का प्रयास करता हूं जो मानक वर्ग नहीं है, मुझे विक्रेता के वर्गों पर संकलन-समय निर्भरता पेश करना है। उदाहरण के लिए, एक बहुत ही कष्टप्रद उदाहरण here देखें।

मुझे mysql के बारे में निश्चित नहीं है, लेकिन ऑरैकल कनेक्शन पूलिंग के लिए अपने विशिष्ट, गैर-मानक वर्गों का उपयोग करता है।

+0

धागा - आपने प्रदान किया - प्रासंगिक नहीं है, मुझे डर है। –

+0

मुझे पता है। मैंने यह स्पष्ट करने के लिए संदर्भित किया कि संकलन निर्भरताओं के संबंध में मेरा क्या मतलब था। – Yoni

7

डीबीसीपी में गंभीर त्रुटियां हैं। मुझे नहीं लगता कि यह एक उत्पादन अनुप्रयोग के लिए उपयुक्त है, खासकर जब कई ड्राइवर अपने DataSource में मूल रूप से पूलिंग का समर्थन करते हैं।

मेरे मामले में ऊंट की पीठ तोड़ने वाली स्ट्रॉ, जब मुझे पता चला कि पूरे पूल को पूरे समय लॉक किया गया था तो डेटाबेस में एक नया कनेक्शन प्रयास किया गया था। इसलिए, यदि आपके डेटाबेस में कुछ ऐसा होता है जिसके परिणामस्वरूप धीमे कनेक्शन या टाइमआउट होते हैं, तो वे — पर कनेक्शन वापस करने का प्रयास करते समय भी अन्य धागे अवरुद्ध होते हैं, भले ही वे डेटाबेस का उपयोग कर रहे हों।

पूल प्रदर्शन में सुधार करने के लिए हैं, इसे अपनाने के लिए नहीं हैं। डीबीसीपी बेवकूफ, जटिल, और पुराना है।

+0

डीबीसीपी से जेडीबीसी पूलिंग में स्विच करने के लिए कितना बड़ा प्रयास है? – jdigital

+0

यह ड्राइवर पर निर्भर करता है। ओरेकल और पोस्टग्रेसक्यूएल के साथ, यह एक साधारण कॉन्फ़िगरेशन परिवर्तन था - कोड पहले से ही (डीबीसीपी) डेटासोर्स के साथ काम कर रहा था। मुझे MySQL ड्राइवरों के साथ अनुभव नहीं है। – erickson

+2

मैं सहमत हूं कि डीबीसीपी टूट गया है। हमने सी 3 पीओ पर स्विच किया और यह एक सपने की तरह काम किया –

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