sql >> Database teknologi >  >> RDS >> PostgreSQL

Kompilere skrivebar mongo_fdw-udvidelse på binært format af PostgreSQL-installation.

En kort blog for at aktivere skrivbar mongo_fdw-udvidelse i PostgreSQL 9.4. PostgreSQL giver en kraftfuld funktion kaldet Foreign Data Wrappers (FDW), som gør det muligt for DBA'er at oprette forbindelse til andre datakilder inde fra PostgreSQL. Foreign Data Wrapper-implementering er baseret på SQL/MED, der understøttes fra PostgreSQL 9.1-versionen og fremefter, hvilket betyder, at vi nu kan få adgang til fjerndatabasen gennem PostgreSQL problemfrit. I dag har vi forskellige FDW'er tilgængelige, i denne blog vil vi kompilere en seneste version af skrivbar FDW "mongo_fdw" for at få adgang til MongoDB.

Seneste mongo_fdw-udvidelse er baseret på Mongo-c-driver og Libbson. For at implementere mongo_fdw skal vi først kompilere alle de afhængigheder, der kræves af udvidelsen. Nedenfor er trin-for-trin udførelse på min CentOS 7 (64bit) maskine med PostgreSQL 9.4 installeret.

Trin 1. Installer først afhængighedspakker, der kræves af Mongo-c-Driver og Libbson.

yum install git automake autoconf libtool gcc

Trin 2. Klon mongo_fdw repository fra Github.

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

Trin 3. Forkompilering kræver pkgconfig/pkg-config (installeret i trin 1) og PostgreSQL pg_config-placering angivet i stien.

[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

Trin 4. Mongo_fdw-kompilering kan udføres manuelt eller ved hjælp af auto-kompileringsscript (autogen.sh), der er inkluderet i pakken. Her vil jeg bruge auto-kompileringsscript, som vil downloade og installere nødvendige mongo-c-driver og libbson biblioteker på standardplacering (/usr/local/lib). For flere detaljer om kompileringsscript henvises til dokumentationen her.

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

Efter kompilering kan vi bemærke de filer, der er oprettet i PostgreSQL-hjemmemappen.

-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

Fint, nu kan vi oprette udvidelsen 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

Ups ... det ser ud til, at jeg har glemt at indstille biblioteksstien til nyoprettede mongo_fdw.so og MongoDB libs. For at aktivere biblioteker skal PostgreSQL-serveren genstartes efter indstilling af biblioteksstien.

-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

Håber, denne gang vil der ikke være nogen fejl..

-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 er fedt… vi har mongo_fdw-udvidelsen oprettet i PostgreSQL-serveren.

For at lege med udvidelsen kan du henvise til dokumentationen. [1],[2].


  1. Samlet funktion i en SQL-opdateringsforespørgsel?

  2. SQL (ORACLE):ORDER BY og LIMIT

  3. Postgres drop table syntaksfejl

  4. Addnode resolv.conf Fejl