PostgreSQL ने संस्करण 10 से 11, 12 और 13 में कई अन्य सफलता सुविधाएँ भी पेश कीं, जो इसे Oracle के खिलाफ एक वास्तविक प्रतियोगी बनाती हैं, जैसे कि विभाजन संवर्द्धन, समानांतर क्वेरी और तार्किक प्रतिकृति। इस ब्लॉग पोस्ट में, हम PostgreSQL के हाल के संस्करणों में शामिल कुछ नई और उल्लेखनीय PostgreSQL सुविधाओं का प्रदर्शन करेंगे।
विभाजन सुविधाएं
घोषणात्मक विभाजन
PostgreSQL संस्करण 9.4 तक, PostgreSQL में कोई वास्तविक विभाजन नहीं था। यह केवल टेबल इनहेरिटेंस के माध्यम से हासिल किया गया था, जिसने बहुत सीमित कार्यक्षमता और प्रदर्शन लाभ की पेशकश की थी। अधिकांश कार्यक्षमता ट्रिगर्स या SQL कमांड के माध्यम से मैन्युअल रूप से प्रबंधित की जाती है। उदाहरण के लिए, हमें INSERT से पहले एक पंक्ति को सही विभाजन पर निर्देशित करने के लिए ट्रिगर्स का उपयोग करना था। हमें प्रत्येक विभाजन के लिए अलग से अनुक्रमणिका बनानी होगी। PostgreSQL संस्करण 10 ने घोषणात्मक विभाजन को जन्म दिया, लेकिन हमें अभी भी प्रत्येक विभाजन के लिए बाधाएँ और अनुक्रमणिकाएँ बनानी थीं।
PostgreSQL 11 नई पार्टिशनिंग सुविधाओं के एक बहुत ही प्रभावशाली सेट के साथ आता है जो प्रदर्शन को बेहतर बनाने में मदद करता है और साथ ही विभाजित तालिकाओं को अनुप्रयोगों के लिए अधिक पारदर्शी बनाने में मदद करता है।
विभाजित तालिकाओं की तार्किक प्रतिकृति
PostgreSQL 13 के साथ, उन्होंने विभाजित तालिकाओं को तार्किक रूप से दोहराने के लिए समर्थन पेश किया। पहले, आपको अलग-अलग अपने स्टैंडबाय में विभाजन को दोहराने के लिए मजबूर किया गया था। अब, हालांकि, आप एक ही समय में अपने सभी विभाजनों को स्वचालित रूप से दोहरा सकते हैं
विभाजन के तरीके
वर्तमान में समर्थित विभाजन विधियां श्रेणी, सूची और हैश हैं।
कुंजी और अनुक्रमणिका
विभाजित तालिकाओं पर विदेशी कुंजियों के लिए पूर्ण समर्थन PostgreSQL 12 में जोड़ा गया था। PostgreSQL भी प्राथमिक कुंजी, अनुक्रमणिका और विभाजित तालिकाओं पर ट्रिगर के लिए समर्थन समेटे हुए है।
डिफ़ॉल्ट विभाजन
PostgreSQL डेटा को संग्रहीत करने के लिए "डिफ़ॉल्ट" विभाजन के निर्माण की अनुमति देता है जो किसी भी शेष विभाजन से मेल नहीं खाता है। Oracle उपयोगकर्ता इस सुविधा को पसंद करेंगे क्योंकि यह Oracle डेटाबेस में उपलब्ध नहीं है।
पंक्ति गति
अद्यतन विवरण जो एक विभाजन कुंजी कॉलम को बदलते हैं, अब प्रभावित पंक्तियों को उपयुक्त विभाजन में ले जाने का कारण बनते हैं।
पार्टीशन प्रूनिंग
क्वेरी योजना और निष्पादन के दौरान उन्नत विभाजन उन्मूलन रणनीतियों के माध्यम से चयन प्रदर्शन में सुधार करें। विभाजन उन्मूलन करने का एक नया तरीका जोड़ा गया है। यह नया एल्गोरिथम क्वेरी के WHERE क्लॉज को देखकर मैचिंग पार्टिशन को निर्धारित करने में सक्षम है। पिछले एल्गोरिथम ने प्रत्येक विभाजन की जाँच की, बदले में, यह देखने के लिए कि क्या यह क्वेरी के WHERE क्लॉज से मेल खा सकता है। इसके परिणामस्वरूप विभाजन की संख्या बढ़ने के साथ-साथ नियोजन समय में अतिरिक्त वृद्धि हुई।
क्वेरी निष्पादन के दौरान पार्टीशन प्रूनिंग
तैयार किए गए बयानों के लिए, निष्पादन से पहले क्वेरी पैरामीटर ज्ञात नहीं हैं। क्वेरी प्लानर नियोजन चरण के दौरान विभाजन को समाप्त नहीं कर सकता क्योंकि पैरामीटर ज्ञात नहीं हैं। इसलिए, निष्पादक केवल पैरामीटर से मेल खाने वाले विभाजनों तक पहुंचने के लिए निष्पादन के दौरान विभाजन छंटाई करता है।
नई और उभरती हुई पोस्टग्रेएसक्यूएल एंटरप्राइज़ सुविधाएँ हाल की रिलीज़ के साथ ट्वीट करने के लिए क्लिक करेंइंडेक्सिंग सुविधाएं
कवरिंग इंडेक्स
PostgreSQL अब आपको btree अनुक्रमणिका में गैर-कुंजी कॉलम जोड़ने की अनुमति देता है। चूंकि प्रश्नों को आम तौर पर उनके द्वारा खोजे जाने वाले कॉलम की तुलना में अधिक कॉलम पुनर्प्राप्त करने की आवश्यकता होती है, PostgreSQL आपको एक इंडेक्स बनाने की अनुमति देता है जिसमें कुछ कॉलम केवल "पेलोड" होते हैं और खोज कुंजी का हिस्सा नहीं होते हैं। यह आवश्यक पंक्तियों को पुनः प्राप्त करने के लिए केवल अनुक्रमणिका स्कैन करने में मदद करता है।
Reindex समवर्ती रूप से
PostgreSQL 12 को शुरू करते हुए, Oracle REBUILD INDEX कमांड की तरह, पढ़ने/लिखने के लिए टेबल को लॉक किए बिना REINDEX CONCURRENTLY के साथ एक इंडेक्स को फिर से बनाना संभव है।
समानांतर अनुक्रमणिका निर्माण
समानांतर अनुक्रमणिका निर्माण के साथ (PostgreSQL 11 में पेश किया गया, वर्तमान में केवल b-tree अनुक्रमणिका के लिए लागू है), अनुक्रमणिका को max_parallel_workers मान तक तेज़ी से बनाया जा सकता है और कई को धारण करने के लिए पर्याप्त रखरखाव_वर्क_मेम सेट किया जा सकता है डेटा की प्रतियां। समानांतर अनुक्रमणिका निर्माण आपके अनुक्रमणिका निर्माण समय को महत्वपूर्ण रूप से कम कर सकता है।
बी-ट्री इंडेक्स में डेटा का दोहराव
कभी-कभी अनुक्रमणिका में डुप्लिकेट प्रविष्टियां होंगी। इसका मतलब यह है कि बी-ट्री इंडेक्स में एक ही इंडेक्स में कम से कम दो इंडेक्स एंट्री वाले लीफ नोड में सभी इंडेक्स कॉलम के लिए समान डेटा होता है। PostgreSQL 13 में डुप्लीकेशन के अतिरिक्त, आप इन डुप्लिकेट बी-ट्री इंडेक्स प्रविष्टियों को समूहीकृत कर सकते हैं और उन्हें समूह प्रविष्टि में एकत्र कर सकते हैं। इसका लाभ डिस्क और रैम पर स्थान और कम लोड की बचत है, क्योंकि आपको कॉलम डेटा की नकल नहीं करनी होगी। डुप्लिकेट प्रविष्टियाँ भी अवांछित अनुक्रमणिका में सूजन का कारण बनती हैं।
प्रमाणीकरण
SCRAM-SHA-256
PostgreSQL 11 में SCRAM-SHA-256 पासवर्ड प्रमाणीकरण के लिए समर्थन आया। यह विधि अविश्वसनीय कनेक्शनों पर पासवर्ड को सूँघने से रोकती है और आपको अपने पासवर्ड को क्रिप्टोग्राफ़िक रूप से हैश किए गए रूप में संग्रहीत करने की अनुमति देती है।
वर्तमान में समर्थित सभी पासवर्ड प्रमाणीकरण विधियों में से, यह सबसे सुरक्षित तरीका है।
GSSAPI
GSSAPI सुरक्षित प्रमाणीकरण की अनुमति देता है, साथ ही इसका समर्थन करने वाले सिस्टम के लिए स्वचालित सिंगल-साइन-ऑन की अनुमति देता है। यह प्रमाणीकरण विधि किसी GSSAPI-संगत सुरक्षा लाइब्रेरी पर निर्भर करती है। डेटाबेस कनेक्शन पर भेजा गया डेटा तब तक अनएन्क्रिप्टेड रहेगा जब तक एसएसएल का उपयोग नहीं किया जाता है; हालांकि प्रमाणीकरण स्वयं सुरक्षित है। उद्योग मानकों के अनुसार PostgreSQL के साथ Kerberos प्रमाणीकरण के साथ GSSAPI संभव है। जब Kerberos का उपयोग किया जाता है, तो "servicename/hostname@realm" प्रारूप में एक मानक प्रिंसिपल का उपयोग किया जाता है। सर्वर द्वारा उपयोग किए जाने वाले कीटैब में शामिल कोई भी प्रिंसिपल PostgreSQL सर्वर द्वारा स्वीकार किया जाएगा।
LDAP
पासवर्ड प्रमाणीकरण के समान ही संचालन करते हुए, यह प्रमाणीकरण विधि सत्यापन विधि के रूप में LDAP का उपयोग करती है। इसका उपयोग केवल उपयोगकर्ता नाम और पासवर्ड जोड़े को मान्य करने के लिए किया जाता है, इसलिए प्रमाणीकरण के काम करने के लिए उपयोगकर्ता को पहले से ही डेटाबेस में मौजूद होना चाहिए। एलडीएपी प्रमाणीकरण या तो एक साधारण बाइंड मोड या जिसे सर्च + बाइंड कहा जाता है, में काम करता है। सर्च+बाइंड आपको साधारण बाइंड मोड की तुलना में अन्य पहचानकर्ताओं का उपयोग करने की अनुमति देता है, जो केवल विशिष्ट नाम, डोमेन नाम या ईमेल का उपयोग करने की अनुमति देता है।
प्रमाणपत्र
प्रमाणपत्र प्रमाणीकरण विधि प्रमाणित करने के लिए SSL प्रमाणपत्र का उपयोग करती है। नतीजतन, यह केवल एसएसएल कनेक्शन के लिए उपलब्ध है। प्रमाणपत्र प्रमाणीकरण के साथ, किसी पासवर्ड की आवश्यकता नहीं है। प्रमाणित करने में सक्षम होने के लिए क्लाइंट को केवल एक वैध और विश्वसनीय प्रमाणपत्र प्रदान करने की आवश्यकता होती है। प्रमाणपत्र के सामान्य नाम का डेटाबेस उपयोगकर्ता नाम से मिलान किया जाएगा, और यदि कोई मेल मिलता है, तो क्लाइंट लॉग इन हो जाएगा।
अन्य उल्लेखनीय विशेषताएं
समानांतर वैक्यूम
PostgreSQL 13 की रिलीज के साथ, VACUUM कमांड में सुधार लागू किए गए। प्रश्न में सुधार जोड़ा गया पैरामीटर विकल्प PARALLEL है। PARALLEL के साथ, आप VACUUM के इंडेक्स वैक्यूम और इंडेक्स क्लीनअप चरणों का प्रदर्शन कर सकते हैं। यह आपको एक ही टेबल के अनुरूप कई इंडेक्स को समानांतर वैक्यूम करने की अनुमति देता है।
समानांतर क्वेरी
अधिकांश रिपोर्ट क्वेरी, जो आम तौर पर बहुत सारे डेटा को स्कैन करती हैं, इंडेक्स स्कैन के साथ भी कई पंक्तियों से डेटा को स्कैन या एकत्र करने की आवश्यकता के कारण प्रदर्शन में गिरावट का सामना करना पड़ता है। ये प्रश्न 9.4 तक केवल एक CPU का उपयोग कर सकते हैं और क्रमिक रूप से चल सकते हैं।
समानांतर क्वेरी के साथ (जो समानांतर अनुक्रमिक स्कैन, मर्ज जॉइन, हैश जॉइन, एग्रीगेट और अन्य समानांतर क्वेरी प्लान सुविधाएँ प्रदान करता है), ये क्वेरीज़ कई श्रमिकों का लाभ उठा सकती हैं, और प्रदर्शन कर सकते हैं दस्तावेज़ीकरण के अनुसार 2x से 10x तक सुधार करें।
समानांतर प्रश्नों का उपयोग कब करना है, यह जानने के लिए इस पोस्ट को देखें।
मूल तार्किक प्रतिकृति
PostgreSQL ने विशिष्ट तालिकाओं, स्तंभों या पंक्तियों को दोहराने के लिए, स्ट्रीमिंग प्रतिकृति और ओरेकल स्ट्रीम की तरह अधिक लचीला प्रतिकृति विकल्प प्रदान करने के लिए संस्करण 10 में मूल तार्किक प्रतिकृति पेश की। इसका उपयोग कई डेटाबेस के बीच विभाजित करने या कई डेटाबेस से समेकित करने के लिए किया जा सकता है। और PostgreSQL के विभिन्न प्रमुख संस्करणों के बीच भी दोहरा सकते हैं।
एम्बेडेड लेनदेन के साथ संग्रहित प्रक्रियाएं
एक और जोड़ जो PostgreSQL को Oracle डेटाबेस से माइग्रेशन के लिए अनुकूल बनाता है।
हमारे पास संस्करण 9.4 में pgsql प्रोग्राम (DO ब्लॉक या फ़ंक्शन) के अंदर कोई लेनदेन नियंत्रण नहीं है, और लेनदेन शुरू करने और प्रतिबद्ध/रोलबैक करने के लिए dblink जैसे वर्कअराउंड का उपयोग करना पड़ता है ।
संग्रहीत कार्यविधियों के साथ, जिसका संस्करण 11 में प्रीमियर हुआ था, अब हम किसी भी pgsql संरचना के भीतर लेनदेन नियंत्रण को लागू कर सकते हैं जैसे लूप के लिए, लूप के लिए, या यदि कोई अन्य कथन। हालांकि संग्रहीत कार्यविधियाँ फ़ंक्शंस के समान हैं, उन्हें कॉल कमांड द्वारा लागू किया जाना है और स्वतंत्र प्रोग्राम के रूप में काम कर सकते हैं।
जेनरेट किए गए कॉलम
Oracle डेटाबेस की तरह, PostgreSQL में जेनरेट किए गए कॉलम पंक्ति के भीतर अन्य कॉलम से स्वचालित रूप से गणना किए गए डेटा को स्टोर कर सकते हैं। यह क्वेरी निष्पादन के दौरान मान की गणना न करके प्रश्नों को गति देता है, और इसके बजाय, उत्पन्न कॉलम मान की गणना INSERT या UPDATE को पंक्ति में की जाती है।
JIT कंपाइलेशन
PostgreSQL 11, 12 और 13 सभी जस्ट-इन-टाइम (JIT) संकलन का समर्थन करते हैं, जिसे 2018 में वापस जोड़ा गया था। JIT संकलन एक व्याख्या किए गए प्रोग्राम मूल्यांकन को में बदलने की प्रक्रिया है। एक देशी कार्यक्रम। जेआईटी संकलन के साथ, यह प्रक्रिया रन टाइम पर की जा सकती है। जेआईटी का एक लाभ अभिव्यक्ति-विशिष्ट कार्यों को उत्पन्न करने की संभावना है जिसे सीपीयू मूल रूप से निष्पादित कर सकता है। बदले में, प्रक्रिया आपको गति प्रदान करती है।
पेज चेकसम
पेज चेकसम एक ऐसी सुविधा है जो डिस्क में संग्रहीत डेटा की अखंडता को सत्यापित करने में आपकी सहायता करती है। पहले, आप केवल PostgreSQL क्लस्टर के प्रारंभ के दौरान पृष्ठ चेकसम को सक्षम कर सकते थे। PostgreSQL 12 ने pg_checksums कमांड के माध्यम से ऑफ़लाइन क्लस्टर में पेज चेकसम को सक्षम या अक्षम करने की क्षमता पेश की।
सारांश
जैसा कि आप इस लेख से देख सकते हैं, PostgreSQL एक निरंतर विकसित होने वाला डेटाबेस सिस्टम है जो तालिका में कई शक्तिशाली सुविधाएँ लाता है। प्रत्येक नया संस्करण नई रोमांचक सुविधाएँ जोड़ता है जो इसे Oracle जैसे अन्य डेटाबेस के लिए एक वास्तविक प्रतियोगी बनाता है। इसकी विभाजन और अनुक्रमण सुविधाओं को कई नए अपडेट मिलते हैं जो इसके पहले से ही विस्तृत टूलबॉक्स में जुड़ जाते हैं।
यदि आप अपने PostgreSQL डेटाबेस के लिए एक प्रबंधित समाधान की तलाश कर रहे हैं, तो बेझिझक PostgreSQL सेवा के लिए हमारा ScaleGrid देखें। हम एक निःशुल्क 30-दिवसीय परीक्षण प्रदान करते हैं जो आपको बिना किसी प्रतिबंध के हमारी सभी प्रबंधन सुविधाओं का उपयोग करने की अनुमति देता है। मूल्य निर्धारण मात्र $10/माह से शुरू होता है और आपको 24/7 सहायता के साथ पूरी तरह से प्रबंधित एंटरप्राइज़-ग्रेड PostgreSQL होस्टिंग समाधान तक पहुंच प्रदान करता है।