PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Biên dịch phần mở rộng mongo_fdw có thể ghi trên định dạng nhị phân của cài đặt PostgreSQL.

Một blog ngắn để kích hoạt phần mở rộng mongo_fdw có thể ghi trong PostgreSQL 9.4. PostgreSQL cung cấp một tính năng mạnh mẽ có tên là Foreign Data Wrappers (FDW), cho phép các DBA kết nối với các nguồn dữ liệu khác từ bên trong PostgreSQL. Việc triển khai Trình bao bọc dữ liệu nước ngoài dựa trên SQL / MED, được hỗ trợ từ phiên bản PostgreSQL 9.1 trở đi, có nghĩa là giờ đây chúng ta có thể truy cập cơ sở dữ liệu từ xa thông qua PostgreSQL một cách liền mạch. Hôm nay chúng tôi có nhiều FDW sẵn có, trong blog này, chúng tôi sẽ biên soạn phiên bản mới nhất của FDW có thể ghi “mongo_fdw” để truy cập MongoDB.

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].


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để sử dụng UUID trong SQLAlchemy?

  2. Tìm và thay thế biểu thức chính quy trong Postgres

  3. Loại bỏ các thẻ HTML trong PostgreSQL

  4. Sự khác biệt giữa chỉ số GiST và GIN

  5. Đếm ký tự trong chuỗi thông qua SQL