MongoDB 5.0 は 10 月 2024 日でサポートを終了します。 このバージョンのドキュメントはサポート対象外になりました。 5.0配置をアップグレードするには、
MongoDB.6 0アップグレード手順 を参照してください。
MongoDB ドライバーは サーバー選択アルゴリズムを使用して、使用するレプリカセット メンバーを選択します。または、複数の mongos
インスタンスに接続している場合は、使用するmongos
インスタンスを選択します。
サーバーは操作ごとに 1 回選択されます。
このページの情報は、次の環境でホストされている配置に適用されます。
注意
読み取り操作を含む分散トランザクションでは、読み込み設定(read preference) primary
を使用する必要があります。特定のトランザクション内のすべての操作は、同じノードにルーティングする必要があります。
サーバーは操作ごとに 1 回行われ、メンバーの読み取り資格を決定するために 読み込み設定( read preference )とlocalThresholdMS
設定によって制御されます。 読み込み設定 (read preference) は、操作ごとに再評価されます。
読み込み設定(read preference)モード | 選択プロセス |
---|
| |
| ドライバーは適格なセカンダリ メンバーのリストをアセンブルします。 maxStalenessSecondsと読み込み設定(read preference)で指定されるタグ セットは、ノードの適格性をさらに制限する可能性があります。 適格なメンバーのリストが空でない場合、ドライバーはどの適格なメンバーが「最も近い」か(つまり、平均ネットワーク ラウンド トリップ時間が最も低いメンバー)であるかを判断し、平均ラウンド トリップ時間を加算してレイテンシ ウィンドウを計算します。この「最も近い」サーバーとlocalThresholdMS の ドライバーはこのレイテンシウィンドウを使用して、適格なノードのリストをこのウィンドウに含まれるノードに絞り込みます。 レイテンシ ウィンドウ内の適格なメンバーのこのリストから、ドライバーは適格なメンバーをランダムに選択します。
|
| ドライバーは、適格なノード(プライマリおよびセカンダリ)のリストをアセンブルします。 maxStalenessSecondsと読み込み設定(read preference)で指定されるタグ セットは、ノードの適格性をさらに制限する可能性があります。 適格なメンバーのリストが空でない場合、ドライバーはどの適格なメンバーが「最も近い」か(つまり、平均ネットワーク ラウンド トリップ時間が最も低いメンバー)であるかを判断し、平均ラウンド トリップ時間を加算してレイテンシ ウィンドウを計算します。この「最も近い」サーバーとlocalThresholdMS の ドライバーはこのレイテンシウィンドウを使用して、適格なノードのリストをこのウィンドウに含まれるノードに絞り込みます。 レイテンシ ウィンドウ内の適格なメンバーのこのリストから、ドライバーは適格なメンバーをランダムに選択します。
|
| プライマリが使用可能な場合、ドライバーはプライマリを選択します。 プライマリが使用できない場合、サーバー選択は読み込み設定(read preference secondary のプロセスに従って適格なセカンダリ メンバーを選択します。
|
| 読み込み設定(read preference) secondary のサーバー選択プロセスに従って、適格なセカンダリ メンバーのリストが空でない場合、ドライバーは適格なセカンダリ メンバーを選択します。 それ以外の場合、リストが空の場合、ドライバはプライマリを選択します。
|
接続シードリストに複数のmongos
インスタンスがある場合、ドライバーはどのmongos
が「最も近い」ノード(平均ネットワーク ラウンド トリップ時間が最も低いノード)であるかを判断し、次のようにレイテンシ ウィンドウを計算します。この「最も近い」 mongos
インスタンスとlocalThresholdMS
の平均ラウンド トリップ時間。 ドライバーは、レイテンシ ウィンドウ内のmongos
インスタンス全体でランダムに負荷分散されます。
レプリカセット シャードを持つシャーディングされたクラスターの場合、 mongos
はシャードから読み取るときに読み込み設定(read preference)を適用します。 サーバーの選択は、 読み込み設定( read preference ) とlocalThresholdMs
設定によって決まります。 読み込み設定 (read preference) は、操作ごとに再評価されます。
mongos
は、primary
以外の読み込み設定( read preference )モードで ヘッジされ た読み取りをサポートします。つまり、 mongos
は、 primary
以外の 読み込み設定( read preference ) を使用している場合に、読み取り操作をヘッジするために、追加の読み取りを別のノードに送信できます(利用可能な場合)。 読み取り操作をヘッジする ために送信される追加の読み取りでは、 maxTimeMSForHedgedReads
のmaxTimeMS
値が使用され 。
ヘッジされた読み取りは、以下の操作でサポートされています。
ヘッジされた読み取りを使用するには、次の手順に従います。
読み込み設定(read preference)モード | 選択プロセス |
---|
| |
| mongos は、資格のあるセカンダリ メンバーのリストをアセンブルします。 maxStalenessSecondsと読み込み設定(read preference)で指定されるタグ セットは、ノードの適格性をさらに制限する可能性があります。
資格のあるノードのリストが空でない場合、mongos はどの資格のあるノードが「最も近い」か(平均ネットワーク ラウンド トリップ時間が最も低いノード)を決定し、平均的なラウンドトリップ時間を加算してレイテンシウィンドウを計算します。この「最も近い」サーバーと のlocalThresholdMs 時間mongos はこのレイテンシウィンドウを使用して、適格なメンバーのリストをこのウィンドウに含まれるメンバーに絞り込みます。 レイテンシ ウィンドウ内にある適格なメンバーのこのリストから、 mongos は適格なメンバーをランダムに選択します。 ヘッジされた読み取りを使用する場合、 mongos は 2 番目の適格なメンバーを選択します(使用可能な場合)。
|
| mongos は、資格のあるメンバー(プライマリとセカンダリ)のリストをアセンブルします。 maxStalenessSecondsと読み込み設定(read preference)で指定されるタグ セットは、ノードの適格性をさらに制限する可能性があります。
資格のあるノードのリストが空でない場合、mongos はどの資格のあるノードが「最も近い」か(平均ネットワーク ラウンド トリップ時間が最も低いノード)を決定し、平均的なラウンドトリップ時間を加算してレイテンシウィンドウを計算します。この「最も近い」サーバーと のlocalThresholdMs 時間mongos はこのレイテンシウィンドウを使用して、適格なメンバーのリストをこのウィンドウに含まれるメンバーに絞り込みます。 レイテンシ ウィンドウ内にある適格なメンバーのこのリストから、 mongos は適格なメンバーをランダムに選択します。 ヘッジされた読み取りを使用する場合、 mongos は 2 番目の適格なメンバーを選択します(使用可能な場合)。
|
| プライマリが使用可能な場合、 mongos はプライマリを選択します。 プライマリが使用できない場合、またはmongos がヘッジされた読み取りを使用している場合、サーバーは読み込み設定(read preference secondary のプロセスに従います。 ヘッジされた読み取りの場合、
|
| 読み込み設定(read preference) secondary のサーバー選択プロセスに従い、適格なセカンダリ メンバーのリストが空でない場合、 mongos は適格なセカンダリを選択します。 ヘッジされた読み取りを使用している場合、 mongos は別のセカンダリ(使用可能な場合)を選択します。 資格のあるセカンダリ メンバーのリストが空の場合、またはmongos がヘッジされた読み取りを使用しており、適格なセカンダリが 1 つしか使用できない場合、 mongos はプライマリを選択します。
|