PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL स्थापना के बाइनरी प्रारूप पर लिखने योग्य mongo_fdw एक्सटेंशन को संकलित करना।

PostgreSQL 9.4 में लिखने योग्य mongo_fdw एक्सटेंशन को सक्षम करने के लिए एक छोटा ब्लॉग। PostgreSQL विदेशी डेटा रैपर (FDW) नामक एक शक्तिशाली सुविधा प्रदान करता है, जो DBA को PostgreSQL के भीतर से अन्य डेटा स्रोतों से कनेक्ट करने की अनुमति देता है। विदेशी डेटा रैपर कार्यान्वयन SQL/MED पर आधारित है, जो PostgreSQL 9.1 संस्करण से समर्थित है, जिसका अर्थ है कि अब हम PostgreSQL के माध्यम से दूरस्थ डेटाबेस को मूल रूप से एक्सेस कर सकते हैं। आज हमारे पास विभिन्न प्रकार के FDW उपलब्ध हैं, इस ब्लॉग में, हम MongoDB तक पहुँचने के लिए लिखने योग्य FDW “mongo_fdw” का नवीनतम संस्करण संकलित करेंगे।

नवीनतम mongo_fdw एक्सटेंशन Mongo-c-driver और Libbson पर आधारित है। Mongo_fdw को लागू करने के लिए, पहले हमें एक्सटेंशन के लिए आवश्यक सभी निर्भरताओं को संकलित करने की आवश्यकता है। नीचे मेरी CentOS 7 (64bit) मशीन पर PostgreSQL 9.4 स्थापित के साथ चरण-दर-चरण निष्पादन है।

चरण 1. पहले Mongo-c-Driver और Libbson के लिए आवश्यक डिपेंडेंसी पैकेज इंस्टॉल करें।

yum install git automake autoconf libtool gcc

चरण 2. Github से mongo_fdw रिपॉजिटरी को क्लोन करें।

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

चरण 3. पूर्व-संकलन के लिए pkgconfig/pkg-config (चरण 1 में स्थापित) और पथ में निर्धारित PostgreSQL pg_config स्थान की आवश्यकता होती है।

[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

चरण 4। Mongo_fdw संकलन मैन्युअल रूप से या बंडल में प्रदान की गई ऑटो-संकलन स्क्रिप्ट (autogen.sh) की सहायता से किया जा सकता है। यहां, मैं ऑटो-संकलन स्क्रिप्ट का उपयोग करूंगा, जो आवश्यक mongo-c-driver और libbson पुस्तकालयों को डिफ़ॉल्ट स्थान (/usr/local/lib) में डाउनलोड और इंस्टॉल करेगा। संकलन स्क्रिप्ट के बारे में अधिक जानकारी के लिए यहां दस्तावेज़ीकरण देखें।

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

संकलन के बाद, हम 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

ठीक है, अब हम डेटाबेस में एक्सटेंशन बना सकते हैं।

-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

ओह...ऐसा लगता है कि मैं नव निर्मित mongo_fdw.so और MongoDB libs के लिए लाइब्रेरी पथ सेट करना भूल गया हूं। पुस्तकालयों को सक्षम करने के लिए, पुस्तकालय पथ को सेट करने के बाद PostgreSQL सर्वर को पुनरारंभ करना चाहिए।

-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

आशा है, इस बार कोई त्रुटि नहीं होगी..

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

बढ़िया है... हमारे पास PostgreSQL सर्वर में mongo_fdw एक्सटेंशन क्रिएट है।

एक्सटेंशन के साथ खेलने के लिए, आप दस्तावेज़ीकरण का उल्लेख कर सकते हैं। [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. दो स्तंभों के संयोजन पर अद्वितीय बाधा?

  2. कनेक्शन अस्वीकृत (PGError) (postgresql और रेल)

  3. PostgreSQL में एक तालिका को संदर्भित करने वाली सभी संग्रहीत प्रक्रियाओं को सूचीबद्ध करने के 3 तरीके

  4. PostgreSQL Upsert सिस्टम कॉलम XMIN, XMAX और अन्य का उपयोग करके सम्मिलित और अद्यतन पंक्तियों में अंतर करता है

  5. एसक्यूएल के माध्यम से अनुक्रमों में वर्णों की गणना करना