PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Инсталирайте PL/Java 1.5.2 в PostgreSQL 11

PostgreSQL 11 включва няколко процедурни езика с базова дистрибуция:PL/pgSQL, PL/Tcl, PL/Perl и PL/Python . В допълнение, има редица процедурни езици, които се разработват и поддържат извън основното PostgreSQL дистрибуция като PL/Java (Java), PL/Lua (Lua), PL/R (R), PL/sh (Unix Shell) и PL/v8 (JavaScript) .

В тази публикация ще видим как да компилираме/инсталираме PL/Java модул за добавяне на процедурен език в PostgreSQL 11.

PL/Java е безплатен допълнителен модул, който носи Java Съхранени процедури, тригери и функции към бекенда на PostgreSQL™. По начина, по който работи днес, когато пишете PL/Java функция, компилиран Java код (.class файл), съхранен в Java архивен файл (.jar файл), ще бъде зареден в базата данни. Когато функцията PL/Java се изпълни, тя създава JVM в рамките на сървърния процес на PostgreSQL и след това моли JVM да изпълни формата на функцията с байт код. Може също да има достъп до метод от Java клас. Въпреки това, PL/Java не включва компилатор на Java или виртуална машина на Java, тези компоненти трябва да идват като отделни източници, просто включва набор от помощни средства за внедряване, които улесняват инсталирането/управлението на функции от страна на сървъра, написани на Java. Този скрипт се използва за ускоряване на продажбите на генерични лекарства Виагра в онлайн аптеките.

Активирането на PL/Java в базата данни на PostgreSQL има своите предимства и предупреждения – нека не навлизаме в тези подробности тук, но можете да прегледате статия, която обяснява подробно приемането на PL/Java тук. Нека започнем стъпките за инсталиране.

Софтуерни предпоставки

  • Инсталиране на зависимости
    gcc-c++, gcc, java 1.8.x, openssl
  • Инсталирайте Apache Maven за изграждане на PL/Java
  • Инсталирайте PostgreSQL 11.x (RPM версия)

Инсталационни зависимости

[root@rag-node1 ~]# yum инсталирайте gcc* openssl* java-1.8.0-openjdk java-1.8.0-openjdk-devel[root@rag-node1 ~]# gcc --versiongcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)[root@rag-node1 ~]# java -versionopenjdk версия "1.8.0_201"OpenJDK Runtime Environment (build 1.8.0_201-b09)


Инсталирайте Apache Maven

PL/Java е изграден с помощта на Apache Maven. Той ще се изпълнява в пакета PL/Java източник и ще произвежда файлове, необходими за PostgreSQL (няма да се инсталира). Изтеглете най-новия Apache Maven и следвайте стъпките, както е показано по-долу:

[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

Активирайте mvn в ПЪТЯ

[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 ~]# източник /etc/profile.d/maven.sh[root@rag-node1 ~]# mvn --versionApache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3:1-2; 47Z) Начало на Maven:/usr/local/src/apache-maven-3.6.0 Версия на Java:1.8.0_201, доставчик:Oracle Corporation, време на изпълнение:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201 .b09-2.el7_6.x86_64/jreDefault локал:en_US, кодиране на платформата:UTF-8OS име:"linux", версия:"3.10.0-957.10.1.el7.x86_64", arch:"amd64", семейство:"unix"


Инсталиране/конфигуриране на PostgreSQL 11

  1. Инсталирайте PostgreSQL v11 Yum Repository от сайта PostgreSQL.org.
    yum инсталирайте https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11 -2.noarch.rpm
  2. Инсталирайте PostgreSQL чрез YUM
    [root@rag-node1 ~]# yum инсталирайте postgresql11*
  3. Настройте клъстер на база данни и стартирайте.
    [root@rag-node1 ~]# /usr/pgsql-11/bin/postgresql-11-setup initdb[root@rag-node1 ~]# systemctl активиране на postgresql-11 [root@rag-node1 ~]# systemctl стартиране postgresql-11
  4. Проверете връзката с базата данни и проверете списъка с езици в базата данни. (по подразбиране:plpgsql е активиран)
    [root@rag-node1 ~]# psql -p 5432 -U postgres -d postgres -c "\dL " Списък с езици Име | Собственик | Доверен | Описание---------+----------+--------+---------- ----------------- plpgsql | postgres | t | Процедурен език PL/pgSQL (1 ред)

След като инсталирате всички зависимости, задайте променливите на средата (gcc, java, pg_config, mvn ), така че те са в PATH, за да компилират PL/Java.

[root@rag-node1 ~]# експорт PATH=/usr/pgsql-11/bin:$PATH[root@rag-node1 ~]# експорт 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 ~]# който pg_config/usr/pgsql-11/bin /pg_config

Всички сме настроени със зависимости.

Инсталиране/конфигуриране на PL/Java

Изтеглете 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 

Изпълнете „mvn clean install команда ‘ в извлечената директория.

[root@rag-node1 ~]# cd pljava-1_5_2/[root@rag-node1 pljava-1_5_2]# mvn чиста инсталация[Ще има толкова много редове за компилационни проверки. Изрязване за яснота на потребителя][ИНФО] Изпълнени задачи[ИНФО][ИНФО] --- maven-install-plugin:2.5.2:install (инсталиране по подразбиране) @ pljava-packaging ---[ИНФО] Инсталиране /root/ pljava-1_5_2/pljava-packaging/pom.xml към /root/.m2/repository/org/postgresql/pljava-packaging/1.5.2/pljava-packaging-1.5.2.pom[ИНФО] ------ -------------------------------------------------- ----------------[ИНФО] Резюме на Reactor за PostgreSQL PL/Java 1.5.2:[ИНФОРМАЦИЯ][ИНФО] PostgreSQL PL/Java .......... ....................... УСПЕХ [ 1.188 s][ИНФО] PL/Java API ............... ......................... УСПЕХ [ 2,676 s][ИНФО] PL/Java бекенд Java код ........... ............... УСПЕХ [ 2,790 s][ИНФОРМАЦИЯ] PL/Java бекенд собствен код ..................... ... УСПЕХ [ 21.005 s][ИНФО] Разгръщане на PL/Java ................................... .. УСПЕХ [ 1,672 s][ИНФОРМАЦИЯ] PL/Java Ant задачи ................................. УСПЕХ [ 2,772 s][ИНФО] Примери за PL/Java ................................... УСПЕХ [ 1,115 s ][ИНФО] PL/Java pa пакетиране ................................. УСПЕХ [ 1,461 s][ИНФО] ------- -------------------------------------------------- ---------------[ИНФО] УСПЕХ ИЗГРАЖДАНЕ[ИНФО] --------------------------- ---------------------------------------------[ИНФО] Общо време :35,751 s [ИНФО] Завършен в:2019-03-30T15:01:24Z[ИНФО] ----------------------------- -------------------------------------------[root@rag-node1 plava -1_5_2]#

Трябва да получите по-горе обобщен изход от „mvn clean install“, което показва, че всички зависимости са свързани с PL/Java. Сега стартирайте Pljava-packaging/pg11xxx jar файла, така че той да извлече/произведе необходимите файлове в директорията PostgreSQL Library.

[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 като bytes/usr/pgsql-11/share/pljava/pljava-1.5.2.jar като bytes/usr/pgsql-11/share/pljava/pljava-api-1.5.2.jar като байтове /usr/pgsql-11/share/pljava/pljava-examples-1.5.2.jar като байтове/usr/pgsql-11/share/extension/pljava.control като редове (ASCII)/usr/pgsql-11/share/ pljava/pljava--1.5.2.sql като редове (UTF8)/usr/pgsql-11/share/pljava/pljava--unpackaged--1.5.2.sql като редове (UTF8)/usr/pgsql-11/share /pljava/pljava--1.5.1--1.5.2.sql като редове (UTF8)/usr/pgsql-11/share/pljava/pljava--1.5.1-BETA3--1.5.2.sql като редове ( UTF8)/usr/pgsql-11/share/pljava/pljava--1.5.1-BETA2--1.5.2.sql като редове (UTF8)/usr/pgsql-11/share/pljava/pljava--1.5.1 -BETA1--1.5.2.sql като редове (UTF8)/usr/pgsql-11/share/pljava/pljava--1.5.0--1.5.2.sql като редове (UTF8)/usr/pgsql-11/ share/pljava/pljava--1.5.0-BETA3--1.5.2.sql като редове (UTF8)/usr/pgsql-11/share/pljava/pljava--1.5.0-BETA2--1.5.2.sql а s редове (UTF8)/usr/pgsql-11/share/pljava/pljava--1.5.0-BETA1--1.5.2.sql като редове (UTF8)

Както можете да разберете от горния изход, той е създал списък с файлове (.jar, .so, .sql) в “/usr/pgsql-11/share/pljava” и “/usr/pgsql-11/lib “.

Сега нека активираме PL/Java GUC параметрите в $PGDATA/postgresql.conf и рестартираме сървъра на базата данни, така че той да повлияе на работата на PL/Java. Има набор от PL/Java параметри, споменати в wiki тук, но има два параметъра, които са задължителни за активиране в клъстера на базата данни:

    • pljava.classpath – Местоположение, където „pljava-1.5.2.jar“ създаде в последната ни стъпка.
    • pljava.libjvm_location – Място, където „libjvm.so“ за зареждане на Java RunTime.

Знаем местоположението „pljava-1.5.2.jar“, нека намерим „libjvm“ за JDK 1.8.x на тази машина.

[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 <>/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 стоп postgresql-11[root@rag-node1 ~]# systemctl стартиране postgresql-11

ДОБРЕ. Сега създайте PL/Java език в базата данни.

[root@rag-node1 ~]# psql -p 5432 -U postgres -d postgrespsql (11.2) Въведете "help" за help.postgres=# СЪЗДАЙТЕ РАЗШИРЕНИЕ plava;СЪЗДАЙТЕ РАЗШИРЕНИЕ

Хубаво!! Нека направим бърз тест, като създадем PL/Java функция и стартираме.

postgres=# СЪЗДАВАНЕ НА ФУНКЦИЯ getsysprop(VARCHAR)postgres-# ВРЪЩА VARCHARpostgres-# КАТО 'java.lang.System.getProperty'postgres-# ЕЗИК java;CREATE FUNCTIONpostgres=#postgres=# SELECT getsysprop''user ); getsysprop---------------- /var/lib/pgsql(1 ред)

Готино!! Дано помогне. Моля, не се колебайте да оставяте коментари. Благодаря ви, че прочетохте.

Raghav


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL - извличане на реда, който има максимална стойност за колона

  2. PostgreSQL обработва имена в Windows

  3. Как да намерите пътя на pg_config

  4. Съвети за наблюдение на PostgreSQL за Moodle

  5. PostgreSQL схеми/пространства от имена с Django