最新のmongo_fdw拡張機能は、Mongo-c-driverとLibbsonに基づいています。 mongo_fdwを実装するには、最初に拡張機能に必要なすべての依存関係をコンパイルする必要があります。以下は、PostgreSQL9.4がインストールされたCentOS7(64ビット)マシンでのステップバイステップの実行です。
ステップ1.最初にMongo-c-DriverとLibbsonに必要な依存関係パッケージをインストールします。
yum install git automake autoconf libtool gcc
手順2.Githubからmongo_fdwリポジトリのクローンを作成します。
git clone https://github.com/EnterpriseDB/mongo_fdw.git
ステップ3.事前コンパイルには、pkgconfig / pkg-config(ステップ1でインストール)とパスに設定されたPostgreSQLpg_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)
かっこいいです…PostgreSQLサーバーでmongo_fdw拡張機能を作成しています。
拡張機能を試すには、ドキュメントを参照してください。 [1]、[2]。