sql >> Databasteknik >  >> RDS >> PostgreSQL

Kompilerar skrivbar mongo_fdw-tillägg i binärt format för PostgreSQL-installation.

En kort blogg för att möjliggöra skrivbar mongo_fdw-tillägg i PostgreSQL 9.4. PostgreSQL tillhandahåller en kraftfull funktion som kallas Foreign Data Wrappers (FDW), som gör att DBA:er kan ansluta till andra datakällor inifrån PostgreSQL. Implementeringen av Foreign Data Wrapper är baserad på SQL/MED, som stöds från PostgreSQL 9.1-versionen och framåt, vilket innebär att vi nu kan komma åt fjärrdatabasen genom PostgreSQL sömlöst. Idag har vi en mängd olika FDW tillgängliga, i den här bloggen kommer vi att kompilera en senaste version av skrivbar FDW "mongo_fdw" för att komma åt MongoDB.

Senaste mongo_fdw-tillägget är baserat på Mongo-c-driver och Libbson. För att implementera mongo_fdw måste vi först kompilera alla beroenden som krävs av tillägget. Nedan följer steg-för-steg-exekveringen på min CentOS 7 (64bit)-dator med PostgreSQL 9.4 installerat.

Steg 1. Installera först beroendepaket som krävs av Mongo-c-Driver och Libbson.

yum install git automake autoconf libtool gcc

Steg 2. Klona mongo_fdw-förrådet från Github.

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

Steg 3. Förkompilering kräver pkgconfig/pkg-config (installerad i steg 1) och PostgreSQL pg_config plats i sökvägen.

[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

Steg 4. Mongo_fdw-kompilering kan göras manuellt eller med hjälp av autokompileringsskript (autogen.sh) som finns i paketet. Här kommer jag att använda auto-kompileringsskript, som kommer att ladda ner och installera nödvändiga mongo-c-driver och libbson bibliotek på standardplatsen (/usr/local/lib). För mer information om kompileringsskript, se dokumentationen här.

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

Efter kompileringen kan vi lägga märke till filerna som skapats i PostgreSQL-hemkatalogen.

-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

Okej, nu kan vi skapa tillägget i databasen.

-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

Hoppsan... jag verkar ha glömt att ställa in biblioteksvägen för nyskapade mongo_fdw.so och MongoDB libs. För att aktivera bibliotek bör PostgreSQL-servern startas om efter att du har ställt in bibliotekssökvägen.

-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

Hoppas, den här gången blir det inga fel...

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

Det är coolt... vi har mongo_fdw-tillägg skapa i PostgreSQL-servern.

För att spela med tillägget kan du hänvisa till dokumentationen. [1],[2].


  1. Hantera transaktioner samtidigt med lås i SQL Server

  2. SQL GROUP BY CASE-sats med aggregatfunktion

  3. SQL CREATE TABLE … SOM SELECT-sats

  4. Infoga en bild i postgresql-databasen