- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2017-05-07T22:21:23+09:00","","")
[[PostgreSQL]]
#author("2017-05-07T22:43:45+09:00","","")
#contents
#geshi{{
CREATE EXTENSION postgres_fdw;
CREATE SERVER postgres_server FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'localhost', dbname 'test', port '5434');
* mongo_fdw [#ke2cb176]
CREATE USER MAPPING FOR public SERVER app1
OPTIONS (USER 'postgres', password '');
- EnterpriseDB社から提供されているオープンソースソフトウェア。
- PostgreSQLのForeign Data Wrapperを使って,PostgreSQLからMongoDBのデータに透過的にアクセスすることができる。
- 外部テーブルに対して,INSERTやUPDATE,DELETEなどのDMLを通じて,MongoDBに対して更新や削除も行なうことができる。
CREATE FOREIGN TABLE fs_warehouse (
id INT,
name text
) SERVER postgres_server
OPTIONS (TABLE_NAME 'fs_warehouse');
* 設定・使用方法 [#g4ccb86c]
SELECT * FROM fs_warehouse;
** PostgreSQL側の準備 [#o66c648f]
DROP FOREIGN TABLE fs_warehouse;
DROP USER MAPPING FOR public SERVER postgres_server;
DROP SERVER postgres_server CASCADE;
外部テーブルを作成する。
#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){{
use db
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