नवीनतम 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].