sql >> Database >  >> RDS >> PostgreSQL

Het compileren van een beschrijfbare mongo_fdw-extensie op binair formaat van PostgreSQL-installatie.

Een korte blog om de beschrijfbare mongo_fdw-extensie in PostgreSQL 9.4 in te schakelen. PostgreSQL biedt een krachtige functie genaamd Foreign Data Wrappers (FDW), waarmee DBA's vanuit PostgreSQL verbinding kunnen maken met andere gegevensbronnen. De implementatie van Foreign Data Wrapper is gebaseerd op SQL/MED, dat wordt ondersteund vanaf versie PostgreSQL 9.1, wat betekent dat we nu naadloos toegang hebben tot de externe database via PostgreSQL. Vandaag hebben we verschillende FDW's beschikbaar, in deze blog zullen we een nieuwste versie van beschrijfbare FDW "mongo_fdw" compileren om toegang te krijgen tot MongoDB.

De nieuwste mongo_fdw-extensie is gebaseerd op Mongo-c-driver en Libbson. Om mongo_fdw te implementeren, moeten we eerst alle afhankelijkheden compileren die nodig zijn voor de extensie. Hieronder vindt u de stapsgewijze uitvoering op mijn CentOS 7 (64-bits) machine waarop PostgreSQL 9.4 is geïnstalleerd.

Stap 1. Installeer eerst de afhankelijkheidspakketten vereist door Mongo-c-Driver en Libbson.

yum install git automake autoconf libtool gcc

Stap 2. Kloon mongo_fdw repository van Github.

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

Stap 3. Pre-compilatie vereist pkgconfig/pkg-config (geïnstalleerd in stap 1) en PostgreSQL pg_config locatie ingesteld in het pad.

[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

Stap 4. Mongo_fdw-compilatie kan handmatig worden gedaan of met behulp van het auto-compilatiescript (autogen.sh) dat in de bundel wordt geleverd. Hier zal ik een auto-compilatiescript gebruiken, dat de vereiste mongo-c-driver en libbson-bibliotheken zal downloaden en installeren op de standaardlocatie (/usr/local/lib). Raadpleeg de documentatie hier voor meer details over het compilatiescript.

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

Na compilatie kunnen we de bestanden opmerken die zijn gemaakt in de PostgreSQL-thuismap.

-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

Prima, nu kunnen we de extensie in de database maken.

-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

Oeps ... het lijkt erop dat ik ben vergeten het bibliotheekpad in te stellen voor nieuw gemaakte mongo_fdw.so en MongoDB-bibliotheken. Om bibliotheken in te schakelen, moet de PostgreSQL-server opnieuw worden gestart nadat het bibliotheekpad is ingesteld.

-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

Hoop, deze keer zullen er geen fouten zijn..

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

Dat is cool ... we hebben de extensie mongo_fdw gemaakt op de PostgreSQL-server.

Om met de extensie te spelen, kun je de documentatie raadplegen. [1],[2].


  1. Hoe de maximale verbindingen in postgre te verhogen?

  2. Parseer bestandsnaam en pad van volledig pad

  3. SQL WHERE-instructie

  4. IntegrityError:onderscheid maken tussen unieke beperking en niet-nulschendingen