PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Kompilowanie zapisywalnego rozszerzenia mongo_fdw w formacie binarnym instalacji PostgreSQL.

Krótki blog dotyczący możliwości zapisu rozszerzenia mongo_fdw w PostgreSQL 9.4. PostgreSQL udostępnia potężną funkcję o nazwie Foreign Data Wrappers (FDW), która umożliwia administratorom baz danych łączenie się z innymi źródłami danych z poziomu PostgreSQL. Implementacja Foreign Data Wrapper opiera się na SQL/MED, który jest obsługiwany od wersji PostgreSQL 9.1, co oznacza, że ​​możemy teraz bezproblemowo uzyskać dostęp do zdalnej bazy danych za pośrednictwem PostgreSQL. Dzisiaj mamy do dyspozycji wiele FDW, w tym blogu będziemy kompilować najnowszą wersję zapisywalnego FDW „mongo_fdw”, aby uzyskać dostęp do MongoDB.

Najnowsze rozszerzenie mongo_fdw jest oparte na sterownikach Mongo-c-driver i Libbson. Aby zaimplementować mongo_fdw, najpierw musimy skompilować wszystkie zależności wymagane przez rozszerzenie. Poniżej znajduje się wykonanie krok po kroku na moim komputerze CentOS 7 (64bit) z zainstalowanym PostgreSQL 9.4.

Krok 1. Najpierw zainstaluj pakiety zależności wymagane przez Mongo-c-Driver i Libbson.

yum install git automake autoconf libtool gcc

Krok 2. Sklonuj repozytorium mongo_fdw z Github.

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

Krok 3. Wstępna kompilacja wymaga pkgconfig/pkg-config (zainstalowany w kroku 1) i lokalizacji PostgreSQL pg_config ustawionej w ścieżce.

[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. Kompilację Mongo_fdw można wykonać ręcznie lub za pomocą skryptu autokompilacji (autogen.sh) dostarczonego w pakiecie. Tutaj użyję skryptu autokompilacji, który pobierze i zainstaluje wymagane biblioteki mongo-c-driver i libbson w domyślnej lokalizacji (/usr/local/lib). Aby uzyskać więcej informacji na temat skryptu kompilacji, zapoznaj się z dokumentacją tutaj.

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

Po kompilacji możemy zauważyć pliki utworzone w katalogu domowym 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

W porządku, teraz możemy utworzyć rozszerzenie w bazie danych.

-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… wydaje się, że zapomniałem ustawić ścieżkę biblioteki dla nowo utworzonych bibliotek mongo_fdw.so i MongoDB. Aby włączyć biblioteki, serwer PostgreSQL należy zrestartować po ustawieniu ścieżki do biblioteki.

-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

Mam nadzieję, że tym razem nie będzie żadnych błędów.

-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 spoko… mamy rozszerzenie mongo_fdw stworzone na serwerze PostgreSQL.

Aby pobawić się rozszerzeniem, zapoznaj się z dokumentacją. [1], [2].


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przekazywanie identyfikatora użytkownika do wyzwalaczy PostgreSQL

  2. Wybieranie wierszy uporządkowanych według jednej kolumny i odrębnych w innej

  3. Nazwa dynamicznej tabeli zapytań SQL w FOR

  4. python pip zainstalować błąd instalacji psycopg2

  5. Obcinanie wszystkich tabel w bazie danych Postgres