sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLインストールのバイナリ形式で書き込み可能なmongo_fdw拡張機能をコンパイルします。

    PostgreSQL9.4で書き込み可能なmongo_fdw拡張機能を有効にするための短いブログ。 PostgreSQLは、Foreign Data Wrappers(FDW)と呼ばれる強力な機能を提供します。これにより、DBAはPostgreSQL内から他のデータソースに接続できます。外部データラッパーの実装はSQL/MEDに基づいており、PostgreSQL 9.1バージョン以降でサポートされています。つまり、PostgreSQLを介してリモートデータベースにシームレスにアクセスできるようになりました。現在、さまざまなFDWを利用できます。このブログでは、MongoDBにアクセスするための書き込み可能なFDW「mongo_fdw」の最新バージョンをコンパイルします。

    最新の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]。


    1. PostgreSQL9.0でのPgbouncerを使用した接続プール

    2. UNIONがPostgreSQLでどのように機能するか

    3. Ubuntuでpostgresqlを完全にパージして再インストールする方法は?

    4. 例を使用してSQLで連結する方法について学ぶ