PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Kompilieren der beschreibbaren mongo_fdw-Erweiterung im Binärformat der PostgreSQL-Installation.

Ein kurzer Blog zur Aktivierung der beschreibbaren mongo_fdw-Erweiterung in PostgreSQL 9.4. PostgreSQL bietet eine leistungsstarke Funktion namens Foreign Data Wrappers (FDW), die es DBAs ermöglicht, sich von PostgreSQL aus mit anderen Datenquellen zu verbinden. Die Implementierung von Foreign Data Wrapper basiert auf SQL/MED, das ab der PostgreSQL-Version 9.1 unterstützt wird, was bedeutet, dass wir jetzt nahtlos über PostgreSQL auf entfernte Datenbanken zugreifen können. Heute stehen uns verschiedene FDWs zur Verfügung. In diesem Blog werden wir eine neueste Version des beschreibbaren FDW „mongo_fdw“ für den Zugriff auf MongoDB kompilieren.

Die neueste mongo_fdw-Erweiterung basiert auf Mongo-c-driver und Libbson. Um mongo_fdw zu implementieren, müssen wir zuerst alle Abhängigkeiten kompilieren, die von der Erweiterung benötigt werden. Unten sehen Sie die schrittweise Ausführung auf meinem CentOS 7 (64-Bit)-Rechner mit installiertem PostgreSQL 9.4.

Schritt 1. Installieren Sie zuerst die von Mongo-c-Driver und Libbson benötigten Abhängigkeitspakete.

yum install git automake autoconf libtool gcc

Schritt 2. Klonen Sie das mongo_fdw-Repository von Github.

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

Schritt 3. Für die Vorkompilierung sind pkgconfig/pkg-config (in Schritt 1 installiert) und der im Pfad festgelegte PostgreSQL-Speicherort pg_config erforderlich.

[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

Schritt 4. Die Mongo_fdw-Kompilierung kann manuell oder mit Hilfe des Auto-Kompilierungs-Skripts (autogen.sh) erfolgen, das im Paket enthalten ist. Hier werde ich ein Autokompilierungsskript verwenden, das die erforderlichen Mongo-C-Treiber- und Libbson-Bibliotheken am Standardspeicherort (/usr/local/lib) herunterlädt und installiert. Weitere Einzelheiten zum Kompilierungsskript finden Sie in der Dokumentation hier.

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

Nach der Kompilierung können wir die Dateien sehen, die im PostgreSQL-Home-Verzeichnis erstellt wurden.

-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

Gut, jetzt können wir die Erweiterung in der Datenbank erstellen.

-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 … anscheinend habe ich vergessen, den Bibliothekspfad für neu erstellte mongo_fdw.so- und MongoDB-Bibliotheken festzulegen. Um Bibliotheken zu aktivieren, sollte der PostgreSQL-Server nach dem Festlegen des Bibliothekspfads neu gestartet werden.

-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

Hoffe, diesmal gibt es keine Fehler..

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

Das ist cool … wir haben die Erweiterung mongo_fdw auf dem PostgreSQL-Server erstellt.

Um mit der Erweiterung zu spielen, können Sie auf die Dokumentation verweisen. [1],[2].