Overview
このガイドでは、 Javaドライバーを使用して MongoClient インスタンスのCRUD操作を構成する方法について説明します。
読み込み設定(read preference ) 、 読み取り保証( read concern ) 、 書込み保証( write concern ) は、MongoDB レプリカセットに接続するときに、ドライバーが読み取り操作をルーティングして読み取りおよび書込み操作の確認を待つ方法を制御します。 読み込み設定(read preference)と読み取り保証(read concern)はすべての読み取り操作に適用されます。書込み保証 (write concern) はすべての書込み (write) 操作に適用されます。
詳細については、 読み込み設定( read preference ) 、 読み取り保証( read concern ) 、 書込み保証( write concern) に関するサーバーのドキュメントを参照してください。
MongoDatabase MongoCollection インスタンスは、それらにアクセスする MongoClient から設定と懸念事項を継承します。ただし、データベースとコレクションにカスタム設定を適用することができます。詳細については、カスタム CRUD 設定の構成ページを参照してください。
接続文字列を使用するか、MongoClients コンストラクターに MongoClientSettingsオブジェクトを渡すことで、クライアントレベルのCRUD設定を指定できます。使用可能なオプションを確認するには、Connection String タブまたは MongoClientSettingsタブを選択します。
ドライバーの読み取りまたは書込み動作を変更するには、接続文字列に次のパラメーターを含めます。
オプション名 | タイプ | 説明 |
|---|---|---|
| ブール値 | 接続された MongoDB インスタンスがすべての書き込みに対してディスク上のジャーナル ファイルにグループ コミットするまで、ドライバーが待機する必要があることを指定します。 デフォルト: |
| string or integer | 書込み保証 (write concern)を指定します。値の詳細については、w オプションのMongoDB Server のドキュメントを参照してください。 デフォルト: |
| integer | 書込み保証 (write concern)の時間制限をミリ秒単位で指定します。詳細については、 MongoDB Server のドキュメントの wtimeoutMS オプション を参照してください。値が デフォルト: |
| string | 読み込み設定 (read preference)を指定します。値の詳細については、readPreference オプションのMongoDB Server のドキュメントを参照してください。 デフォルト: |
| string | 読み込み設定 (read preference)タグを指定します。値の詳細については、readPreferenceTags オプションのMongoDB Server のドキュメントを参照してください。 デフォルト: |
| integer | ドライバーがセカンダリとの通信を停止する前に、セカンダリがどの程度古くなった時点でセカンダリとの通信を停止するかを秒単位で指定します。の最小値は、90 秒またはハートビート頻度に 10 秒を加えた値のうち大きい方です。詳細については、 MongoDB Server のドキュメントの maxStalenessSeconds オプション を参照してください。パラメータを指定しない場合、または デフォルト: |
| string | 読み取り操作と書込み (write) 操作に使用する UUID 表現を指定します。詳しくは、MongoClientSettings.getUuidRepresentation() メソッド の ドライバー ドキュメントを参照してください。 デフォルト: |
| ブール値 | ネットワーク エラーにより完了できない場合、サポートされている書き込み操作を再試行する必要があることを指定します。 デフォルト: |
| ブール値 | ネットワーク エラーにより完了できない場合、サポートされている読み取り操作を再試行する必要があることを指定します。 デフォルト: |
| integer | 再試行可能な過負荷エラー( このオプションは、 デフォルト: |
| ブール値 | 後続の再試行試行のサーバー選択中に、以前に過負荷エラーを返したサーバーの優先順位を下げるかどうかをドライバーに設定します。 このオプションは、 デフォルト: |
次の例では、最も近いレプリカセットメンバーから読み取るように読み込み設定 (read preference)を設定します。
ConnectionString connectionString = "mongodb://<host>:<port>/?readPreference=nearest"MongoClient mongoClient = MongoClients.create(connectionString)これらのパラメーターの詳細については、ConnectionString APIドキュメント を参照してください。
ドライバーの読み取り/書込み動作を変更するには、次のメソッドを MongoClientSettings コンストラクターにチェーンします。
| 後続の再試行試行のサーバー選択中に、サーバーが以前に過負荷エラーを返した場合に、ドライバーがサーバーの優先順位を下げるかどうかを設定します。 デフォルト: |
| 再試行可能な過負荷エラー(つまり、 デフォルト: |
| 読み取り保証 (read concern)を設定します。サーバー マニュアル ページ APIドキュメント |
| デフォルト: |
| ネットワークエラーが発生した場合にドライバーが読み取りの再試行を実行するかどうか。 デフォルト: |
| ネットワークエラーが発生した場合にドライバーが書込みを再試行するかどうか。 デフォルト: |
| UUID のインスタンスをエンコードし、サブタイプが 3 の BSON バイナリ値をデコードするときに使用する UUID 表現を設定します。 |
| 書込み保証 ( write concern) を設定します。 デフォルト : |
次の例では、最も近いレプリカセットメンバーから読み取るように読み込み設定 (read preference)を設定します。
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("<your connection string>")) .readPreference(ReadPreference.nearest()) .build());これらのメソッドの詳細については、MongoClientSettings.Builder APIドキュメント を参照してください。
注意
Intelligent ワークロード マネジメント (IWM) におけるロードシェディング
SystemOverloadedError または RetryableError ラベルのエラーがアプリケーションで障害を引き起こしている場合、またはアプリケーションのログに表示されている場合、クラスターで Load Shedding がアクティブになっており、ドライバーがそれをサポートするバージョンにアップグレードされていない可能性があります。MongoDB Java ドライバーをバージョン5.8以降にアップグレードすることをお勧めします。アップグレード後もこれらのエラーが続く場合は、Load Shedding 設定の検討などのサーバー側の変更、またはカスタムエラー処理やクライアント側のリクエストスロットリングの実装するなどのアプリケーション側の変更によって対処できます。状況によっては、アプリケーション側の変更が望ましい、または必要な場合があります。
Load Shedding は IWM の機能であり、過負荷が継続している間に過剰な操作を拒否することでサーバーの負荷を管理するのに役立ちます。この機能は MongoDB 9.0 以降で使用できます。
IWM またはオーバーロードエラーの処理について詳しくは、インテリジェント ワークロード マネジメント ページまたはオーバーロードエラー ページを Atlas ドキュメントで参照してください。