MongoDB データベースへの接続(FireDAC)
データベース接続(FireDAC) への移動
このトピックでは、FireDAC を使って MongoDB に接続する方法を説明します。
MongoDB は、オープンソースの NoSQL ドキュメント型データベースです。
目次
MongoDB の入手
MongoDB は、公式サイト(www.mongodb.org/downloads)からダウンロードすることができます。
前提条件
サポート対象バージョン
MongoDB FireDAC ドライバでは、MongoDB バージョン 3.0 以降をサポートしています。
クライアント ソフトウェアの取得
Windows 版クライアント ソフトウェアの取得
FireDAC で MongoDB サーバーに接続するには、"MongoDB C ドライバ" が必要です。インストールされた RAD Studio には、下記のプリコンパイル済みライブラリが含まれています。
- libbson-1.0.dll: BSON ライブラリ
- libmongoc-1.0.dll: MongoDB C ドライバ
MongoDB サーバーに接続するためのクライアント ライブラリは、RAD Studio インストール ディレクトリの以下の場所にあります。
C:\Program Files (x86)\Embarcadero\Studio\21.0\Redist\Win32
: 32 ビット版の libbson-1.0.dll および libmongoc-1.0.dll が含まれています。- Win32 デスクトップ アプリケーションの場合や、設計時に MondoDB に接続する場合に使用します。
C:\Program Files (x86)\Embarcadero\Studio\21.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 クライアント ライブラリが正しくインストールされていない場合は、接続を試みたときに以下の例外が発生します。
macOS クライアント ソフトウェアの取得
FireDAC で MongoDB サーバーに接続するには、以下の動的ライブラリが必要です。
- libbson-1.0.0.dylib
- libmongoc-1.0.0.dylib
これらのライブラリは、RAD Studio インストール ディレクトリ内の C:\Program Files (x86)\Embarcadero\Studio\21.0\Redist\osx32
フォルダにあります。
それを /usr/local
に保存してください。
ドライバのリンク
ドライバをリンクするには、以下のいずれかを行います。
- [ツール パレット]の[FireDAC Links]ページから、TFDPhysMongoDriverLink コンポーネントをフォーム デザイナにドロップします。
- uses 句に FireDAC.Phys.MongoDB ユニットを追加します。
接続定義パラメータ
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 に設定した場合には、さらに以下の接続定義パラメータを指定する必要があります。
詳細は、次の 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>