PgBouncer PostgreSQL के लिए एक हल्का कनेक्शन पूलर है।
PgBouncer 1.6 की घोषणा 1 अगस्त 2015 को की गई थी। इस ब्लॉग पोस्ट में हम PgBouncer में प्रमुख नए सुधारों के बारे में बात करेंगे।
PgBouncer की मुख्य नई विशेषताएं
पोस्टग्रेज डेटाबेस से यूजर पासवर्ड हैश लोड करें
PgBouncer अब डेटाबेस से उपयोगकर्ता के पासवर्ड को दो कॉन्फिग पैरामीटर के साथ लोड करने की अनुमति देता है जो auth_user हैं और auth_query ।
- auth_user
यदि auth_user सेट है, तो auth_user का उपयोग करके डेटाबेस में pg_shadow से auth_file में निर्दिष्ट नहीं किए गए किसी भी उपयोगकर्ता से पूछताछ की जाएगी। Auth_user का पासवर्ड auth_file से लिया जाएगा। यह पैरामीटर प्रति-डेटाबेस भी सेट किया जा सकता है। - auth_query
यह पैरामीटर हमें डेटाबेस से उपयोगकर्ता के पासवर्ड को लोड करने के लिए SQL क्वेरी लिखने की अनुमति देता है। यह auth_user के अंतर्गत चलता है। नीचे डिफ़ॉल्ट क्वेरी देखें:SELECT usename, passwd FROM pg_shadow WHERE usename=$1
पूलिंग मोड को प्रति-डेटाबेस और प्रति-उपयोगकर्ता दोनों कॉन्फ़िगर किया जा सकता है
इस सुविधा के साथ, मुख्य पूलिंग मोड से स्वतंत्र, ग्राहक अब नीचे वर्णित 3 पूलिंग मोड में से एक के साथ विभिन्न डेटाबेस से जुड़ सकते हैं। यह यूजर्स पर भी लागू होता है। उदाहरण के लिए, यदि पूलिंग मोड सत्र पूलिंग है, तो लेनदेन पूलिंग का उपयोग करने के लिए एक विशिष्ट उपयोगकर्ता को कॉन्फ़िगर किया जा सकता है। यह हमें अधिक उपयुक्त पूलिंग विकल्पों को लागू करने के लिए डेटाबेस-स्तर और उपयोगकर्ता-स्तरीय लचीलापन देता है।
PgBouncer 3 कनेक्शन पूलिंग मोड प्रदान करता है:
- सत्र पूलिंग
क्लाइंट कनेक्शन के जीवनकाल के दौरान, क्लाइंट को एक मौजूदा सर्वर कनेक्शन असाइन किया जाता है और क्लाइंट के डिस्कनेक्ट होने के बाद, असाइन किया गया सर्वर कनेक्शन कनेक्शन पूल में वापस डाल दिया जाता है। - लेन-देन पूलिंग
इस मोड में, एक सर्वर कनेक्शन एक कनेक्टेड क्लाइंट को तुरंत नहीं सौंपा जाता है, लेकिन केवल एक लेनदेन के दौरान। जैसे ही लेन-देन समाप्त हो जाता है, कनेक्शन वापस पूल में डाल दिया जाता है। - स्टेटमेंट पूलिंग
यह लेन-देन पूलिंग के समान है, लेकिन अधिक आक्रामक है। जब भी कोई सिंगल-स्टेटमेंट क्वेरी जारी की जाती है तो बैकएंड असाइन किया जाता है। जब स्टेटमेंट खत्म हो जाता है, तो कनेक्शन वापस पूल में डाल दिया जाता है।
प्रति-डेटाबेस और प्रति-उपयोगकर्ता कनेक्शन सीमाएं:max_db_connections और max_user_connections
इस सुविधा के साथ, अब हम दो नए मापदंडों के साथ प्रति डेटाबेस/उपयोगकर्ता स्तर पर कनेक्शन सीमा को भी नियंत्रित कर सकते हैं, जो कि max_db_connections हैं। और max_user_connections ।
- max_db_connections
यह पैरामीटर प्रति-डेटाबेस निर्दिष्ट कनेक्शन से अधिक की अनुमति नहीं देता है (पूल - यानी उपयोगकर्ता की परवाह किए बिना)।
इस पैरामीटर का डिफ़ॉल्ट मान असीमित है। - max_user_connections
यह पैरामीटर प्रति उपयोगकर्ता निर्दिष्ट कनेक्शन से अधिक की अनुमति नहीं देता (पूल - यानी उपयोगकर्ता की परवाह किए बिना)।
नए कनेक्शन रोकने के लिए अक्षम/सक्षम आदेश जोड़ें
इस सुविधा के साथ PgBouncer के पास सक्षम/अक्षम डीबी; है नए कनेक्शन को रोकने के लिए आदेश।
- डीबी अक्षम करें;
यह आदेश दिए गए डेटाबेस पर सभी नए क्लाइंट कनेक्शन को अस्वीकार करता है। - डीबी सक्षम करें;
यह आदेश पिछले अक्षम . के बाद नए क्लाइंट कनेक्शन की अनुमति देता है आदेश।
नया पसंदीदा DNS बैकएंड:c-ares
सी-एरेस एकमात्र DNS बैकएंड है जो सभी दिलचस्प विशेषताओं का समर्थन करता है:/etc/hosts रिफ्रेश, SOA लुकअप, बड़े उत्तरों (TCP/EDNS+UDP के माध्यम से), IPv6 के साथ। यह अब पसंदीदा बैकएंड है, और संभवत: केवल . होगा भविष्य में बैकएंड।
कॉन्फ़िगरेशन को कई फ़ाइलों में विभाजित करने की अनुमति देने के लिए कॉन्फ़िग फ़ाइलों में '%include FILENAME' निर्देश है
इस सुविधा के साथ, PgBouncer के पास कॉन्फिग फाइलों को अन्य कॉन्फिग फाइलों में शामिल करने के लिए सपोर्ट है।
दूसरे शब्दों में, PgBouncer कॉन्फ़िग फ़ाइल में निर्देश शामिल हो सकते हैं, जो पढ़ने और संसाधित करने के लिए एक और कॉन्फ़िग फ़ाइल निर्दिष्ट करते हैं। यह एक बड़ी कॉन्फ़िगरेशन फ़ाइल को छोटी और अधिक प्रबंधनीय फ़ाइलों में विभाजित करने की अनुमति देता है। शामिल निर्देश इस तरह दिखते हैं:
%include filename
यदि फ़ाइल का नाम पूर्ण पथ नहीं है तो इसे वर्तमान कार्यशील निर्देशिका के सापेक्ष लिया जाता है।
इस संस्करण में और अधिक सुविधाएँ जारी की गई हैं। आप PgBouncer चैंज पेज पर जा सकते हैं या अन्य सुधारों के लिए नीचे दी गई सूची देख सकते हैं:
- शो क्लाइंट्स/सर्वर में रिमोट_पिड दिखाएं। उन क्लाइंट के लिए उपलब्ध है जो यूनिक्स सॉकेट और टीसीपी और यूनिक्स सॉकेट सर्वर दोनों से जुड़ते हैं। tcp-server के मामले में, pid को कैंसिल की से लिया जाता है।
- नकारात्मक डीएनएस कैशिंग को नियंत्रित करने के लिए अलग कॉन्फ़िगरेशन परम (dns_nxdomain_ttl) जोड़ें।
- क्लाइंट होस्ट आईपी एड्रेस और पोर्ट को application_name में जोड़ें। यह कॉन्फ़िगरेशन पैरामीटर application_name_add_host द्वारा सक्षम किया गया है जो डिफ़ॉल्ट रूप से 'बंद' हो जाता है।
PgBouncer क्या है?
PgBouncer PostgreSQL डेटाबेस में क्लाइंट कनेक्शन प्रबंधित करने के लिए एक उपयोगिता है। संक्षेप में, यह PostgreSQL सर्वर के लिए एक कनेक्शन पूल बनाए रखता है और उन मौजूदा कनेक्शनों का पुन:उपयोग करता है। हालांकि यह क्लाइंट कनेक्शन ओवरहेड को कम करने के लिए उपयोगी हो सकता है, यह डेटाबेस सर्वर के लिए खुले कनेक्शन की अधिकतम संख्या को सीमित करने में भी सक्षम बनाता है। इसका उपयोग ट्रैफ़िक को आकार देने के लिए भी किया जा सकता है जैसे विभिन्न डेटाबेस सर्वरों के लिए एक या एक से अधिक डेटाबेस से कनेक्शन पुनर्निर्देशित करना। इनके अलावा, PgBouncer का उपयोग उपयोगकर्ता और यहां तक कि डेटाबेस स्तर पर सुरक्षा के प्रबंधन के लिए किया जा सकता है।
नीचे दिए गए आरेख को देखें जो अधिक दृश्य तरीके से PgBouncer वास्तुकला को दर्शाता है।
इस विशेष उदाहरण में, क्लाइंट एप्लिकेशन अलग-अलग PgBouncer उदाहरणों से जुड़े होते हैं, जहां वे इसके बजाय सीधे PostgreSQL डेटाबेस सर्वर से जुड़े होंगे। डेटाबेस सर्वर "डीबी सर्वर 1" और "डीबी सर्वर 2" स्वतंत्र पोस्टग्रेएसक्यूएल इंस्टेंस हो सकते हैं या वे विभिन्न भूमिकाओं (जैसे, मास्टर/प्रतिकृति या राइट-मास्टर/बैकअप-मास्टर, आदि) के साथ क्लस्टर का हिस्सा हो सकते हैं।पी>
प्रत्येक PgBouncer उदाहरण PostgreSQL सर्वर के लिए कई खुले कनेक्शन के साथ एक कनेक्शन पूल रखता है। जैसा कि उदाहरण से देखा जा सकता है, PgBouncers विभिन्न डेटाबेस और यहां तक कि विभिन्न डेटाबेस सर्वर से कनेक्शन के साथ पूल बनाने की अनुमति देता है।
अधिक जानकारी के लिए
आप PgBouncer की मुख्य वेबसाइट पर जा सकते हैं:http://pgbouncer.github.io/
उनके पास एक अच्छा FAQ पृष्ठ है: http://pgbouncer.github.io/faq.html
आप परियोजना के जीथब भंडार पर एक नज़र डाल सकते हैं:http://github.com/pgbouncer/pgbouncer