परिचय
जैसा कि आप जानते हैं, PostgreSQL को एक्स्टेंसिबिलिटी और कस्टमाइज़ेशन के लिए डिज़ाइन किया गया है, इसका मतलब है कि हम एक्सटेंशन का उपयोग करके आपके डेटाबेस की कार्यक्षमता बढ़ा सकते हैं। PostgreSQL एक्सटेंशन कार्यक्षमता एक ही पैकेज में कई SQL ऑब्जेक्ट्स को एक साथ बंडल करने की अनुमति देती है जिसे आपके डेटाबेस से लोड या हटाया जा सकता है। एक बार जब आप इसे अपने डेटाबेस में लोड कर लेते हैं, तो एक्सटेंशन अंतर्निहित सुविधाओं के रूप में कार्य कर सकते हैं।
PostgreSQL डेटाबेस में कई विशेषताएं हैं और डेटा प्रकारों, कार्यों, ऑपरेटरों आदि की एक विस्तृत श्रृंखला प्रदान करता है। लेकिन कभी-कभी यह कुछ उपयोग के मामलों के लिए पर्याप्त नहीं होता है। हम एक्सटेंशन के माध्यम से PostgreSQL की कार्यक्षमता को आसानी से बढ़ा सकते हैं। यह डेटाबेस डेवलपर्स और एडमिनिस्ट्रेटर के लिए बहुत उपयोगी फीचर है।
इस ब्लॉग में हम नीचे दो चीजों को शामिल कर सकते हैं।
- PostgreSQL समुदाय समर्थित एक्सटेंशन का उपयोग कैसे करें
- PostgreSQL में एक्सटेंशन कैसे बनाएं और उपयोग करें
PostgreSQL समुदाय समर्थित एक्सटेंशन का उपयोग कैसे करें
PostgreSQL में कई योगदान मॉड्यूल/एक्सटेंशन हैं। ये मॉड्यूल PostgreSQL समुदाय द्वारा बनाए रखा जाता है। हम एक एक्सटेंशन बनाकर इन मॉड्यूल और PostgreSQL में इसकी कार्यक्षमता का उपयोग कर सकते हैं।
आइए देखें कि PostgreSQL में hstore एक्सटेंशन की कार्यक्षमता का उपयोग कैसे करें।
Hstore एक्सटेंशन
hstore मॉड्यूल hstore डेटा प्रकार को लागू करता है जो एक ही मान में कुंजी-मूल्य जोड़े को संग्रहीत करता है। हम कई मामलों में hstore डेटा प्रकार का उपयोग कर सकते हैं, जैसे अर्ध-संरचित डेटा या कई विशेषताओं वाली पंक्तियाँ जिन्हें शायद ही कभी क्वेरी किया जाता है। ध्यान दें कि कुंजियाँ और मान केवल टेक्स्ट स्ट्रिंग हैं। इस कार्यक्षमता का उपयोग करने के लिए, हमें इसके लिए PostgreSQL में एक्सटेंशन बनाने की आवश्यकता है।
आइए देखें कि hstore डेटा प्रकार का उपयोग कैसे करें।
CREATE TABLE books (
book_code serial primary key,
book_title VARCHAR (20),
attr hstore
);
hstore डेटा प्रकार बनाने से पहले, आपको hstore एक्सटेंशन को सक्षम करना होगा जो आपके PostgreSQL में contrib मॉड्यूल को लोड करता है।
CREATE EXTENSION hstore;
डेटाबेस से डेटा पुनर्प्राप्त करने के लिए विभिन्न hstore फ़ंक्शन हैं। आप यहां कार्यों और उदाहरणों की जांच कर सकते हैं।
कृपया PostgreSQL में अतिरिक्त आपूर्ति किए गए मॉड्यूल की जांच करें।
एक्सटेंशन कैसे बनाएं
PostgreSQL में एक्स्टेंसिबिलिटी सबसे शक्तिशाली विशेषताओं में से एक है। आप कंट्रीब मॉड्यूल का उपयोग करके किसी विशेष उपयोग के मामले के लिए नई कार्यक्षमता जोड़ सकते हैं और इसे क्रिएट एक्सटेंशन का उपयोग करके इंस्टॉल कर सकते हैं।
इस खंड में, हम सीखेंगे कि एक साधारण योगदान मॉड्यूल कैसे बनाया जाता है और PostgreSQL में इसकी कार्यक्षमता का उपयोग कैसे किया जाता है।
एक्सटेंशन फ़ाइलें
अपने डेटाबेस में CREATE EXTENSION कमांड चलाने में सक्षम होने के लिए, आपके एक्सटेंशन को कम से कम दो फाइलों की आवश्यकता होगी:
- कंट्रोल फाइल
फाइल फॉर्मेट एक्सटेंशन_नाम.कंट्रोल होना चाहिए, जो पोस्टग्रेएसक्यूएल के एक्सटेंशन के बारे में मूल बातें बताता है, और इसे इंस्टॉलेशन के SHAREDIR/एक्सटेंशन डायरेक्टरी में रखा जाना चाहिए। - एसक्यूएल स्क्रिप्ट फ़ाइल
प्रारूप एक्सटेंशन में फ़ाइल --version.sql में वे कार्य हैं जिन्हें आप जोड़ना चाहते हैं।
एक्सटेंशन में नियंत्रण फ़ाइल का फ़ाइल स्वरूप postgresql.conf फ़ाइल के समान है, अर्थात् पैरामीटर_नाम =मान असाइनमेंट की एक सूची, प्रति पंक्ति एक।
उदाहरण
कृपया SQL-only एक्सटेंशन के नीचे दिए गए पूर्ण उदाहरण की जाँच करें, PostgreSQL में Oracle संगत NVL फ़ंक्शन बनाएँ। कई मामले हैं लेकिन यहां हम उदाहरण के लिए केवल एक मामले पर विचार कर सकते हैं।
SQL स्क्रिप्ट फ़ाइल nvlfunc--1.0.sql इस तरह दिखती है...
Nvlfunc--1.0.sql फ़ाइल:
--complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION nvlfunc" to load this file. \quit
CREATE OR REPLACE FUNCTION public.NVL(SMALLINT,SMALLINT)
RETURNS SMALLINT AS $$
SELECT COALESCE($1,$2);
$$ LANGUAGE SQL IMMUTABLE;
नियंत्रण फ़ाइल nvlfunc इस तरह दिखती है...
Nvlfunc.conntrol फ़ाइल:
# nvlfunc extension
comment = 'Oracle compatible nvl function'
default_version = '1.0'
module_pathname = '$libdir/nvlfunc'
relocatable = false
जबकि आपको इन फ़ाइलों को सही निर्देशिका में स्थापित करने के लिए शायद ही किसी मेकफ़ाइल की आवश्यकता हो, आप एक मेकफ़ाइल का उपयोग कर सकते हैं जिसमें यह शामिल है:
मेकफ़ाइल:
EXTENSION = nvlfunc
DATA = nvlfunc--1.0.sql
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
यदि आपने 'सी' भाषा का उपयोग करके फ़ंक्शन को कार्यान्वित किया है तो आपको फ़ाइल को मेकफ़ाइल में जोड़ने की आवश्यकता है।
इंस्टॉलेशन
कमांड मेक इंस्टाल नियंत्रण फ़ाइल और sql स्क्रिप्ट फ़ाइल को सही निर्देशिका में स्थापित करेगा जैसा कि pg_config द्वारा रिपोर्ट किया गया है।
एक बार फ़ाइलें इंस्टाल हो जाने के बाद, PostgreSQL में किसी विशेष डेटाबेस में ऑब्जेक्ट लोड करने के लिए CREATE EXTENSION कमांड का उपयोग करें।
कृपया nvlfunc एक्सटेंशन इंस्टॉल करने के लिए निम्न चरणों की जांच करें और आप इस फ़ाइल को अपनी एक्सटेंशन निर्देशिका में भी जोड़ सकते हैं:
INSTALL.nvlfunc फ़ाइल:
This module is a PostgreSQL extension which provides the Oracle compatible nvl function feature.
Use below command in source directory of nvlfunc to install the module.
make install
Then use the below command to create extension nvlfunc in database.
CREATE EXTENSION nvlfunc;
Use the below command to remove the nvlfunc extension from database.
DROP EXTENSION nvlfunc;
Use below command in source directory of nvlfunc to uninstall the module.
make uninstall
Note:
This extension module requires PostgreSQL 9.1 or later because CREATE EXTENSION
feature is available in PostgreSQL 9.1 and later version.
इससे पहले कि आप उनकी कार्यक्षमता का उपयोग कर सकें, PostgreSQL एक्सटेंशन आपके डेटाबेस में स्थापित होना चाहिए। किसी विशेष एक्सटेंशन को स्थापित करने के लिए, पैकेज्ड ऑब्जेक्ट को डेटाबेस में लोड करने के लिए psql से CREATE EXTENSION कमांड चलाएँ।
आज श्वेतपत्र डाउनलोड करें क्लस्टरकंट्रोल के साथ पोस्टग्रेएसक्यूएल प्रबंधन और स्वचालन इस बारे में जानें कि पोस्टग्रेएसक्यूएल को तैनात करने, मॉनिटर करने, प्रबंधित करने और स्केल करने के लिए आपको क्या जानना चाहिए। श्वेतपत्र डाउनलोड करेंपरीक्षण
एक बार जब आप एक्सटेंशन बना लेते हैं, तो उस एक्सटेंशन के लिए एक टेस्ट केस बनाने की सिफारिश की जाती है ताकि जब आप इस मॉड्यूल को एक अलग PostgreSQL संस्करण में स्थापित कर रहे हों, तो आप जांच सकते हैं कि सभी परीक्षण मामले अपेक्षित रूप से काम कर रहे हैं या नहीं।
यह एक वैकल्पिक कदम है लेकिन आप इसे बना सकते हैं। परीक्षण के मामले इस तरह दिखते हैं:
sql/nvlfunc.sql फ़ाइल:
SELECT NVL(NULL::SMALLINT, 11::SMALLINT);
फिर आप किसी अन्य फ़ाइल में अपेक्षित आउटपुट जोड़ सकते हैं। अपेक्षित आउटपुट फ़ाइल इस तरह दिखती है:
अपेक्षित/nvlfunc.out फ़ाइल:
SELECT NVL(NULL::SMALLINT, 11::SMALLINT);
nvl
-----
11
(1 row)
यह सिर्फ एक उदाहरण है, इसलिए केवल एक टेस्ट केस जोड़ा जाता है। लेकिन जब आप एक नया एक्सटेंशन बना रहे हों, तो आप और परीक्षण मामले जोड़ सकते हैं।
Nvlfunc एक्सटेंशन निर्देशिका संरचना:
# mkdir nvlfunc
# cd nvlfunc
# ls
Makefile nvlfunc.control nvlfunc--1.0.sql sql expected INSTALL.nvlfunc README
पेशेवरों
- पोस्टग्रेएसक्यूएल कार्यक्षमता का विस्तार करने में आसान
- एक्सटेंशन बनाना और इंस्टॉल करना बहुत आसान है
- PostgreSQL के विभिन्न संस्करणों पर प्रतिगमन के लिए परीक्षण करना आसान
विपक्ष
- कोई विशेष नुकसान नहीं है, लेकिन आप एक्सटेंशन में जो सुविधा जोड़ रहे हैं, उसका उपयोग करने से पहले उसका परीक्षण करें।
निष्कर्ष
PostgreSQL एक्स्टेंसिबिलिटी एक बहुत ही शक्तिशाली विशेषता है, आप विशेष उपयोग के मामलों के लिए अपना खुद का एक्सटेंशन बना सकते हैं और इसे अपने उत्पादन डेटाबेस में उपयोग कर सकते हैं। कई PostgreSQL समुदाय समर्थित एक्सटेंशन हैं जैसे hstore, postgres_fdw, dblink आदि और तृतीय पक्ष एक्सटेंशन जैसे Orafce, सभी का उपयोग विशेष उपयोग के मामलों के लिए किया जाता है।