MongoDB のデータ の PostgreSQL インターフェースを作成(MySQL リモーティング経由の JDBC)
PostgreSQL には多くの対応クライアントがあります。標準のドライバーから BI、アナリティクスツールまで、PostgreSQL はデータ接続の人気のインターフェースです。JDBC ドライバーのリモーティング機能を使用することで、任意の標準クライアントから接続できる PostgreSQL エントリポイントを簡単に作成できます。
MongoDB のデータ に PostgreSQL データベースとしてアクセスするには、CData JDBC Driver for MongoDB のリモーティング機能と、EnterpriseDB の MySQL Foreign Data Wrapper(FDW)を使用します。この記事では、FDW をインストールし、PostgreSQL Server からMongoDB のデータにクエリを実行する方法を説明します。
MongoDB データ連携について
CData を使用すれば、MongoDB のライブデータへのアクセスと統合がこれまでになく簡単になります。お客様は CData の接続機能を以下の目的で利用しています:
- MongoDB 2.6 以降のデータにアクセスでき、さまざまな MongoDB バージョンで幅広く使用できます。
- 柔軟な NoSQL により、非構造化データを簡単に管理できます(詳細はこちら:NoSQL 統合のための最先端ドライバー)。
- 他の NoSQL ドライバーに対する機能的な優位性を活用し、MongoDB データを扱う際の機能的なメリットを実現できます(詳細はこちら:NoSQL 向けドライバーの機能比較)。
MongoDB の柔軟性により、トランザクション、オペレーション、または分析データベースとして使用できます。つまり、CData のお客様は、ビジネスデータを MongoDB に統合したり、MongoDB データをデータウェアハウスに統合したり(またはその両方)するために当社のソリューションを使用しています。また、Power BI や Tableau などのお気に入りのツールから MongoDB を直接分析・レポートするために、当社のライブ接続オプションを活用しているお客様もいます。
MongoDB のユースケースと CData が MongoDB 体験をどのように向上させるかについての詳細は、ブログ記事をご覧ください:The Top 10 Real-World MongoDB Use Cases You Should Know in 2024
はじめに
MongoDB への接続を設定
以下の手順に従って、MongoDB への接続に必要な認証情報やその他の接続プロパティをドライバーの MySQL デーモンに設定します。MySQL デーモンは、MongoDB のデータ を CDataMongoDB という名前の MySQL データベースとして公開します。デーモンの設定ファイル内の databases セクションに接続プロパティを追加します。設定ファイルは、ドライバーのインストールディレクトリの lib サブフォルダにあります。
以下は一般的な接続文字列です:
[databases] mongodb = "Server=MyServer;Port=27017;Database=test;User=test;Password=Password;"
また、users セクションにユーザーを作成します。
MySQL デーモンのすべての設定オプションについては、ヘルプドキュメントをご参照ください。
リモーティングサービスを開始
以下の手順に従って、CData JDBC Driver for MongoDB の MySQL リモーティング機能を有効にします。
ドライバーはテスト用に適したデフォルト設定を作成します。サービスを開始するだけでMongoDB のデータに接続できます。
- 以下のコマンドで MySQL リモーティングサービスを開始します:
java -jar cdata.jdbc.mongodb.jar -f cdata.jdbc.mongodb.remoting.ini
MySQL Foreign Data Wrapper をビルドしてインストール
Foreign Data Wrapper は、PostgreSQL を再コンパイルせずに、PostgreSQL の拡張機能としてインストールできます。
お使いの OS で pgxn が利用可能な場合は、以下のコマンドでインストールできます:
pgxn install mysql_fdw USE_PGXS=1
利用できない場合は、以下の手順で自分でビルドしてください:
- MySQL C クライアントライブラリをインストールし、EnterpriseDB の MySQL 用 FDW のソースを取得します(例:GitHub から)。
- FDW をビルドします。pg_config と mysql_config の実行ファイルを PATH に追加してください:
env PATH=/usr/local/pgsql/bin:/usr/local/mysql/bin:$PATH make USE_PGXS=1
-
FDW をインストールします:
make USE_PGXS=1 install
インストールを完了するには、libmysqlclient ライブラリを環境にロードする必要があります(例:パスに追加するなど)。
MongoDB のデータ を PostgreSQL データベースとしてクエリ
拡張機能をインストールした後、以下の手順に従ってMongoDB のデータへのクエリ実行を開始します:
- データベースにログインします。
-
データベースの拡張機能をロードします:
postgres=#CREATE EXTENSION mysql_fdw;
-
MongoDB のデータ 用のサーバーオブジェクトを作成します:
postgres=# CREATE SERVER MongoDB FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host '127.0.0.1', port '3309');
-
MySQL デーモンに認識されているユーザーのユーザー名とパスワードでユーザーマッピングを作成します:
postgres=# CREATE USER MAPPING for postgres SERVER MongoDB OPTIONS (username 'admin', password 'test');
-
ローカルスキーマを作成します:
postgres=# CREATE SCHEMA MongoDB_db;
-
デーモン設定ファイルで定義した MongoDB データベース内のすべてのテーブルをインポートします:
postgres=# IMPORT FOREIGN SCHEMA "MongoDB" FROM SERVER MongoDB INTO MongoDB_db;
これで MongoDB に対して 読み取り/書き込み コマンドを実行できます:
postgres=# SELECT * FROM MongoDB_db."restaurants";