3 अक्टूबर 2019 को दुनिया के सबसे उन्नत ओपन सोर्स डेटाबेस का एक नया संस्करण जारी किया गया। PostgreSQL 12 अब अन्य महत्वपूर्ण विशेषताओं के बीच क्वेरी प्रदर्शन (विशेषकर बड़े डेटा सेट और समग्र स्थान उपयोग) में उल्लेखनीय सुधार के साथ उपलब्ध है।
इस ब्लॉग में हम इन नई सुविधाओं पर एक नज़र डालेंगे और आपको दिखाएंगे कि इस नए PostgreSQL 12 संस्करण को कैसे प्राप्त और स्थापित किया जाए। हम अपग्रेड करते समय ध्यान रखने योग्य कुछ बातों का भी पता लगाएंगे।
PostgreSQL 12 सुविधाएँ और सुधार
आइए इस नए PostgreSQL संस्करण की कुछ सबसे महत्वपूर्ण विशेषताओं और सुधारों का उल्लेख करना शुरू करते हैं।
अनुक्रमण
- बी-ट्री इंडेक्स के लिए अंतरिक्ष उपयोग और पढ़ने/लिखने के प्रदर्शन के लिए एक अनुकूलन है।
- GIST, GIN, और SP-GiST इंडेक्स बनाने के लिए WAL ओवरहेड को कम करना।
- आप SP-GiST इंडेक्स का उपयोग करके दूरी ऑपरेटर (<->) के साथ K-निकटतम पड़ोसी प्रश्नों को निष्पादित कर सकते हैं।
- REINDEX CONCURRENTLY कमांड के माध्यम से इंडेक्स को लिखने को ब्लॉक किए बिना इंडेक्स को फिर से बनाएं, जिससे यूजर्स लंबे इंडेक्स के पुनर्निर्माण के लिए डाउनटाइम परिदृश्यों से बच सकें।
विभाजन करना
- विभाजित तालिकाओं पर प्रश्नों में सुधार हुआ है, विशेष रूप से उन हजारों विभाजन वाली तालिकाओं के लिए जिन्हें केवल एक सीमित उपसमुच्चय से डेटा पुनर्प्राप्त करने की आवश्यकता होती है।
- INSERT और COPY के साथ विभाजित तालिकाओं में डेटा जोड़ने के लिए प्रदर्शन सुधार।
- आप प्रश्नों को अवरुद्ध किए बिना तालिका में एक नया विभाजन संलग्न करने में सक्षम होंगे।
एसक्यूएल
- अब आप SQL/JSON मानक में परिभाषित JSON पथ अभिव्यक्तियों का उपयोग करके JSON दस्तावेज़ों पर क्वेरी चला सकते हैं और वे प्रभावी ढंग से डेटा पुनर्प्राप्त करने के लिए JSONB प्रारूप में संग्रहीत दस्तावेज़ों के लिए मौजूदा अनुक्रमण तंत्र का उपयोग कर सकते हैं।
- के साथ प्रश्नों को अब PostgreSQL 12 द्वारा स्वचालित रूप से इनलाइन किया जा सकता है (यदि यह पुनरावर्ती नहीं है, इसका कोई साइड-इफ़ेक्ट नहीं है, और क्वेरी के बाद के भाग में केवल एक बार संदर्भित है), जो बदले में प्रदर्शन को बढ़ाने में मदद कर सकता है कई मौजूदा प्रश्नों में से।
- "जेनरेट किए गए कॉलम" का परिचय देता है। इस प्रकार का कॉलम उसी तालिका में अन्य कॉलम की सामग्री से इसके मूल्य की गणना करता है। इस परिकलित मान को संग्रहीत करना भी समर्थित है।
अंतर्राष्ट्रीयकरण
- PostgreSQL 12 उपयोगकर्ताओं को "नॉनडेटर्मिनिस्टिक कॉलेशन" को परिभाषित करने की अनुमति देकर आईसीयू कोलाज के अपने समर्थन का विस्तार करता है, उदाहरण के लिए, केस-असंवेदनशील या उच्चारण-असंवेदनशील तुलनाओं की अनुमति दे सकता है।
प्रमाणीकरण
- जीएसएसएपीआई इंटरफेस पर प्रमाणीकरण के लिए क्लाइंट और सर्वर-साइड एन्क्रिप्शन दोनों का परिचय देता है।
- PostgreSQL सेवा LDAP सर्वरों को खोजने में सक्षम है यदि इसे OpenLDAP के साथ संकलित किया गया है।
- बहु-कारक प्रमाणीकरण, clientcert=verify-full विकल्प और pg_hba.conf फ़ाइल में कॉन्फ़िगर की गई एक अतिरिक्त प्रमाणीकरण विधि का उपयोग करके।
यदि आप इन नई सुविधाओं और सुधारों का लाभ उठाना चाहते हैं, तो आप डाउनलोड पृष्ठ पर जा सकते हैं और अंतिम PostgreSQL संस्करण प्राप्त कर सकते हैं। यदि आपको HA सेटअप की आवश्यकता है, तो यहां एक ब्लॉग है जो आपको दिखाता है कि HA के लिए PostgreSQL कैसे स्थापित और कॉन्फ़िगर किया जाए।
PostgreSQL 12 कैसे स्थापित करें
इस उदाहरण के लिए, हम CentOS7 को ऑपरेटिंग सिस्टम के रूप में उपयोग करने जा रहे हैं। इसलिए, हमें RedHat आधारित OS डाउनलोड साइट पर जाने और संबंधित संस्करण को स्थापित करने की आवश्यकता है।
$ yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
यह स्थिर, परीक्षण और स्रोत पैकेज के साथ PostgreSQL रिपॉजिटरी स्थापित करेगा।
$ head /etc/yum.repos.d/pgdg-redhat-all.repo
# PGDG Red Hat Enterprise Linux / CentOS stable repositories:
[pgdg12]
name=PostgreSQL 12 for RHEL/CentOS $releasever - $basearch
baseurl=https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-$releasever-$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
...
फिर, क्लाइंट और सर्वर PostgreSQL12 पैकेज इंस्टॉल करें। यह कुछ अजगर निर्भरताएं स्थापित करेगा।
$ yum install postgresql12 postgresql12-server
अब, आप अपना नया PostgreSQL 12 डेटाबेस प्रारंभ कर सकते हैं।
$ /usr/pgsql-12/bin/postgresql-12-setup initdb
Initializing database ... OK
और PostgreSQL सेवा को सक्षम/शुरू करें।
$ systemctl enable postgresql-12
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-12.service to /usr/lib/systemd/system/postgresql-12.service.
$ systemctl start postgresql-12
और बस इतना ही। आपके पास नया PostgreSQL संस्करण तैयार है और चल रहा है।
$ psql
psql (12.0)
Type "help" for help.
postgres=# select version();
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 12.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
(1 row)
अब आपने अंतिम PostgreSQL संस्करण स्थापित कर लिया है, आप अपने डेटा को इस नए डेटाबेस नोड में माइग्रेट कर सकते हैं।
PostgreSQL 12 में अपग्रेड करना
यदि आप अपने वर्तमान PostgreSQL संस्करण को इस नए संस्करण में अपग्रेड करना चाहते हैं, तो आपके पास तीन मुख्य विकल्प हैं जो इस कार्य को करेंगे।
- pg_dump :यह एक तार्किक बैकअप उपकरण है जो आपको अपने डेटा को डंप करने और इसे नए PostgreSQL संस्करण में पुनर्स्थापित करने की अनुमति देता है। यहां आपके पास डाउनटाइम अवधि होगी जो आपके डेटा आकार के अनुसार अलग-अलग होगी .. आपको सिस्टम को रोकने या मास्टर नोड में नए डेटा से बचने की जरूरत है, pg_dump चलाएं, जेनरेट किए गए डंप को नए डेटाबेस नोड में ले जाएं और इसे पुनर्स्थापित करें। इस समय के दौरान, आप डेटा असंगति से बचने के लिए अपने मास्टर PostgreSQL डेटाबेस में नहीं लिख सकते हैं।
- Pg_upgrad :यह आपके PostgreSQL संस्करण को इन-प्लेस अपग्रेड करने के लिए एक PostgreSQL टूल है। यह उत्पादन के माहौल में खतरनाक हो सकता है और हम उस मामले में इस पद्धति की अनुशंसा नहीं करते हैं। इस पद्धति का उपयोग करने से आपके पास डाउनटाइम भी होगा, लेकिन संभवत:यह पिछली pg_dump विधि का उपयोग करने की तुलना में काफी कम होगा।
- तार्किक प्रतिकृति :PostgreSQL 10 के बाद से आप इस प्रतिकृति पद्धति का उपयोग करने में सक्षम हैं जो आपको शून्य (या लगभग शून्य) डाउनटाइम के साथ प्रमुख संस्करण उन्नयन करने की अनुमति देता है। इस तरह, आप पिछले PostgreSQL संस्करण में एक स्टैंडबाय नोड जोड़ सकते हैं, और जब प्रतिकृति अप-टू-डेट होती है, तो आप नए PostgreSQL नोड को बढ़ावा देने के लिए एक विफलता प्रक्रिया कर सकते हैं।
PostgreSQL 12 में अपग्रेड करने से पहले के विचार
सामान्य तौर पर, सभी अपग्रेड प्रक्रिया के लिए, और सभी प्रौद्योगिकी में, कई बिंदुओं को ध्यान में रखना होता है। आइए इनमें से कुछ मुख्य देखें।
- डेटा प्रकार एब्सटाइम, रिलेटाइम और टिंटरवल हटा दिए गए थे।
- Recovery.conf सेटिंग्स postgresql.conf फ़ाइल में हैं और अब इसका उपयोग नहीं किया जाता है। यदि आपने यह फ़ाइल बनाई है तो सर्वर प्रारंभ नहीं होगा। फ़ाइलें पुनर्प्राप्ति.सिग्नल और स्टैंडबाय.सिग्नल फ़ाइलें अब गैर-प्राथमिक मोड में स्विच करने के लिए उपयोग की जाती हैं। ट्रिगर_फाइल सेटिंग का नाम बदलकर प्रमोशन_ट्रिगर_फाइल कर दिया गया है और स्टैंडबाय_मोड सेटिंग को हटा दिया गया है।
- एकाधिक परस्पर विरोधी पुनर्प्राप्ति_लक्ष्य विनिर्देशों की अनुमति नहीं है।
- डंप सामग्री को मानक आउटपुट में भेजने के लिए "-f" का विनिर्देश pg_restore में आवश्यक है।
- डुप्लिकेट प्रविष्टियों के संचालन में सुधार करने के लिए, बी-ट्री इंडेक्स में अधिकतम इंडेक्स एंट्री लंबाई आठ बाइट्स से कम हो जाती है। पिछले संस्करण से pg_upgrad'd अनुक्रमणिका पर REINDEX संचालन विफल हो सकता है।
- यदि कोई तर्क सूची प्रदान नहीं की जाती है और एक से अधिक मेल खाने वाली वस्तुएं हैं, तो फ़ंक्शन/प्रक्रिया/कुल/रूटीन मौजूद होने पर ड्रॉप करें।
नई पोस्टग्रेएसक्यूएल 12 सुविधाओं के बारे में अधिक विस्तृत जानकारी और इसे माइग्रेट करने से पहले विचार करने के लिए, आप आधिकारिक रिलीज नोट्स वेब पेज का संदर्भ ले सकते हैं।