Seneste mongo_fdw-udvidelse er baseret på Mongo-c-driver og Libbson. For at implementere mongo_fdw skal vi først kompilere alle de afhængigheder, der kræves af udvidelsen. Nedenfor er trin-for-trin udførelse på min CentOS 7 (64bit) maskine med PostgreSQL 9.4 installeret.
Trin 1. Installer først afhængighedspakker, der kræves af Mongo-c-Driver og Libbson.
yum install git automake autoconf libtool gcc
Trin 2. Klon mongo_fdw repository fra Github.
git clone https://github.com/EnterpriseDB/mongo_fdw.git
Trin 3. Forkompilering kræver pkgconfig/pkg-config (installeret i trin 1) og PostgreSQL pg_config-placering angivet i stien.
[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
Trin 4. Mongo_fdw-kompilering kan udføres manuelt eller ved hjælp af auto-kompileringsscript (autogen.sh), der er inkluderet i pakken. Her vil jeg bruge auto-kompileringsscript, som vil downloade og installere nødvendige mongo-c-driver og libbson biblioteker på standardplacering (/usr/local/lib). For flere detaljer om kompileringsscript henvises til dokumentationen her.
cd mongo_fdw/
./autogen.sh --with-master
make
make install
Efter kompilering kan vi bemærke de filer, der er oprettet i PostgreSQL-hjemmemappen.
-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
Fint, nu kan vi oprette udvidelsen i databasen.
-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
Ups ... det ser ud til, at jeg har glemt at indstille biblioteksstien til nyoprettede mongo_fdw.so og MongoDB libs. For at aktivere biblioteker skal PostgreSQL-serveren genstartes efter indstilling af biblioteksstien.
-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
Håber, denne gang vil der ikke være nogen fejl..
-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)
Det er fedt… vi har mongo_fdw-udvidelsen oprettet i PostgreSQL-serveren.
For at lege med udvidelsen kan du henvise til dokumentationen. [1],[2].