2011-11-08 19 views
22

जावा ऐप के लिए एक जे 2 ईई कंटेनर के के बाहर, कौन सा कनेक्शन पूल लाइब्रेरी सबसे अच्छा है?जावा डाटाबेस कनेक्शन पूल (बोनसीपी बनाम डीबीपूल बनाम सी 3 पी 0)

  • मैंने सुना है कि c3p0 पुराना हो रहा है।
  • जकार्ता के आम पूल पुस्तकालय विकास

इसलिए मैं BoneCP और DBPool के साथ छोड़ दिया हूँ के तहत नहीं रह गया है। जो मैं कह सकता हूं उससे दोनों सीमित गतिविधि है। मुख्य अंतर जो मैं देख सकता हूं वह प्रदर्शन है, जो बोनेसीपी के साथ जीतने लगता है। हालांकि दस्तावेज बहुत कमजोर है।

वास्तविक डेटाबेस में आप किस डेटाबेस पूल लाइब्रेरी का उपयोग करते हैं और क्यों? अच्छा और बुरा क्या था?

+3

जो उत्सुक हैं, उनके लिए मैं बोनेसीपी के साथ जा रहा हूं। –

+0

क्या आपके पास BoneCP के विस्तृत कॉन्फ़िगरेशन दस्तावेज़ के लिए कोई लिंक है? या आप जेबॉस में बोनेसीपी का उपयोग कैसे करें साझा कर सकते हैं? –

उत्तर

16

काम पर हमने बोनेसीपी (सी 3 पी 0 के प्रतिस्थापन के रूप में) का उपयोग किया है और जहां तक ​​मुझे पता है कि मुझे कोई समस्या नहीं है (मैंने स्वयं को अपग्रेड नहीं किया है)। मैंने जो देखा और पढ़ा है उससे यह एक अच्छी तरह से डिज़ाइन की गई ठोस लाइब्रेरी की तरह लगता है, और मैं इसे व्यक्तिगत रूप से विकल्पों पर उपयोग करता हूं: ऐसा लगता है कि यह "बस काम करता है" पुस्तकालयों में से एक है जो आसपास के लिए अच्छा है।

डीबीपूल के बारे में कुछ भी नकारात्मक नहीं है, मैं बस इसके साथ पर्याप्त परिचित नहीं हूं; हालांकि इसकी साइट प्रलेखन को देखकर निश्चित रूप से एक प्लस की तरह लगता है।

+0

बोनसीपी का नवीनतम रिलीज अभी भी 0.7.1 है, इसका मतलब यह है कि यह अभी भी "बीटा" चरण में है या क्या यह पर्याप्त परिपक्व है? –

+1

ध्यान रखें कि संस्करण बहुत ही व्यक्तिपरक, प्रासंगिक है। तो सटीक मूल्य वास्तव में इससे कोई फर्क नहीं पड़ता। कुछ लेखक अपनी लाइब्रेरी 1.0 को कॉल करने में संकोच करते हैं। जेडीओएम स्थिर होने के बावजूद वहां जाने के लिए सालों लगे। तो मेरा अनुमान है कि यह स्थिर है, उपयोग करने के लिए ठीक है। – StaxMan

+0

बोनसीपी पृष्ठ [लिंक] से बेंचमार्क (http://jolbox.com/index.html?page=http://jolbox.com/benchmarks.html) शानदार लगते हैं। – aloplop85

4

हम टॉमकैट के अंदर और बाहर दोनों सी 3 पी 0 का उपयोग करते हैं। हालांकि, निगरानी और लॉगिंग सबसे बड़ी नहीं है, इसलिए हम स्प्रिंगसोर्स कनेक्शन पूल का उपयोग शुरू करने जा रहे हैं। मैं जिन बेहतरीन सुविधाओं की प्रतीक्षा कर रहा हूं उनमें से एक यह दिखा रहा है कि किसी विशेष समय पर SQL कथन क्या चल रहा है।

एक बात हम C3P0 में जोड़ने के लिए किया था समय एक कनेक्शन के लिए कितनी देर तक एक विशेष कनेक्शन अनुरोध इंतजार कर रहा है का एक साधन थी जब पूल भरा हुआ है और सभी कनेक्शनों में व्यस्त हैं:

  public Connection getConnection() throws SQLException 
      { 
        long t = System.currentTimeMillis(); 
        ComboPooledDataSource ds = (ComboPooledDataSource) getDelegate(); 
        Connection conn = null; 

        if (ds.getNumBusyConnections() == ds.getMaxPoolSize()) 
        { 
          logger.info("Pool (" + ds.getUser() + ") full, waiting for connection"); 
          conn = ds.getConnection(); 
          t = System.currentTimeMillis() - t; 
          logger.info("Connection busy wait time (" + ds.getUser() + "): " + t + "ms"); 
        } 
        else 
        { 
          conn = ds.getConnection(); 
        } 

        return conn; 
      } 

तो आप चीजों को विचार करने के लिए है:

  1. समर्थन और गतिविधि (जैसा कि आपने ध्यान दिया है)
  2. गति
  3. निगरानी, ​​प्रवेश, और उत्पादन नियंत्रण

बोनेसीपी तेजी से दिखता है (मैंने इससे पहले नहीं सुना है) लेकिन ईमानदारी से सी 3 पी 0 हमारे लिए भी तेज है। वापस जब हमने कुछ 4 या 5 साल पहले परीक्षण किया था तो डीबीसीपी बहुत धीमी गति से धीमा था (वे इसे ठीक कर चुके हैं), ओरेकल का पूल काफी धीमा था, और सी 3 पी 0 बहुत तेज था। हमारा परीक्षण बोनेसीपी की साइट पर बहुत ज्यादा दिखता था।

मुझे बोनेसीपी की प्रबंधन क्षमता के बारे में कुछ भी पता नहीं है। # 3 हमारे लिए उत्पादन वातावरण में सबसे महत्वपूर्ण कार्यक्षमता बन गया है।

+0

विशिष्ट एसक्यूएल कथन लॉगिंग के संबंध में, क्या आप java.sql पैकेज के लिए डीबग लॉग सक्षम नहीं कर सकते? – r0ast3d

+0

स्प्रिंगसोर्स पूल जेएमएक्स के माध्यम से रीयलटाइम निरीक्षण की अनुमति देता है मेरी समझ है। –

+0

आप "setLogStatementsEnabled" की विधि के तहत, BoneCP के साथ SQL लॉगिंग को भी सक्षम कर सकते हैं: http://jolbox.com/bonecp/downloads/site/apidocs/index.html?com/jolbox/bonecp/BoneCPConfig.html। –

1

जब हम दो साल पहले हमारी पसंद कर रहे थे, तो यह केवल c3p0 और dbcp के बीच था। उस समय c3p0 वह था जो ऑरैकल पुनरारंभ करने के बाद अपने कनेक्शन पुनर्निर्माण कर सकता था। डीबीसीपी के साथ हमें इसे फिर से चलाने के लिए ऐप सर्वर को पुनरारंभ करना पड़ा।

इसके अलावा मुझे सी 3 पी 0 डीबग हैंगिंग कनेक्शन सुविधा कनेक्शन लीक को ट्रैक करने के लिए बेहद उपयोगी है जो अन्यथा खोजने में बेहद मुश्किल हो सकती है।

मैं c3p0 से जो खो रहा था वह निष्पादित बयानों के लिए उपयोगी लॉगिंग है, जिसमें उन्होंने कितना समय लिया था।

0

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

0

मैं डेटा न्यूक्लियस/जेपीए के साथ c3p0 का उपयोग कर रहा था और यह BoneCP पर स्विच करना आसान था। व्यावहारिक रूप से मुझे बस स्प्रिंग संदर्भ फ़ाइल में डेटासोर्स कॉन्फ़िगरेशन बदलना था।

जहां तक ​​मैंने देखा BoneCP मानक वास्तव में अच्छा कर रहे हैं: http://www.databaseskill.com/2282333/, http://jolbox.com/benchmarks.html

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