Najnowsze rozszerzenie mongo_fdw jest oparte na sterownikach Mongo-c-driver i Libbson. Aby zaimplementować mongo_fdw, najpierw musimy skompilować wszystkie zależności wymagane przez rozszerzenie. Poniżej znajduje się wykonanie krok po kroku na moim komputerze CentOS 7 (64bit) z zainstalowanym PostgreSQL 9.4.
Krok 1. Najpierw zainstaluj pakiety zależności wymagane przez Mongo-c-Driver i Libbson.
yum install git automake autoconf libtool gcc
Krok 2. Sklonuj repozytorium mongo_fdw z Github.
git clone https://github.com/EnterpriseDB/mongo_fdw.git
Krok 3. Wstępna kompilacja wymaga pkgconfig/pkg-config (zainstalowany w kroku 1) i lokalizacji PostgreSQL pg_config ustawionej w ścieżce.
[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
Krok 4. Kompilację Mongo_fdw można wykonać ręcznie lub za pomocą skryptu autokompilacji (autogen.sh) dostarczonego w pakiecie. Tutaj użyję skryptu autokompilacji, który pobierze i zainstaluje wymagane biblioteki mongo-c-driver i libbson w domyślnej lokalizacji (/usr/local/lib). Aby uzyskać więcej informacji na temat skryptu kompilacji, zapoznaj się z dokumentacją tutaj.
cd mongo_fdw/
./autogen.sh --with-master
make
make install
Po kompilacji możemy zauważyć pliki utworzone w katalogu domowym 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
W porządku, teraz możemy utworzyć rozszerzenie w bazie danych.
-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… wydaje się, że zapomniałem ustawić ścieżkę biblioteki dla nowo utworzonych bibliotek mongo_fdw.so i MongoDB. Aby włączyć biblioteki, serwer PostgreSQL należy zrestartować po ustawieniu ścieżki do biblioteki.
-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
Mam nadzieję, że tym razem nie będzie żadnych błędów.
-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)
To spoko… mamy rozszerzenie mongo_fdw stworzone na serwerze PostgreSQL.
Aby pobawić się rozszerzeniem, zapoznaj się z dokumentacją. [1], [2].