Phần mở rộng mongo_fdw mới nhất dựa trên Mongo-c-driver và Libbson. Để triển khai mongo_fdw, trước tiên chúng ta cần biên dịch tất cả các phụ thuộc được yêu cầu bởi tiện ích mở rộng. Dưới đây là quá trình thực thi từng bước trên máy CentOS 7 (64bit) của tôi có cài đặt PostgreSQL 9.4.
Bước 1. Đầu tiên hãy cài đặt các gói phụ thuộc theo yêu cầu của Mongo-c-Driver và Libbson.
yum install git automake autoconf libtool gcc
Bước 2. Sao chép kho lưu trữ mongo_fdw từ Github.
git clone https://github.com/EnterpriseDB/mongo_fdw.git
Bước 3. Quá trình biên dịch trước yêu cầu pkgconfig / pkg-config (được cài đặt ở Bước 1) và vị trí PostgreSQL pg_config được đặt trong đường dẫn.
[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
Bước 4. Quá trình biên dịch Mongo_fdw có thể được thực hiện theo cách thủ công hoặc với sự trợ giúp của tập lệnh biên dịch tự động (autogen.sh) được cung cấp trong gói. Ở đây, tôi sẽ sử dụng tập lệnh biên dịch tự động, sẽ tải xuống và cài đặt các thư viện mongo-c-driver và libbson cần thiết ở vị trí mặc định (/ usr / local / lib). Để biết thêm chi tiết về tập lệnh biên dịch, hãy tham khảo tài liệu tại đây.
cd mongo_fdw/
./autogen.sh --with-master
make
make install
Sau khi biên dịch, chúng ta có thể nhận thấy các tệp được tạo trong thư mục chính của 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
Tốt thôi, bây giờ chúng ta có thể tạo tiện ích mở rộng trong cơ sở dữ liệu.
-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
Rất tiếc… có vẻ như tôi đã quên đặt đường dẫn thư viện cho mongo_fdw.so và MongoDB libs mới được tạo. Để kích hoạt thư viện, máy chủ PostgreSQL phải được khởi động lại sau khi thiết lập đường dẫn thư viện.
-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
Hy vọng, lần này sẽ không có bất kỳ lỗi nào ..
-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)
Thật tuyệt… chúng tôi đã tạo phần mở rộng mongo_fdw trong máy chủ PostgreSQL.
Để chơi với phần mở rộng, bạn có thể tham khảo tài liệu. [1], [2].