sql >> Databáze >  >> RDS >> PostgreSQL

Kompilace zapisovatelného rozšíření mongo_fdw v binárním formátu instalace PostgreSQL.

Krátký blog umožňující zápis rozšíření mongo_fdw v PostgreSQL 9.4. PostgreSQL poskytuje výkonnou funkci nazvanou Foreign Data Wrappers (FDW), která umožňuje správcům databází připojit se k jiným zdrojům dat z PostgreSQL. Implementace Foreign Data Wrapper je založena na SQL/MED, který je podporován od verze PostgreSQL 9.1 a novější, což znamená, že nyní můžeme bezproblémově přistupovat ke vzdálené databázi přes PostgreSQL. Dnes máme k dispozici různé FDW, v tomto blogu budeme sestavovat nejnovější verzi zapisovatelného FDW „mongo_fdw“ pro přístup k MongoDB.

Nejnovější rozšíření mongo_fdw je založeno na ovladači Mongo-c-driver a Libbson. K implementaci mongo_fdw musíme nejprve zkompilovat všechny závislosti požadované rozšířením. Níže jsou uvedeny podrobné spouštění na mém počítači CentOS 7 (64bit) s nainstalovaným PostgreSQL 9.4.

Krok 1. Nejprve nainstalujte balíčky závislostí vyžadované Mongo-c-Driver a Libbson.

yum install git automake autoconf libtool gcc

Krok 2. Klonujte repozitář mongo_fdw z Github.

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

Krok 3. Předkompilace vyžaduje pkgconfig/pkg-config (nainstalovaný v kroku 1) a umístění PostgreSQL pg_config nastavené v cestě.

[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

Krok 4. Kompilaci Mongo_fdw lze provést ručně nebo pomocí skriptu pro automatickou kompilaci (autogen.sh), který je součástí balíčku. Zde budu používat skript pro automatickou kompilaci, který stáhne a nainstaluje požadované mongo-c-driver a libbson knihovny do výchozího umístění (/usr/local/lib). Další podrobnosti o kompilačním skriptu naleznete v dokumentaci zde.

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

Po kompilaci si můžeme všimnout souborů vytvořených v domovském adresáři 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

Dobře, nyní můžeme vytvořit rozšíření v databázi.

-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

Jejda...zdá se, že jsem zapomněl nastavit cestu ke knihovně pro nově vytvořené mongo_fdw.so a MongoDB libs. Pro povolení knihoven by měl být PostgreSQL server restartován po nastavení cesty ke knihovně.

-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

Doufám, že tentokrát nebudou žádné chyby..

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

To je skvělé… na PostgreSQL serveru jsme vytvořili rozšíření mongo_fdw.

Chcete-li si pohrát s rozšířením, můžete se podívat na dokumentaci. [1],[2].


  1. Jak opravit běžné problémy s databází MySQL?

  2. Připojte svého OEM ke Grafaně pomocí aplikace Enterprise Manager pro Grafana

  3. Oracle SQL:Jak používat více než 1000 položek uvnitř klauzule IN

  4. Jak naplnit ListView db ve složce aktiv?