FDW (Foreign Data Wrapper)とは
FDWとは、あるデータベースからその外部のデータへのアクセスを行うための仕組みである。ForeignDataWrapperの略称で、日本語では「外部データラッパ」と呼ばれる。PostgreSQLも実装されており、PostgreSQLのデータベースと、他の様々なデータとを連携させることができる。
例えば、社員データベース、顧客データベース、売上データベースが別々に構築されているような環境において、社員毎の顧客別売上一覧を取得するような時、FDWを使用したひとつデータベースにアクセスだけでデータを取り出すことができる。そのため、オペレータの操作の簡易化やデータベースにアクセスするプログラムの簡素化を行うことができる。
PostgreSQLのFDW機能
PostgreSQLのFDW機能はモジュールとして提供されており、外部モジュールとして導入できるようになっている。
連携したい外部データの種類によってそれぞれのモジュールを追加することで利用可能となる。FDWモジュールが外部データごとの違いを吸収してくれるため、PostgreSQLデータベース内部からはその違いを意識せずに、あたかも内部のデータであるかのように扱う事ができる。
FDWモジュール
PostgreSQLのFDWモジュールは、公式・非公式あわせて数十にも及ぶものが公開されている。
例えば、次のようなデータと連携できるモジュールが存在する。
- OracleデータベースやMySQLデータベースなどのSQLデータベース
- CassandraやMongoDBなどのNoSQLデータベース
- CSV形式やXML形式の通常ファイル
- LDAPサーバのデータ
- TwitterやFacebookなどの特定のウェブサイト
- ElasticsearchやHadoopなどのビッグデータ
PostgreSQL 9.5の標準機能では、CSVファイルへアクセスするfile_fdwモジュールと、外部のPostgreSQLデータベースへアクセスするpostgres_fdwを使用することが出来る。また、FDWモジュールを開発するためのライブラリも公開されており、新たなFDWモジュールを作成することもできる。
外部データの操作
FDWでは、データベース内部に外部データ参照用のテーブルを作成し、それを操作することで外部データへのアクセスが実行される。連携先のデータの種類によらず、テーブルへの操作は通常のSQL文によって行う。
モジュールごとに対応状況は異なるが、検索(SELECT)や更新(UPDATE)などの一通りのCRUD操作はもちろん、トランザクション機能まで持つものもある。また、検索結果の結合も行えるため、複数に分散したデータを柔軟に組み合わせて連携させることができる。
FDWを利用すると
扱うデータが様々なデータソースに含まれている場合、データを扱うオペレータはそれぞれのデータソースの特徴やその取り扱い方を把握して操作を行い、取得したデータを組み合わせて必要な情報を作成する必要がある。PostgreSQLのFDWを利用すれば、オペレータはPostgreSQLの操作を知っているだけで、必要なすべてのデータを取得できることになり、安全で便利に運用を期待することができる。
デージーネットの取り組み
デージーネットでは、いくつかのFDWモジュールでデータベースを操作できるかの調査・検証を行った。別のPostgreSQLとの連携(postgres_fdw)、Oracleデータベースとの連携(oraclce_fdw)、LDAPとの連携(ldap_fdw)の動作確認を行い、どれも正常に連携できることがわかった。
インストールおよび設定方法から、外部データとの連携やトランザクション機能が実際にどのように動作するのかなど、詳細な情報はホワイトペーパーとして公開している。
異なるデータベース間の連携を必要とするシステムにおいて、PostgreSQLのFDW機能はシンプルで効率的な回答の一つである。そういったシステムを構築する場面では、FDW機能を含めた提案を行っている。
【カテゴリ】:ビッグデータ  データベース  
【Webセミナー】Rocket.Chatだけじゃない!OSSビジネスチャットの最新情報
日程: | 12月19日(木)Webセミナー「BigBlueButton」を使用します。 |
内容: | Rocket.Chatの機能制限でお困りの方も必見!ライセンスフリーで利用できるOSSのビジネスチャットを紹介します。 |
ご興味のあるかたはぜひご参加ください。 |