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

Компилиране на разширение mongo_fdw с възможност за запис в двоичен формат на инсталацията на PostgreSQL.

Кратък блог за активиране на разширение mongo_fdw с възможност за запис в PostgreSQL 9.4. PostgreSQL предоставя мощна функция, наречена Foreign Data Wrappers (FDW), която позволява на DBA да се свързват с други източници на данни от PostgreSQL. Внедряването на Foreign Data Wrapper е базирано на SQL/MED, което се поддържа от версия на PostgreSQL 9.1 нататък, което означава, че вече можем да осъществяваме достъп до отдалечена база данни чрез PostgreSQL безпроблемно. Днес имаме разнообразие от налични FDW, в този блог ще компилираме най-новата версия на FDW с възможност за запис „mongo_fdw“ за достъп до MongoDB.

Последното разширение mongo_fdw е базирано на Mongo-c-driver и Libbson. За да приложим mongo_fdw, първо трябва да компилираме всички зависимости, изисквани от разширението. По-долу са дадени стъпка по стъпка изпълнението на моята CentOS 7 (64-битова) машина с инсталиран PostgreSQL 9.4.

Стъпка 1. Първо инсталирайте пакетите на зависимости, изисквани от Mongo-c-Driver и Libbson.

yum install git automake autoconf libtool gcc

Стъпка 2. Клонирайте хранилището mongo_fdw от Github.

git clone https://github.com/EnterpriseDB/mongo_fdw.git

Стъпка 3. Предварителната компилация изисква pkgconfig/pkg-config (инсталиран в стъпка 1) и PostgreSQL pg_config местоположение, зададено в пътя.

[root@localhost ~]# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
[root@localhost ~]# export PATH=/opt/PostgreSQL/9.4/bin:$PATH

[root@localhost mongo_fdw]# type pg_config
pg_config is /opt/PostgreSQL/9.4/bin/pg_config

Стъпка 4. Компилацията на Mongo_fdw може да се извърши ръчно или с помощта на скрипт за автоматично компилиране (autogen.sh), предоставен в пакета. Тук ще използвам скрипт за автоматично компилиране, който ще изтегли и инсталира необходимите библиотеки mongo-c-driver и libbson в местоположение по подразбиране (/usr/local/lib). За повече подробности относно скрипта за компилация вижте документацията тук.

cd mongo_fdw/
./autogen.sh --with-master
make
make install

След компилацията можем да забележим файловете, създадени в домашната директория на PostgreSQL.

-bash-4.2$ find $PWD -name "mongo*"
/opt/PostgreSQL/9.4/lib/postgresql/mongo_fdw.so
/opt/PostgreSQL/9.4/share/postgresql/extension/mongo_fdw.control
/opt/PostgreSQL/9.4/share/postgresql/extension/mongo_fdw--1.0.sql

Добре, сега можем да създадем разширението в базата данни.

-bash-4.2$ psql
Password:
psql.bin (9.4.4)
Type "help" for help.

postgres=# create extension mongo_fdw;
ERROR: could not load library "/opt/PostgreSQL/9.4/lib/postgresql/mongo_fdw.so": libmongoc-1.0.so.0: cannot open shared object file: No such file or directory

Ами сега… изглежда, че забравих да задам пътя на библиотеката за новосъздадените библиотеки mongo_fdw.so и MongoDB. За да активирате библиотеки, PostgreSQL сървърът трябва да се рестартира след задаване на пътя към библиотеката.

-bash-4.2$ export LD_LIBRARY_PATH=/opt/PostgreSQL/9.4/lib:/usr/local/lib
-bash-4.2$ /opt/PostgreSQL/9.4/bin/pg_ctl -D /opt/PostgreSQL/9.4/data/ start
server starting

Дано този път няма да има грешки...

-bash-4.2$ psql
Password:
psql.bin (9.4.4)
Type "help" for help.

postgres=# create extension mongo_fdw;
CREATE EXTENSION

postgres=# dx
List of installed extensions
Name | Version | Schema | Description
-----------+---------+------------+-----------------------------------------
adminpack | 1.0 | pg_catalog | administrative functions for PostgreSQL
mongo_fdw | 1.0 | public | foreign data wrapper for MongoDB access
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(3 rows)

Това е страхотно... имаме разширение mongo_fdw, създадено в сървъра на PostgreSQL.

За да играете с разширението, можете да се обърнете към документацията. [1], [2].


  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 с помощта на Jenkins

  2. дублираният ключ на postgresql нарушава уникалното ограничение

  3. Python psycopg2 не се вмъква в таблицата на postgresql

  4. Съвети за дистанционно управление на PostgreSQL

  5. Изчисляване на кумулативна сума в PostgreSQL