MongoDB データベースへの接続(FireDAC)

提供: Appmethod Topics
移動先: 案内検索

データベース接続(FireDAC) への移動

このトピックでは、FireDAC を使って MongoDB に接続する方法を説明します。

MongoDB は、オープンソースの NoSQL ドキュメント型データベースです。

MongoDB の入手

MongoDB は、公式サイト(www.mongodb.org/downloads)からダウンロードすることができます。

前提条件

サポート対象バージョン

MongoDB FireDAC ドライバでは、MongoDB バージョン 3.0 以降をサポートしています。

クライアント ソフトウェアの取得

Windows 版クライアント ソフトウェアの取得

FireDAC で MongoDB サーバーに接続するには、"MongoDB C ドライバ" が必要です。インストールされた Appmethod には、下記のプリコンパイル済みライブラリが含まれています。 

  • libbson-1.0.dll: BSON ライブラリ
  • libmongoc-1.0.dll: MongoDB C ドライバ

MongoDB サーバーに接続するためのクライアント ライブラリは、Appmethod インストール ディレクトリの以下の場所にあります。

  • C:\Program Files (x86)\Embarcadero\Studio\17.0\Redist\Win32: 32 ビット版の libbson-1.0.dll および libmongoc-1.0.dll が含まれています。
    • Win32 デスクトップ アプリケーションの場合や、設計時に MondoDB に接続する場合に使用します。
  • C:\Program Files (x86)\Embarcadero\Studio\17.0\Redist\Win64: 64 ビット版の libbson-1.0.dll および libmongoc-1.0.dll が含まれています。
    • Win64 デスクトップ アプリケーションの場合に使用します。

必要なライブラリを以下のいずれかの場所に保存します。

  • PATH 環境変数に含まれているフォルダ(たとえば <Windows>\SYSTEM32 など)。
  • アプリケーションの EXE ファイルのフォルダ。
  • その他の任意のフォルダ。この場合は FDDrivers.ini で以下のように指定します。
[Mongo]
VendorLib=<folder>\libmongoc-1.0.dll

MongoDB クライアント ライブラリが正しくインストールされていない場合は、接続を試みたときに以下の例外が発生します。

[FireDAC][Phys][Mongo]-314. Cannot load vendor library [libmongoc-1.0.dll]. The specified module could not be found. Hint: check it is in the PATH or application EXE directories, and has x86 bitness.(ベンダ ライブラリ [libmongoc-1.0.dll] を読み込めません。指定されたモジュールが見つかりませんでした。ヒント: PATH またはアプリケーションの EXE のディレクトリに置かれていること、x86 ビットであることを確認してください)

Mac OS X 版クライアント ソフトウェアの取得

FireDAC で MongoDB サーバーに接続するには、以下の動的ライブラリが必要です。

  • libbson-1.0.0.dylib
  • libmongoc-1.0.0.dylib

これらのライブラリは、Appmethod インストール ディレクトリ内の C:\Program Files (x86)\Embarcadero\Studio\17.0\Redist\osx32 フォルダにあります。

それを /usr/local に保存してください。

ドライバのリンク

ドライバをリンクするには、以下のいずれかを行います。

接続定義パラメータ

DriverID=Mongo

パラメータ 説明 値の例
Server MongoDB データベース プロセスが動作しているサーバーの TCP/IP アドレスまたはホスト名。 127.0.0.1
Port MongoDB データベース プロセスがリスンしている TCP/IP ポート。 27017
Database この接続の現在のデータベースの名前。Database を指定しない場合、現在のデータベースはセットアップされません。 test
User_Name MongoDB のユーザー ID。
Password MongoDB のユーザー パスワード。
UseSSL

True に指定すると SSL 接続が有効になります。デフォルトでは False に設定されます。UseSSL を True に設定した場合には、さらに以下の接続定義パラメータを指定する必要があります。

  • SSLPEMKeyFile -- SSL の証明書とキーを含む .pem ファイルのパス名。
  • SSLCAFile -- 認証局(CA)から入手した証明書を含む .pem ファイルのパス名。
  • SSLPEMKeyPassword -- クライアント証明書キー ファイルが暗号化されている場合。

詳細は、次の MongoDB のドキュメントを参照。

True
LoginTimeout 接続の確立中にアプリケーションがタイムアウトするまでの時間(秒単位)を制御します。 0
ReadTimeout サーバーからの読み取りを行おうとしたときにタイムアウトするまでの時間(秒単位)。読み取りを試みるたびにこのタイムアウト値が使われ、必要であれば再試行されるため、実際にタイムアウトするまでの合計値は、このオプション値の 3 倍になります。 300
MongoAdvanced MongoDB データベース接続オプションを追加で指定します。

詳細は、次の MongoDB のドキュメントを参照。

使用例

セキュアな接続の使用

TLS/SSL 暗号化を使用するには、UseSSL パラメータを定義して値を True に設定し、SSLPEMKeyFile および SSLCAFile の各パラメータを以下のように指定します。


DriverID=Mongo
Server=<ip_address>
Port=27017
Database=test
UseSSL=True
SSLCAFile=ca-cert.pem // The file that contains the certificate from the CA (Certificate Authority).
SSLPEMKeyFile=client-key.pem and client-cert.pem // The file that contains the SSL certificate and key.

また、クライアント証明書キー ファイルが暗号化されている場合には、sslPEMKeyPassword も指定します。詳細は、「TLS/SSL Configuration for Client(クライアント向け TLS/SSL 構成)」を参照してください。

メモ: MongoDB C ドライバは、SSL サポートなしでコンパイルされています。アプリケーションで SSL が必要な場合は、自分で MongoDB C ドライバをコンパイルし、必要な一連のライブラリを作成する必要があります。これらのライブラリでは、OpenSSL ライブラリおよび Microsoft Visual C++ ランタイム ライブラリが必要になる可能性があります。

その他の使用例

  • ローカルで動作しているサーバーに接続し、デフォルト(27017)ポートをリスンする場合:


DriverID=Mongo
Database=test
  • リモート サーバーに接続し、認証が有効であるデフォルト以外のポートをリスンする場合: 


DriverID=Mongo
Server=test
Port=<port_number>
Database=test
User_Name=admin
Password=<admin_password>

関連項目