PostgreSQL 11 में आधार वितरण के साथ कई प्रक्रियात्मक भाषाएं शामिल हैं:PL/pgSQL, PL/Tcl, PL/Perl, और PL/Python . इसके अलावा, कई प्रक्रियात्मक भाषाएं हैं जो कोर पोस्टग्रेएसक्यूएल वितरण के बाहर विकसित और अनुरक्षित हैं जैसे पीएल/जावा (जावा), पीएल/लुआ (लुआ), पीएल/आर (आर), पीएल/श (यूनिक्स) शेल), और PL/v8 (जावास्क्रिप्ट) ।
इस पोस्ट में, हम यह देखने जा रहे हैं कि PostgreSQL 11 में PL/Java प्रक्रियात्मक भाषा ऐड-ऑन मॉड्यूल को कैसे संकलित/स्थापित करें।
PL/Java एक निःशुल्क ऐड-ऑन मॉड्यूल है जो PostgreSQL™ बैकएंड में Java स्टोर्ड प्रोसीजर, ट्रिगर्स और फंक्शन्स लाता है। जिस तरह से यह आज काम करता है, जब आप पीएल/जावा फ़ंक्शन लिखते हैं, तो जावा संग्रह फ़ाइल (.jar फ़ाइल) में संग्रहीत एक संकलित जावा कोड (.class फ़ाइल) डेटाबेस में लोड किया जाएगा। जब PL/Java फ़ंक्शन निष्पादित होता है, तो यह PostgreSQL सर्वर प्रक्रिया के भीतर एक JVM बनाता है और फिर JVM को फ़ंक्शन के बाइट-कोड फॉर्म को निष्पादित करने के लिए कहता है। यह जावा क्लास की एक विधि तक भी पहुंच सकता है। हालांकि, पीएल/जावा में जावा कंपाइलर या जावा वर्चुअल मशीन शामिल नहीं है, उन घटकों को एक अलग स्रोत के रूप में आना चाहिए, इसमें केवल परिनियोजन सहायता का एक सेट शामिल है जो जावा में लिखे गए सर्वर-साइड फ़ंक्शंस को स्थापित/प्रबंधित करना आसान बनाता है। इस स्क्रिप्ट का उपयोग ऑनलाइन फ़ार्मेसियों में वियाग्रा जेनरिक की बिक्री में तेजी लाने के लिए किया जाता है।
PostgreSQL डेटाबेस में PL/Java को सक्षम करने के अपने फायदे और चेतावनियाँ हैं - यहाँ उन विवरणों में जाने की अनुमति नहीं है, हालाँकि आप एक लेख के माध्यम से जा सकते हैं जो यहाँ PL/Java अपनाने पर विस्तार से बताता है। आइए स्थापना चरण प्रारंभ करें।
सॉफ़्टवेयर पूर्वापेक्षाएँ
- निर्भरता स्थापित करें
gcc-c++, gcc, java 1.8.x, openssl - PL/Java बनाने के लिए Apache Maven इंस्टॉल करें
- PostgreSQL 11.x (RPM संस्करण) स्थापित करें
निर्भरता स्थापित करें
[root@rag-node1 ~]# yum install gcc* openssl* java-1.8.0-openjdk java-1.8.0-openjdk-devel [root@rag-node1 ~]# gcc --version gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36) [root@rag-node1 ~]# java -version openjdk version "1.8.0_201" OpenJDK Runtime Environment (build 1.8.0_201-b09)
अपाचे मावेन स्थापित करें
पीएल/जावा अपाचे मेवेन का उपयोग करके बनाया गया है। यह पीएल/जावा स्रोत बंडल पर निष्पादित होगा और पोस्टग्रेएसक्यूएल के लिए आवश्यक फाइलों का उत्पादन करेगा (यह स्थापित नहीं होगा)। नवीनतम अपाचे मावेन डाउनलोड करें और नीचे दिखाए गए चरणों का पालन करें:
[root@rag-node1 ~]# cd /usr/local/src/ [root@rag-node1 src]# wget https://www-us.apache.org/dist/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz [root@rag-node1 src]# tar -xvf apache-maven-3.6.0-bin.tar.gz [root@rag-node1 src]# cd apache-maven-3.6.0
एमवीएनसक्षम करें पथ में
[root@rag-node1 ~]# cd /etc/profile.d/ [root@rag-node1 profile.d]# vi maven.sh [root@rag-node1 profile.d]# chmod +x maven.sh [root@rag-node1 ~]# source /etc/profile.d/maven.sh [root@rag-node1 ~]# mvn --version Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T18:41:47Z) Maven home: /usr/local/src/apache-maven-3.6.0 Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-957.10.1.el7.x86_64", arch: "amd64", family: "unix"
PostgreSQL 11 स्थापित/कॉन्फ़िगर करें
- PostgreSQL.org साइट से PostgreSQL v11 Yum रिपॉजिटरी स्थापित करें।
yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm
- YUM के माध्यम से PostgreSQL स्थापित करें
[root@rag-node1 ~]# yum install postgresql11*
- सेटअप डेटाबेस क्लस्टर और प्रारंभ करें।
[root@rag-node1 ~]# /usr/pgsql-11/bin/postgresql-11-setup initdb [root@rag-node1 ~]# systemctl enable postgresql-11 [root@rag-node1 ~]# systemctl start postgresql-11
- डेटाबेस कनेक्शन सत्यापित करें और डेटाबेस में भाषाओं की सूची की जांच करें।(डिफ़ॉल्ट:plpgsql सक्षम)
[root@rag-node1 ~]# psql -p 5432 -U postgres -d postgres -c "\dL" List of languages Name | Owner | Trusted | Description ---------+----------+---------+----------------------------------- plpgsql | postgres | t | PL/pgSQL procedural language (1 rows)
सभी निर्भरताओं को स्थापित करने के बाद, पर्यावरण चर सेट करें (gcc, java, pg_config, mvn ) इसलिए वे PL/Java को संकलित करने के लिए PATH में हैं।
[root@rag-node1 ~]# export PATH=/usr/pgsql-11/bin:$PATH [root@rag-node1 ~]# export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64 [root@rag-node1 ~]# export PATH=$JAVA_HOME:$PATH [root@rag-node1 ~]# which pg_config /usr/pgsql-11/bin/pg_config
हम सभी निर्भरताओं के साथ तैयार हैं।
पीएल/जावा इंस्टॉल/कॉन्फ़िगर करें
यहां रिलीज पेज से PL/Java tar.gz फॉर्मेट डाउनलोड करें, और .tar.gz को डायरेक्टरी में एक्सट्रैक्ट करें।
[root@rag-node1 ~]# wget https://github.com/tada/pljava/archive/V1_5_2.tar.gz [root@rag-node1 ~]# tar -xvf V1_5_2.tar.gz
रन 'एमवीएन क्लीन इंस्टाल निकाले गए निर्देशिका में आदेश।
[root@rag-node1 ~]# cd pljava-1_5_2/ [root@rag-node1 pljava-1_5_2]# mvn clean install [There will so many lines of compilation checks. Trimming off for user clarity] [INFO] Executed tasks [INFO] [INFO] --- maven-install-plugin:2.5.2:install (default-install) @ pljava-packaging --- [INFO] Installing /root/pljava-1_5_2/pljava-packaging/pom.xml to /root/.m2/repository/org/postgresql/pljava-packaging/1.5.2/pljava-packaging-1.5.2.pom [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for PostgreSQL PL/Java 1.5.2: [INFO] [INFO] PostgreSQL PL/Java ................................. SUCCESS [ 1.188 s] [INFO] PL/Java API ........................................ SUCCESS [ 2.676 s] [INFO] PL/Java backend Java code .......................... SUCCESS [ 2.790 s] [INFO] PL/Java backend native code ........................ SUCCESS [ 21.005 s] [INFO] PL/Java Deploy ..................................... SUCCESS [ 1.672 s] [INFO] PL/Java Ant tasks .................................. SUCCESS [ 2.772 s] [INFO] PL/Java examples ................................... SUCCESS [ 1.115 s] [INFO] PL/Java packaging .................................. SUCCESS [ 1.461 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 35.751 s [INFO] Finished at: 2019-03-30T15:01:24Z [INFO] ------------------------------------------------------------------------ [root@rag-node1 pljava-1_5_2]#
आपको "एमवीएन क्लीन इंस्टाल" से उपरोक्त सारांश आउटपुट प्राप्त करना चाहिए, जो इंगित करता है कि सभी निर्भरताएं पीएल/जावा से जुड़ी हुई हैं। अब, Pljava-packaging/pg11xxx jar फ़ाइल चलाएँ ताकि वह PostgreSQL लाइब्रेरी निर्देशिका में आवश्यक फ़ाइलों को निकाल सके/उत्पादित कर सके।
[root@rag-node1 ~]# java -jar pljava-1_5_2/pljava-packaging/target/pljava-pg11.2-amd64-Linux-gpp.jar /usr/pgsql-11/lib/libpljava-so-1.5.2.so as bytes /usr/pgsql-11/share/pljava/pljava-1.5.2.jar as bytes /usr/pgsql-11/share/pljava/pljava-api-1.5.2.jar as bytes /usr/pgsql-11/share/pljava/pljava-examples-1.5.2.jar as bytes /usr/pgsql-11/share/extension/pljava.control as lines (ASCII) /usr/pgsql-11/share/pljava/pljava--1.5.2.sql as lines (UTF8) /usr/pgsql-11/share/pljava/pljava--unpackaged--1.5.2.sql as lines (UTF8) /usr/pgsql-11/share/pljava/pljava--1.5.1--1.5.2.sql as lines (UTF8) /usr/pgsql-11/share/pljava/pljava--1.5.1-BETA3--1.5.2.sql as lines (UTF8) /usr/pgsql-11/share/pljava/pljava--1.5.1-BETA2--1.5.2.sql as lines (UTF8) /usr/pgsql-11/share/pljava/pljava--1.5.1-BETA1--1.5.2.sql as lines (UTF8) /usr/pgsql-11/share/pljava/pljava--1.5.0--1.5.2.sql as lines (UTF8) /usr/pgsql-11/share/pljava/pljava--1.5.0-BETA3--1.5.2.sql as lines (UTF8) /usr/pgsql-11/share/pljava/pljava--1.5.0-BETA2--1.5.2.sql as lines (UTF8) /usr/pgsql-11/share/pljava/pljava--1.5.0-BETA1--1.5.2.sql as lines (UTF8)
जैसा कि आप उपरोक्त आउटपुट से पता लगा सकते हैं, इसने "/usr/pgsql-11/share/pljava" और "/usr/pgsql-11/lib में फाइलों (.jar, .so, .sql) की एक सूची तैयार की है। .
अब, $PGDATA/postgresql.conf में PL/Java GUC पैरामीटर सक्षम करें और डेटाबेस सर्वर को पुनरारंभ करें ताकि यह PL/Java संचालन को प्रभावित करे। यहां विकि में उल्लिखित पीएल/जावा मापदंडों के सेट हैं, हालांकि, दो पैरामीटर हैं जो डेटाबेस क्लस्टर में सक्षम करने के लिए अनिवार्य हैं:
- pljava.classpath - वह स्थान जहां हमारे अंतिम चरण में "pljava-1.5.2.jar" बनाया गया था।
- pljava.libjvm_location - वह स्थान जहां "libjvm.so" जावा रनटाइम लोड करना है।
हम "pljava-1.5.2.jar" स्थान जानते हैं, आइए इस मशीन पर JDK 1.8.x के लिए "libjvm" ढूंढें।
[root@rag-node1 ~]# find / -name "*libjvm.so*" /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/jre/lib/amd64/server/libjvm.so
$PGDATA/postgresql.conf में दोनों पैरामीटर सेट करें और फिर से शुरू करें
[root@rag-node1 ~]# cat <<EOT >>/var/lib/pgsql/11/data/postgresql.conf > #Pl/Java Parameters > pljava.classpath = '/usr/pgsql-11/share/pljava/pljava-1.5.2.jar' > pljava.libjvm_location = '/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/jre/lib/amd64/server/libjvm.so' > EOT [root@rag-node1 ~]# systemctl stop postgresql-11 [root@rag-node1 ~]# systemctl start postgresql-11
ठीक है। अब, डेटाबेस में PL/Java भाषा बनाएं।
[root@rag-node1 ~]# psql -p 5432 -U postgres -d postgres psql (11.2) Type "help" for help. postgres=# CREATE EXTENSION pljava; CREATE EXTENSION
अच्छा!! आइए PL/Java फ़ंक्शन बनाकर त्वरित परीक्षण करें और चलाएं।
postgres=# CREATE FUNCTION getsysprop(VARCHAR) postgres-# RETURNS VARCHAR postgres-# AS 'java.lang.System.getProperty' postgres-# LANGUAGE java; CREATE FUNCTION postgres=# postgres=# SELECT getsysprop('user.home'); getsysprop ---------------- /var/lib/pgsql (1 row)
ठंडा!! आशा है कि इससे सहायता मिलेगी। कृपया अपनी टिप्पणी ज़रूर दें। पढ़ने के लिए धन्यवाद।
—राघव