#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


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
目次
ダブルクリックで閉じるTOP | 閉じる
GO TO TOP