De nieuwste mongo_fdw-extensie is gebaseerd op Mongo-c-driver en Libbson. Om mongo_fdw te implementeren, moeten we eerst alle afhankelijkheden compileren die nodig zijn voor de extensie. Hieronder vindt u de stapsgewijze uitvoering op mijn CentOS 7 (64-bits) machine waarop PostgreSQL 9.4 is geïnstalleerd.
Stap 1. Installeer eerst de afhankelijkheidspakketten vereist door Mongo-c-Driver en Libbson.
yum install git automake autoconf libtool gcc
Stap 2. Kloon mongo_fdw repository van Github.
git clone https://github.com/EnterpriseDB/mongo_fdw.git
Stap 3. Pre-compilatie vereist pkgconfig/pkg-config (geïnstalleerd in stap 1) en PostgreSQL pg_config locatie ingesteld in het pad.
[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
Stap 4. Mongo_fdw-compilatie kan handmatig worden gedaan of met behulp van het auto-compilatiescript (autogen.sh) dat in de bundel wordt geleverd. Hier zal ik een auto-compilatiescript gebruiken, dat de vereiste mongo-c-driver en libbson-bibliotheken zal downloaden en installeren op de standaardlocatie (/usr/local/lib). Raadpleeg de documentatie hier voor meer details over het compilatiescript.
cd mongo_fdw/
./autogen.sh --with-master
make
make install
Na compilatie kunnen we de bestanden opmerken die zijn gemaakt in de PostgreSQL-thuismap.
-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
Prima, nu kunnen we de extensie in de database maken.
-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
Oeps ... het lijkt erop dat ik ben vergeten het bibliotheekpad in te stellen voor nieuw gemaakte mongo_fdw.so en MongoDB-bibliotheken. Om bibliotheken in te schakelen, moet de PostgreSQL-server opnieuw worden gestart nadat het bibliotheekpad is ingesteld.
-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
Hoop, deze keer zullen er geen fouten zijn..
-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)
Dat is cool ... we hebben de extensie mongo_fdw gemaakt op de PostgreSQL-server.
Om met de extensie te spelen, kun je de documentatie raadplegen. [1],[2].