サーバー選択アルゴリズム
MongoDB ドライバーは サーバー選択アルゴリズムを使用して、使用するレプリカセット メンバーを選択します。または、複数の mongos
インスタンスに接続している場合は、使用するmongos
インスタンスを選択します。
サーバーは操作ごとに 1 回選択されます。
このページの情報は、次の環境でホストされている配置に適用されます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
注意
読み取り操作を含む分散トランザクションでは、読み込み設定(read preference) primary
を使用する必要があります。特定のトランザクション内のすべての操作は、同じノードにルーティングする必要があります。
レプリカセットの読み込み設定 (read preference)
サーバーは操作ごとに 1 回行われ、メンバーの読み取り資格を決定するために 読み込み設定( read preference )とlocalThresholdMS
設定によって制御されます。 読み込み設定 (read preference) は、操作ごとに再評価されます。
読み込み設定(read preference)モード | 選択プロセス |
---|---|
primary (デフォルト) |
|
| |
| |
| |
|
シャーディングされたクラスターの読み込み設定 (read preference)
ロード バランシング
接続シードリストに複数のmongos
インスタンスがある場合、ドライバーはどのmongos
が「最も近い」ノード(平均ネットワーク ラウンド トリップ時間が最も低いノード)であるかを判断し、次のようにレイテンシ ウィンドウを計算します。この「最も近い」 mongos
インスタンスとlocalThresholdMS
の平均ラウンド トリップ時間。 ドライバーは、レイテンシ ウィンドウ内のmongos
インスタンス全体でランダムに負荷分散されます。
読み込み設定(read preference)とシャード
レプリカセット シャードを持つシャーディングされたクラスターの場合、 mongos
はシャードから読み取るときに読み込み設定(read preference)を適用します。 サーバーの選択は、 読み込み設定( read preference ) とreplication.localPingThresholdMs
設定によって決まります。 読み込み設定 (read preference) は、操作ごとに再評価されます。
ヘッジされた読み取り
重要
MongoDB 8.0以降、ヘッジされた読み取りは非推奨です。 読み込み設定(read preference nearest
を指定するクエリは、デフォルトでヘッジされた読み取りを使用しなくなりました。 ヘッジされた読み取りを明示的に指定すると、MongoDB はヘッジされた読み取りを実行し、警告をログに記録します。
mongos
は、primary
以外の読み込み設定( read preference )モードで ヘッジされ た読み取りをサポートします。つまり、 mongos
は、 primary
以外の読み込み設定(read preference)を使用している場合に、読み取り操作をヘッジするために、追加の読み取りを別のノードに送信できます(利用可能な場合)。 読み取り操作をヘッジする ために送信される追加の読み取りでは、 maxTimeMSForHedgedReads
のmaxTimeMS
値が使用されます。
ヘッジされた読み取りは、以下の操作でサポートされています。
ヘッジされた読み取りを使用するには、次の手順に従います。
mongos
ではヘッジされた読み取りのサポートが有効になっている必要があります(デフォルト)。readHedgingMode
パラメーターを参照してください。primary
以外の読み込み設定( read preference )では、ヘッジされた読み取りの使用を有効にする必要があります。
読み込み設定(read preference)モード | 選択プロセス |
---|---|
primary (デフォルト) |
|
| |
| |
| |
[1] | ( 1 、 2 )デフォルトのしきい値は 15 ミリ秒です。 |