PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Compilation de l'extension mongo_fdw accessible en écriture sur le format binaire de l'installation de PostgreSQL.

Un court blog pour activer l'extension mongo_fdw accessible en écriture dans PostgreSQL 9.4. PostgreSQL fournit une fonctionnalité puissante appelée Foreign Data Wrappers (FDW), qui permet aux DBA de se connecter à d'autres sources de données depuis PostgreSQL. L'implémentation de Foreign Data Wrapper est basée sur SQL/MED, qui est pris en charge à partir de la version PostgreSQL 9.1, ce qui signifie que nous pouvons désormais accéder à une base de données distante via PostgreSQL de manière transparente. Aujourd'hui, nous avons une variété de FDW disponibles, dans ce blog, nous allons compiler une dernière version de FDW inscriptible "mongo_fdw" pour accéder à MongoDB.

La dernière extension mongo_fdw est basée sur Mongo-c-driver et Libbson. Pour implémenter mongo_fdw, nous devons d'abord compiler toutes les dépendances requises par l'extension. Vous trouverez ci-dessous l'exécution étape par étape sur ma machine CentOS 7 (64 bits) avec PostgreSQL 9.4 installé.

Étape 1. Installez d'abord les packages de dépendance requis par Mongo-c-Driver et Libbson.

yum install git automake autoconf libtool gcc

Étape 2. Clonez le référentiel mongo_fdw à partir de Github.

git clone https://github.com/EnterpriseDB/mongo_fdw.git

Étape 3. La pré-compilation nécessite pkgconfig/pkg-config (installé à l'étape 1) et l'emplacement PostgreSQL pg_config défini dans le chemin.

[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

Étape 4. La compilation de Mongo_fdw peut être effectuée manuellement ou à l'aide du script de compilation automatique (autogen.sh) fourni dans le bundle. Ici, j'utiliserai un script d'auto-compilation, qui téléchargera et installera les bibliothèques mongo-c-driver et libbson requises dans l'emplacement par défaut (/usr/local/lib). Pour plus de détails sur le script de compilation, reportez-vous à la documentation ici.

cd mongo_fdw/
./autogen.sh --with-master
make
make install

Après compilation, nous pouvons remarquer les fichiers créés dans le répertoire personnel de 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

Très bien, nous pouvons maintenant créer l'extension dans la base de données.

-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

Oups… il semble que j'ai oublié de définir le chemin de la bibliothèque pour les bibliothèques mongo_fdw.so et MongoDB nouvellement créées. Pour activer les bibliothèques, le serveur PostgreSQL doit être redémarré après avoir défini le chemin de la bibliothèque.

-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

J'espère que cette fois, il n'y aura pas d'erreurs..

-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)

C'est cool… nous avons créé l'extension mongo_fdw dans le serveur PostgreSQL.

Pour jouer avec l'extension, vous pouvez vous référer à la documentation. [1],[2].