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

Compilazione dell'estensione mongo_fdw scrivibile su formato binario dell'installazione di PostgreSQL.

Un breve blog per abilitare l'estensione mongo_fdw scrivibile in PostgreSQL 9.4. PostgreSQL fornisce una potente funzionalità chiamata Foreign Data Wrapper (FDW), che consente ai DBA di connettersi ad altre origini dati da PostgreSQL. L'implementazione di Foreign Data Wrapper si basa su SQL/MED, supportato dalla versione PostgreSQL 9.1 in poi, il che significa che ora possiamo accedere al database remoto tramite PostgreSQL senza problemi. Oggi abbiamo una varietà di FDW disponibili, in questo blog compileremo un'ultima versione di FDW scrivibile "mongo_fdw" per accedere a MongoDB.

L'ultima estensione mongo_fdw è basata su Mongo-c-driver e Libbson. Per implementare mongo_fdw, dobbiamo prima compilare tutte le dipendenze richieste dall'estensione. Di seguito è riportata l'esecuzione passo passo sulla mia macchina CentOS 7 (64 bit) con PostgreSQL 9.4 installato.

Passaggio 1. Installa prima i pacchetti di dipendenze richiesti da Mongo-c-Driver e Libbson.

yum install git automake autoconf libtool gcc

Passaggio 2. Clona il repository mongo_fdw da Github.

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

Passaggio 3. La pre-compilazione richiede pkgconfig/pkg-config (installato nel passaggio 1) e la posizione pg_config PostgreSQL impostata nel percorso.

[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

Passaggio 4. La compilazione di Mongo_fdw può essere eseguita manualmente o con l'aiuto dello script di compilazione automatica (autogen.sh) fornito nel bundle. Qui utilizzerò lo script di compilazione automatica, che scaricherà e installerà le librerie mongo-c-driver e libbson richieste nella posizione predefinita (/usr/local/lib). Per maggiori dettagli sullo script di compilazione fare riferimento alla documentazione qui.

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

Dopo la compilazione, possiamo notare i file creati nella home directory di 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

Bene, ora possiamo creare l'estensione nel database.

-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

Oops... sembra che mi sia dimenticato di impostare il percorso della libreria per le librerie mongo_fdw.so e MongoDB appena create. Per abilitare le librerie, il server PostgreSQL deve essere riavviato dopo aver impostato il percorso della libreria.

-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

Spero, questa volta non ci saranno errori..

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

È fantastico ... abbiamo l'estensione mongo_fdw creata nel server PostgreSQL.

Per giocare con l'estensione, puoi fare riferimento alla documentazione. [1],[2].