PostgreSQL के आधिकारिक एक्सटेंशन मॉड्यूल्स
ServBay एक शक्तिशाली स्थानीय वेब विकास वातावरण है, जिसमें कई प्रकार के डेवलपर टूल्स एकीकृत हैं; इन्हीं में से एक है फीचर-रिच PostgreSQL डेटाबेस। PostgreSQL की ताकत उसके कोर फ़ीचर्स के साथ-साथ उसके विशाल आधिकारिक एक्सटेंशन ईकोसिस्टम में भी है। ServBay में PostgreSQL के अधिकांश आधिकारिक एक्सटेंशन प्री-इंस्टॉल आते हैं, जिससे डेवेलपर्स इन्हें स्थानीय वातावरण में सीधे सक्रिय करके इस्तेमाल कर सकते हैं। इससे डेटाबेस की क्षमताएं बडी तरह से बढ़ती हैं और विभिन्न जटिल एप्लिकेशन ज़रूरतों को पूरा करना आसान हो जाता है।
यह लेख PostgreSQL के कुछ सामान्यतः प्रयोग होने वाले आधिकारिक एक्सटेंशनों का परिचय देगा और बतायेगा कि ServBay में इन्हें कैसे इंस्टॉल और उपयोग किया जा सकता है।
लोकप्रिय एक्सटेंशन मॉड्यूल्स का अवलोकन
PostgreSQL आधिकारिक रूप से बहुत से एक्सटेंशन मॉड्यूल्स प्रदान करता है, जिनमें परफॉर्मेंस मॉनिटरिंग से लेकर डेटा टाइप्स, फुल-टेक्स्ट सर्च व अन्य कई क्षमताएँ शामिल हैं। नीचे कुछ ऐसे मुख्य एक्सटेंशन मॉड्यूल्स का परिचय है, जिन्हें डेवेलपर्स रोज़मर्रा के काम में अक्सर उपयोग करते हैं:
1. pg_stat_statements
- फ़ीचर: सर्वर द्वारा रन की गयी सभी SQL स्टेटमेंट्स के सांख्यिकी डेटा (जैसे कॉल की संख्या, कुल एक्जीक्यूशन टाइम, प्रोसेस्ड पंक्तियाँ आदि) एकत्रित कर रिकॉर्ड करता है।
- उपयोग: डेटाबेस एडमिन और डेवेलपर्स को क्वेरी की परफॉर्मेंस का विश्लेषण करने, धीमी क्वेरी पहचानने और बॉटलनेक्स ढूँढने में सहायक।
- इंस्टॉलेशन कमांड:sqlनोट: इंस्टॉलेशन के बाद,
CREATE EXTENSION pg_stat_statements;
1postgresql.conf
मेंshared_preload_libraries = 'pg_stat_statements'
सेट कर के और PostgreSQL सेवा को फिर से शुरू करके ही यह एक्सटेंशन पूर्ण रूप से सक्रिय होता है व डेटा कलेक्ट करता है। ServBay में कॉन्फ़िगरेशन को बदलने के लिए आसान तरीका दिया गया है।
2. pg_trgm
- फ़ीचर: ट्राइग्रैम्स (तीन अक्षरों के समूह) पर आधारित पाठ्य-समानता मापन कार्य और इंडेक्स समर्थन प्रदान करता है।
- उपयोग: फजी मैचिंग, सिमिलैरिटी सर्च और फुल-टेक्स्ट सर्च इम्प्लीमेंट करने के लिए आदर्श, खासकर जब वर्तनी में गलतियाँ होती हों या शब्दों के रूप अलग हों।
- इंस्टॉलेशन कमांड:sql
CREATE EXTENSION pg_trgm;
1
3. hstore
- फ़ीचर: की-वैल्यू पेयर संग्रह को एक ही PostgreSQL वैल्यू में स्टोर करने के लिए एक डेटा टाइप देता है।
- उपयोग: उन स्थितियों में जहाँ डायनामिक प्रॉपर्टीज़, अनस्ट्रक्चर्ड या सेमी-स्ट्रक्चर्ड डेटा स्टोर करना हो—जैसे कॉन्फिग डेटा/मेटाडेटा/यूजर प्रेफरेंस—और टेबल का स्ट्रक्चर पहले से तय न किया हो।
- इंस्टॉलेशन कमांड:sql
CREATE EXTENSION hstore;
1
4. citext
- फ़ीचर: केस-इंसेंसिटिव टेक्स्ट स्ट्रिंग डेटा टाइप देता है।
- उपयोग: जब केस-इंसेंसिटिव तुलना चाहिए (जैसे यूज़रनेम, ईमेल, टैग आदि), ताकि हर क्वेरी में
LOWER()
फंक्शन के प्रयोग की आवश्यकता न पड़े, एप्लिकेशन लॉजिक आसान बन जाता है। - इंस्टॉलेशन कमांड:sql
CREATE EXTENSION citext;
1
5. uuid-ossp
- फ़ीचर: यूनिवर्सल यूनिक आईडी (UUID) बनाने के कई फ़ंक्शन्स देता है; इनमें standard version 1, 3, 4, 5 शामिल हैं।
- उपयोग: यूनिक आईडी ज़रूरी जगहों (जैसे प्राइमरी की, सेशन ID, डिस्ट्रीब्यूटेड सिस्टम्स आदि) में।
- इंस्टॉलेशन कमांड:sqlनोट: एक्सटेंशन नाम में हाइफ़न है, इसलिए कमांड में डबल कोट्स में लिखें।
CREATE EXTENSION "uuid-ossp";
1
6. intarray
- फ़ीचर: पूर्णांक एरेज़ (integer arrays) के लिए अतिरिक्त फ़ंक्शन और ऑपरेटर।
- उपयोग: जब integer array पर सीधे डेटाबेस स्तर पर सेट ऑपरेशन्स (intersect, union), contain चेक, सॉर्टिंग आदि आवश्यकता हो।
- इंस्टॉलेशन कमांड:sql
CREATE EXTENSION intarray;
1
7. btree_gin
- फ़ीचर: B-tree डेटा टाइप्स (जैसे integer, text, date आदि) पर GIN (Generalized Inverted Index) इंडेक्स सपोर्ट देता है।
- उपयोग: GIN इंडेक्स मुल्यवान हैं जब एक फील्ड में विभिन्न वैल्यूज़ होती हों (जैसे एरेज़, hstore, tsvector)।
btree_gin
B-tree इनेबल्ड एलिमेंट्स पर भी GIN इंडेक्सिंग का लाभ देता है। - इंस्टॉलेशन कमांड:sql
CREATE EXTENSION btree_gin;
1
8. btree_gist
- फ़ीचर: B-tree डेटा टाइप्स पर GiST (Generalized Search Tree) इंडेक्सिंग का सपोर्ट।
- उपयोग: GiST एक सामान्य इंडेक्स संरचना है; यह एक्सटेंशन विविध क्वेरी प्रकार (जैसे रेंज क्वेरी, contain क्वरी आदि) या मल्टी-कॉलम इंडेक्स बनाने के लिए बहुत उपयोगी।
- इंस्टॉलेशन कमांड:sql
CREATE EXTENSION btree_gist;
1
9. cube
- फ़ीचर: मल्टी-डायमेंशनल क्यूब या पॉइंट के लिए एक डेटा टाइप व सम्बंधित ऑपरेटर/फंक्शन्स देता है।
- उपयोग: मल्टीडाइमेंशनल डेटा, बेसिक स्पेशियल डेटा (2D/3D), डेटा वेयरहाउस एनालिसिस या साइंटिफिक कैलकुलेशन के लिए।
- इंस्टॉलेशन कमांड:sql
CREATE EXTENSION cube;
1
10. fuzzystrmatch
- फ़ीचर: विभिन्न फ़ंक्शन्स, जो स्ट्रिंग्स की समानता/फासला (जैसे Levenshtein दूरी, Soundex, Metaphone आदि) ज्ञात करने के लिए हैं।
- उपयोग: फजी स्ट्रिंग मैचिंग, वर्तनी जांच, डेटा क्लीनिंग और डुप्लिकेशन हटाने के लिए।
- इंस्टॉलेशन कमांड:sql
CREATE EXTENSION fuzzystrmatch;
1
11. plpgsql
- फ़ीचर: PostgreSQL की प्रमुख प्रासेसड्यूरल लैंग्वेज जिससे स्टोर्ड प्रॉसीज़र, ट्रिगर फंक्शन व अनाम ब्लॉग्स लिखे जा सकते हैं।
- उपयोग: डेटाबेस सर्वर-साइड पर जटिल बिजनेस लॉजिक, ऑटोमेशन या डेटा प्रोसेसिंग के लिए। आम तौर पर यह डिफ़ॉल्ट इन्सटॉल होती है, लेकिन एक्सटेंशन के रूप में फिर भी ऐड या कन्फर्म की जा सकती है।
- इंस्टॉलेशन कमांड:sql
CREATE EXTENSION plpgsql;
1
12. tablefunc
- फ़ीचर: पूरा टेबल डेटा ट्रान्सफॉर्म या प्रोसेस करने के लिए कई फ़ंक्शन्स, जिनमें
crosstab
सबसे प्रसिद्ध है। - उपयोग: क्रॉस-टैब (डाटा पिवटिंग) क्वेरीज के लिए, जहाँ किसी कॉलम के यूनिक वैल्यूज को कॉलम्स में बदलना हो—नि:संदेह, रिपोर्टिंग व एनालिसिस के लिए बढ़िया।
- इंस्टॉलेशन कमांड:sql
CREATE EXTENSION tablefunc;
1
13. dblink
- फ़ीचर: किसी PostgreSQL डेटाबेस से दूसरे में कनेक्शन और क्वेरी एक्जीक्यूट करने की सुविधा।
- उपयोग: अलग-अलग डेटाबेस के बीच सीधे डेटा क्वेरी या माइग्रेशन के लिए, एप्लिकेशन स्तर पर क्रॉस-डाटाबेस लॉजिक की जरूरत नहीं।
- इंस्टॉलेशन कमांड:sql
CREATE EXTENSION dblink;
1
14. postgres_fdw
- फ़ीचर: एक फॉरेन डेटा व्रैपर, जो एक्सटर्नल PostgreSQL डेटाबेस की टेबल्स को लोकल टेबल्स की तरह क्वेरी करने में सक्षम बनाता है।
- उपयोग: क्रॉस-डेटाबेस डेटा इंटीग्रेशन व ज्वाइंड क्वेरीज के लिए—
dblink
से अधिक शक्तिशाली और लचीला। - इंस्टॉलेशन कमांड:sql
CREATE EXTENSION postgres_fdw;
1
15. pgcrypto
- फ़ीचर: अनेक प्रकार की एन्क्रिप्शन और डिक्रिप्शन फ़ंक्शन्स; हैशिंग, सिमेट्रिक व पब्लिक-की एनक्रिप्शन आदि शामिल।
- उपयोग: डेटाबेस स्तर पर डेटा एन्क्रिप्शन, पासवर्ड हैशिंग, डिजिटल सिग्नेचर आदि सुरक्षा जरूरतों के लिए।
- इंस्टॉलेशन कमांड:sql
CREATE EXTENSION pgcrypto;
1
ये मात्र कुछ PostgreSQL के आधिकारिक एक्सटेंशन हैं, जो ServBay में मिलते हैं। ServBay अधिकतम आधिकारिक PostgreSQL एक्सटेंशन शामिल करने का प्रयास करता है, ताकि विकास संबंधी हर ज़रूरत परी हो सके।
ServBay में PostgreSQL एक्सटेंशन मॉड्यूल कैसे इंस्टॉल व उपयोग करें
ServBay वातावरण में PostgreSQL एक्सटेंशन इंस्टॉल व उपयोग करना बेहद सीधा है। एक्सटेंशन किसी विशिष्ट डेटाबेस में इंस्टॉल होते हैं, अर्थात हर उस डेटाबेस में जिन्हें एक्सटेंशन की आवश्यकता हो, अलग से उसे सक्रिय करना होगा।
पूर्वापेक्षाएँ:
- सुनिश्चित करें कि ServBay रन कर रहा है और PostgreSQL सर्वर चालू है।
प्रक्रिया:
लक्ष्य PostgreSQL डेटाबेस से कनेक्ट करें: अपना टर्मिनल खोलें (जैसे macOS पर Terminal या iTerm2) व
psql
कमांड-लाइन टूल से उस डेटाबेस से कनेक्ट करें जिसमें आपको एक्सटेंशन इंस्टॉल करना है। डिफ़ॉल्ट रूप से ServBay में PostgreSQL का यूज़रनेमpostgres
और डिफ़ॉल्ट डेटाबेस का नाम भीpostgres
है।bashpsql -U your_username -d your_database
1उदाहरण, डिफ़ॉल्ट
postgres
डेटाबेस से कनेक्ट करने का तरीका:bashpsql -U postgres -d postgres
1अगर पासवर्ड मांगे तो वह पासवर्ड डालें जो आपने ServBay में PostgreSQL के root/postgres यूज़र के लिए सेट किया है।
एक्सटेंशन इंस्टॉल करें: सफल कनेक्शन के बाद, आप
psql
के अंदर आ जाते हैं। आवश्यक एक्सटेंशन के लिएCREATE EXTENSION
कमांड चलाएँ।module_name
को इंस्टॉल करने वाले एक्सटेंशन के नाम से बदलें।sqlCREATE EXTENSION module_name;
1उदाहरण,
pg_trgm
एक्सटेंशन इंस्टॉल करने का कमांड:sqlCREATE EXTENSION pg_trgm;
1इंस्टॉलेशन जांचें: इंस्टॉलेशन के बाद,
\dx
कमांड चला कर यह देख सकते हैं कि संबंधित डेटाबेस में कौन-कौन से एक्सटेंशन इंस्टॉल्ड हैं।sql\dx
1
उदाहरण: pg_trgm
एक्सटेंशन इनेबल करना
नीचे psql
में postgres
डेटाबेस से कनेक्ट कर के pg_trgm
एक्सटेंशन सक्रिय करने का संपूर्ण इंटरैक्टिव उदाहरण है:
sql
# टर्मिनल में, डेटाबेस से कनेक्ट करने का कमांड
psql -U postgres -d postgres
# सफल कनेक्शन पर psql का प्रांप्ट
psql (16.3 (ServBay))
Type "help" for help.
postgres=# -- पहले से इंस्टॉल एक्सटेंशन देखें (सिर्फ plpgsql और pgcrypto दिखाई दे सकते हैं)
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
----------+---------+------------+------------------------------
pgcrypto | 1.3 | public | cryptographic functions
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 rows)
postgres=# -- pg_trgm एक्सटेंशन इंस्टॉल करें
postgres=# CREATE EXTENSION pg_trgm;
CREATE EXTENSION
postgres=# -- दुबारा \dx से जाँचें, pg_trgm जुड़ गया है
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
----------+---------+------------+-------------------------------------------------------------------
pg_trgm | 1.6 | public | text similarity measurement and index searching based on trigrams
pgcrypto | 1.3 | public | cryptographic functions
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(3 rows)
postgres=# -- सफलता! अब pg_trgm से सम्बंधित फ़ंक्शन्स व ऑपरेटर इस डेटाबेस में उपल्ब्ध हैं।
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
ServBay में उपलब्ध PostgreSQL एक्सटेंशन सूची कैसे देखें
एक्सटेंशन इंस्टॉल करने से पहले, यह जानना उपयोगी है कि ServBay में PostgreSQL के आपके संस्करण के साथ कौन-कौन से एक्सटेंशन उपलब्ध हैं—इससे कई संभावित उपयोगी फीचर्स मिल सकते हैं।
किसी भी PostgreSQL डेटाबेस से कनेक्ट हो कर नीचे का SQL कमांड चलाएँ:
sql
SELECT * FROM pg_available_extensions ORDER BY name;
1
इस क्वेरी से एक टेबल मिलता है, जिसमें ServBay के PostgreSQL संस्करण द्वारा समर्थित सभी एक्सटेंशन मॉड्यूल्स के नाम, डिफ़ॉल्ट वर्शन, इंस्टॉल स्थिति और विवरण दिखाई देते हैं।
एक आम लौटने वाला रिज़ल्ट इस प्रकार हो सकता है (लिस्ट लंबी है, और खास एक्सटेंशन्स/वर्जन आपकी ServBay कॉन्फ़िगरेशन पर निर्भर करते हैं):
sql
name | default_version | installed_version | comment
------------------------------+-----------------+-------------------+---------------------------------------------------------------------------------------------------------------------
address_standardizer | 3.4.2 | | Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.
address_standardizer_data_us | 3.4.2 | | Address Standardizer US dataset example
adminpack | 2.1 | | administrative functions for PostgreSQL
amcheck | 1.3 | | functions for verifying relation integrity
autoinc | 1.0 | | functions for autoincrementing fields
bloom | 1.0 | | bloom access method - signature file based index
btree_gin | 1.3 | | support for indexing common datatypes in GIN
btree_gist | 1.7 | | support for indexing common datatypes in GiST
citext | 1.6 | | data type for case-insensitive character strings
cube | 1.5 | | data type for multidimensional cubes
dblink | 1.2 | | connect to other PostgreSQL databases from within a database
dict_int | 1.0 | | text search dictionary template for integers
dict_xsyn | 1.0 | | text search dictionary template for extended synonym processing
earthdistance | 1.1 | | calculate great-circle distances on the surface of the Earth
file_fdw | 1.0 | | foreign-data wrapper for flat file access
fuzzystrmatch | 1.2 | | determine similarities and distance between strings
hstore | 1.8 | | data type for storing sets of (key, value) pairs
insert_username | 1.0 | | functions for tracking who changed a table
intagg | 1.1 | | integer aggregator and enumerator (obsolete)
intarray | 1.5 | | functions, operators, and index support for 1-D arrays of integers
isn | 1.2 | | data types for international product numbering standards
lo | 1.1 | | Large Object maintenance
ltree | 1.2 | | data type for hierarchical tree-like structures
moddatetime | 1.0 | | functions for tracking last modification time
old_snapshot | 1.0 | | utilities in support of old_snapshot_threshold
pageinspect | 1.12 | | inspect the contents of database pages at a low level
pg_buffercache | 1.4 | | examine the shared buffer cache
pg_freespacemap | 1.2 | | examine the free space map (FSM)
pg_jieba | 1.1.1 | | a parser for full-text search of Chinese
pg_prewarm | 1.2 | | prewarm relation data
pg_stat_statements | 1.10 | | track planning and execution statistics of all SQL statements executed
pg_surgery | 1.0 | | extension to perform surgery on a damaged relation
pg_trgm | 1.6 | 1.6 | text similarity measurement and index searching based on trigrams
pg_visibility | 1.2 | | examine the visibility map (VM) and page-level visibility info
pg_walinspect | 1.1 | | functions to inspect contents of PostgreSQL Write-Ahead Log
pgcrypto | 1.3 | 1.3 | cryptographic functions
pgrouting | 3.6.2 | | pgRouting Extension
pgrowlocks | 1.2 | | show row-level locking information
pgstattuple | 1.5 | | show tuple-level statistics
plpgsql | 1.0 | 1.0 | PL/pgSQL procedural language
postgis | 3.4.2 | | PostGIS geometry and geography spatial types and functions
postgis_sfcgal | 3.4.2 | | PostGIS SFCGAL functions
postgis_tiger_geocoder | 3.4.2 | | PostGIS tiger geocoder and reverse geocoder
postgres_fdw | 1.1 | | foreign-data wrapper for remote PostgreSQL servers
refint | 1.0 | | functions for implementing referential integrity (obsolete)
seg | 1.4 | | data type for representing line segments or floating-point intervals
sslinfo | 1.2 | | information about SSL certificates
tablefunc | 1.0 | | functions that manipulate whole tables, including crosstab
tcn | 1.0 | | Triggered change notifications
tsm_system_rows | 1.0 | | TABLESAMPLE method which accepts number of rows as a limit
tsm_system_time | 1.0 | | TABLESAMPLE method which accepts time in milliseconds as a limit
unaccent | 1.1 | | text search dictionary that removes accents
vector | 0.7.0 | | vector data type and ivfflat and hnsw access methods
xml2 | 1.1 | | XPath querying and XSLT
zhparser | 2.2 | | a parser for full-text search of Chinese
(55 rows)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
कृपया ध्यान दें: ऊपर दी गई सूची एक उदाहरण है, आपके ServBay के PostgreSQL संस्करण में वास्तविक लिस्ट और वर्ज़न भिन्न हो सकते हैं।
सारांश
ServBay में पहले से उपलब्ध PostgreSQL एक्सटेंशनों की बहुलता डेवलपर्स को अपने स्थानीय विकास वातावरण में शक्तिशाली डेटाबेस फीचर्स तेजी और सरलता से प्रयोग का अवसर देती है। डेवलपर्स को किसी अतिरिक्त संकलन या जटिल इंस्टॉलेशन की आवश्यकता नहीं, केवल साधारण SQL कमांड द्वारा अपने डेटाबेस में ज़रूरी एक्सटेंशन सक्षम करें—और पूरा ध्यान अपनी एप्लिकेशन पर दें, कार्यक्षमता और दक्षता दोनों बढ़ाएं। इन एक्सटेंशनों से आप अपने प्रोजेक्ट्स में उच्च स्तरीय डेटाबेस क्षमताएं जैसे परफॉर्मेंस एनालिसिस, फुल-टेक्स्ट सर्च, डेटा सुरक्षा आदि आसानी से ऐड कर सकते हैं।