- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2017-05-08T19:23:17+09:00","","")
#author("2017-05-13T01:13:29+09:00","","")
[[PostgreSQL]]
#contents
* mongo_fdw [#ke2cb176]
- EnterpriseDB社から提供されているオープンソースソフトウェア。
- PostgreSQLのForeign Data Wrapperを使って,PostgreSQLからMongoDBのデータに透過的にアクセスすることができる。
- 外部テーブルに対して,INSERTやUPDATE,DELETEなどのDMLを通じて,MongoDBに対して更新や削除も行なうことができる。
* 設定・使用方法 [#g4ccb86c]
** PostgreSQL側の準備 [#o66c648f]
外部テーブルを作成する。
#geshi(sql){{
CREATE EXTENSION mongo_fdw;
CREATE SERVER mongo_server
FOREIGN DATA WRAPPER mongo_fdw
OPTIONS (address '127.0.0.1', port '27017');
CREATE USER MAPPING FOR postgres
SERVER mongo_server
OPTIONS (username 'postgres', password '123456');
CREATE FOREIGN TABLE warehouse(
_id NAME,
id int,
name text
) SERVER mongo_server
OPTIONS (database 'db', collection 'warehouse');
SELECT * FROM warehouse WHERE id = 1;
-- DROP FOREIGN TABLE WAREHOUSE;
-- DROP USER MAPPING FOR postgres SERVER mongo_server;
-- DROP SERVER mongo_server CASCADE;
}}
** MongoDB側の準備 [#y903820f]
- アクセスユーザーを登録し,コレクションにドキュメントを作成する。
- 以下の例では,R/W権限とAdmin権限をロールに設定している。
#geshi(javascript){{
db = db.getSiblingDB('warehouse');
db.createUser({user: "postgres", pwd: "123456",roles:["readWrite", "dbAdmin"]});
db.warehouse.insert({"id":1,"name":"Tarou"})
db.warehouse.find()
}}
* 参考リンク [#bc6c780c]
- https://github.com/EnterpriseDB/mongo_fdw