sql >> Database teknologi >  >> RDS >> PostgreSQL

Installer PL/Java 1.5.2 i PostgreSQL 11

PostgreSQL 11 indeholder flere proceduresprog med basisfordelingen:PL/pgSQL, PL/Tcl, PL/Perl og PL/Python . Derudover er der en række proceduresprog, der er udviklet og vedligeholdt uden for kernepostgreSQL-distributionen som PL/Java (Java), PL/Lua (Lua), PL/R (R), PL/sh (Unix). Shell) og PL/v8 (JavaScript) .

I dette indlæg skal vi se, hvordan man kompilerer/installerer PL/Java proceduresprogtillægsmodul i PostgreSQL 11.

PL/Java er et gratis tilføjelsesmodul, der bringer Java Stored Procedures, Triggers og Functions til PostgreSQL™-backend. Sådan som det fungerer i dag, når du skriver en PL/Java-funktion, indlæses en kompileret Java-kode(.class-fil) gemt i Java-arkivfil(.jar-fil) i databasen. Når PL/Java-funktionen udføres, opretter den en JVM i PostgreSQL-serverprocessen og beder derefter JVM'en om at udføre funktionens bytekodeform. Det kan også få adgang til en metode i en Java-klasse. PL/Java inkluderer dog ikke en Java-compiler eller en Java Virtual Machine, disse komponenter bør komme som separate kilder, det inkluderer blot et sæt implementeringshjælpemidler, der gør det nemt at installere/administrere serverside-funktioner skrevet i Java. Dette script bruges til at fremskynde salget af Viagra generiske lægemidler på onlineapoteker.

Aktivering af PL/Java i PostgreSQL-databasen har sine egne fordele og advarsler - lad os ikke komme ind på disse detaljer her, men du kan gennemgå en artikel, der forklarer detaljeret om PL/Java-adoption her. Lad os starte installationstrinnene.

Softwareforudsætninger

  • Installer afhængigheder
    gcc-c++, gcc, java 1.8.x, openssl
  • Installer Apache Maven for at bygge PL/Java
  • Installer PostgreSQL 11.x (RPM-version)

Installationsafhængigheder

[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)


Installer Apache Maven

PL/Java er bygget ved hjælp af Apache Maven. Det vil køre på PL/Java-kildepakken og producere filer, der kræves til PostgreSQL (det vil ikke installere). Download den seneste Apache Maven og følg trinene som vist nedenfor:

[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

Aktiver mvn i STIEN

[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"


Installer/konfigurer PostgreSQL 11

  1. Installer PostgreSQL v11 Yum Repository fra PostgreSQL.org-webstedet.
    yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm
  2. Installer PostgreSQL via YUM
    [root@rag-node1 ~]# yum install postgresql11*
  3. Opsæt databaseklynge og start.
    [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
  4. Bekræft databaseforbindelsen og tjek listen over sprog i databasen.(standard:plpgsql aktiveret)
    [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)

Efter installation af alle afhængigheder skal du indstille miljøvariablerne (gcc, java, pg_config, mvn ), så de er i PATH for at kompilere PL/Java.

[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

Vi er alle sammen med afhængigheder.

Installer/konfigurer PL/Java

Download PL/Java tar.gz-format fra udgivelsessiden her, og udtræk .tar.gz til mappen.

[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

Kør ‘mvn clean install ' kommando i udtrukket mappe.

[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]#

Du bør få ovenstående oversigtsoutput fra "mvn clean install", som indikerer, at alle afhængigheder er tilsluttet PL/Java. Kør nu Pljava-packaging/pg11xxx jar-fil, så den vil udpakke/producere nødvendige filer i PostgreSQL Library-biblioteket.

[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)

Som du kan se ud fra ovenstående output, har den produceret en liste over filer (.jar, .so, .sql) i "/usr/pgsql-11/share/pljava" og "/usr/pgsql-11/lib ”.

Lad os nu aktivere PL/Java GUC-parametre i $PGDATA/postgresql.conf og genstarte databaseserveren, så det vil påvirke PL/Java-driften. Der er et sæt PL/Java-parametre nævnt i wiki her, men der er to parametre, som er obligatoriske for at aktivere i databaseklyngen:

    • pljava.classpath – Sted, hvor "pljava-1.5.2.jar" blev oprettet i vores sidste trin.
    • pljava.libjvm_location – Sted, hvor “libjvm.so” for at indlæse Java RunTime.

Vi kender "pljava-1.5.2.jar"-placeringen, lad os finde "libjvm" for JDK 1.8.x på denne maskine.

[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

Lad os indstille begge parametre i $PGDATA/postgresql.conf og genstarte

[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

OKAY. Opret nu PL/Java-sprog i databasen.

[root@rag-node1 ~]# psql -p 5432 -U postgres -d postgres
psql (11.2)
Type "help" for help.

postgres=# CREATE EXTENSION pljava;
CREATE EXTENSION

Pæn!! Lad os lave en hurtig test ved at oprette PL/Java-funktion og køre.

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)

Fedt nok!! Håber det hjælper. Du er velkommen til at efterlade kommentarer. Tak fordi du læste med.

Raghav


  1. Indstil tegnsættet og samlingen af ​​en database i MariaDB

  2. 2 måder at kontrollere kompatibilitetsniveauet i Oracle (SQLcl &SQL*Plus)

  3. Hvordan gemmer man NULL-værdier i datetime-felter i MySQL?

  4. Kom godt i gang med Oracle LiveSQL