PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengkompilasi ekstensi mongo_fdw yang dapat ditulis pada format biner instalasi PostgreSQL.

Blog singkat untuk mengaktifkan ekstensi mongo_fdw yang dapat ditulis di PostgreSQL 9.4. PostgreSQL menyediakan fitur canggih yang disebut Pembungkus Data Asing (FDW), yang memungkinkan DBA terhubung ke sumber data lain dari dalam PostgreSQL. Implementasi Pembungkus Data Asing didasarkan pada SQL/MED, yang didukung dari versi PostgreSQL 9.1 dan seterusnya, yang berarti kita sekarang dapat mengakses database jarak jauh melalui PostgreSQL dengan mulus. Hari ini kami memiliki berbagai PLRT Asing yang tersedia, di blog ini, kami akan mengkompilasi versi terbaru dari PLRT Asing yang dapat ditulis "mongo_fdw" untuk mengakses MongoDB.

Ekstensi mongo_fdw terbaru didasarkan pada Mongo-c-driver dan Libbson. Untuk mengimplementasikan mongo_fdw, pertama-tama kita perlu mengkompilasi semua dependensi yang diperlukan oleh ekstensi. Di bawah ini adalah eksekusi langkah demi langkah pada mesin CentOS 7 (64bit) saya dengan PostgreSQL 9.4 terinstal.

Langkah 1. Pertama instal paket ketergantungan yang diperlukan oleh Mongo-c-Driver dan Libbson.

yum install git automake autoconf libtool gcc

Langkah 2. Klon repositori mongo_fdw dari Github.

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

Langkah 3. Pra-kompilasi memerlukan pkgconfig/pkg-config (diinstal pada Langkah 1) dan lokasi pg_config PostgreSQL ditetapkan di jalur.

[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

Langkah 4. Kompilasi Mongo_fdw dapat dilakukan secara manual atau dengan bantuan skrip kompilasi otomatis (autogen.sh) yang disediakan dalam bundel. Di sini, saya akan menggunakan skrip kompilasi otomatis, yang akan mengunduh dan menginstal pustaka mongo-c-driver dan libbson yang diperlukan di lokasi default(/usr/local/lib). Untuk detail lebih lanjut tentang skrip kompilasi, lihat dokumentasi di sini.

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

Setelah kompilasi, kita dapat melihat file yang dibuat di direktori home 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

Baiklah, sekarang kita bisa membuat ekstensi di database.

-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… sepertinya saya lupa menyetel jalur pustaka untuk lib mongo_fdw.so dan MongoDB yang baru dibuat. Untuk mengaktifkan perpustakaan, server PostgreSQL harus dimulai ulang setelah mengatur jalur perpustakaan.

-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

Semoga kali ini tidak ada kesalahan..

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

Itu keren… kami memiliki ekstensi mongo_fdw yang dibuat di server PostgreSQL.

Untuk bermain dengan ekstensi, Anda dapat merujuk ke dokumentasi. [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. Kelompokkan hasil kueri berdasarkan bulan dan tahun di postgresql

  2. Bagaimana cara membuat daftar catatan dengan tanggal dari 10 hari terakhir?

  3. Batasan unik Postgres vs indeks

  4. Bisakah Anda membuat indeks dalam definisi CREATE TABLE?

  5. Menggunakan pg_dump untuk hanya mendapatkan pernyataan penyisipan dari satu tabel dalam database