Ekstensi mongo_fdw terbaru didasarkan pada Mongo-c-driver dan Libbson. Untuk mengimplementasikan mongo_fdw, pertama-tama kita perlu mengkompilasi semua dependensi yang diperlukan oleh ekstensi. Di bawah ini adalah eksekusi langkah demi langkah pada mesin CentOS 7 (64bit) saya dengan PostgreSQL 9.4 terinstal.
Langkah 1. Pertama instal paket ketergantungan yang diperlukan oleh Mongo-c-Driver dan Libbson.
yum install git automake autoconf libtool gcc
Langkah 2. Klon repositori mongo_fdw dari Github.
git clone https://github.com/EnterpriseDB/mongo_fdw.git
Langkah 3. Pra-kompilasi memerlukan pkgconfig/pkg-config (diinstal pada Langkah 1) dan lokasi pg_config PostgreSQL ditetapkan di jalur.
[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
Langkah 4. Kompilasi Mongo_fdw dapat dilakukan secara manual atau dengan bantuan skrip kompilasi otomatis (autogen.sh) yang disediakan dalam bundel. Di sini, saya akan menggunakan skrip kompilasi otomatis, yang akan mengunduh dan menginstal pustaka mongo-c-driver dan libbson yang diperlukan di lokasi default(/usr/local/lib). Untuk detail lebih lanjut tentang skrip kompilasi, lihat dokumentasi di sini.
cd mongo_fdw/
./autogen.sh --with-master
make
make install
Setelah kompilasi, kita dapat melihat file yang dibuat di direktori home 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
Baiklah, sekarang kita bisa membuat ekstensi di 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
Ups… sepertinya saya lupa menyetel jalur pustaka untuk lib mongo_fdw.so dan MongoDB yang baru dibuat. Untuk mengaktifkan perpustakaan, server PostgreSQL harus dimulai ulang setelah mengatur jalur perpustakaan.
-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
Semoga kali ini tidak ada kesalahan..
-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)
Itu keren… kami memiliki ekstensi mongo_fdw yang dibuat di server PostgreSQL.
Untuk bermain dengan ekstensi, Anda dapat merujuk ke dokumentasi. [1], [2].