Последното разширение 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].