AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

サーバー選択アルゴリズム

MongoDB ドライバーは サーバー選択 アルゴリズムを使用して、使用するレプリカセット メンバーを選択したり、複数のmongosインスタンスに接続している場合は、使用するmongosインスタンスを選択します。

サーバーは操作ごとに 1 回選択されます。

注意

読み取り操作を含むトランザクションでは、読み込み設定 (read preference) primary を使用する必要があります。特定のトランザクション内のすべての操作は、同じノードにルーティングする必要があります。

サーバーは操作ごとに 1 回行われ、メンバーの読み取り資格を決定するために 読み込み設定( read preference )とlocalThresholdMS設定によって制御されます。 読み込み設定 (read preference) は、操作ごとに再評価されます。

読み込み設定(read preference)モード
選択プロセス

primary (デフォルト)

  1. ドライバーはプライマリを選択します。
  1. ドライバーは適格なセカンダリ メンバーのリストをアセンブルします。 maxStalenessSecondsと読み込み設定(read preference)で指定されるタグ セットは、ノードの適格性をさらに制限する可能性があります。

  2. 適格なメンバーのリストが空でない場合、ドライバーはどの適格なメンバーが「最も近い」か(つまり、平均ネットワーク ラウンド トリップ時間が最も低いメンバー)であるかを判断し、平均ラウンド トリップ時間を加算してレイテンシ ウィンドウを計算します。この「最も近い」サーバーとlocalThresholdMSの ドライバーはこのレイテンシウィンドウを使用して、適格なノードのリストをこのウィンドウに含まれるノードに絞り込みます。

  3. レイテンシ ウィンドウ内の適格なメンバーのこのリストから、ドライバーは適格なメンバーをランダムに選択します。

  1. ドライバーは、適格なノード(プライマリおよびセカンダリ)のリストをアセンブルします。 maxStalenessSecondsと読み込み設定(read preference)で指定されるタグ セットは、ノードの適格性をさらに制限する可能性があります。

  2. If the list of eligible members is not empty, the driver determines which eligible member is the "closest" (i.e. the member with the lowest average network round-trip-time) and calculates a latency window by adding the average round-trip-time of this "closest" server and the localThresholdMS [1]. The driver uses this latency window to pare down the list of eligible members to those members that fall within this window.

  3. レイテンシ ウィンドウ内の適格なメンバーのこのリストから、ドライバーは適格なメンバーをランダムに選択します。

  1. プライマリが使用可能な場合、ドライバーはプライマリを選択します。

  2. プライマリが使用できない場合、サーバー選択は読み込み設定(read preference secondaryのプロセスに従って適格なセカンダリ メンバーを選択します。

  1. 読み込み設定(read preference) secondaryのサーバー選択プロセスに従って、適格なセカンダリ メンバーのリストが空でない場合、ドライバーは適格なセカンダリ メンバーを選択します。

  2. それ以外の場合、リストが空の場合、ドライバはプライマリを選択します。

接続シードリストに複数のmongosインスタンスがある場合、ドライバーはどのmongosが最も近い"(つまり、平均ネットワーク ラウンド トリップ時間が最も低いノード)であるかを判断し、レイテンシウィンドウを計算します。この「最も近い」mongosインスタンスと localThresholdMS の平均ラウンドトリップ時間を合計します。ドライバーの負荷は、レイテンシウィンドウ内の mongos インスタンス全体でランダムに分散されます。

注意

localThresholdMS は、サーバー選択をより低レイテンシのローカルターゲットに向けます。設定では、単一のプライベートエンドポイントが作成するクロスリージョン ネットワークトポロジーを削除したり、すべての接続がローカル リージョンに存在することを保証したりすることはできません。この構成では、クライアントは別のリージョンの mongos を介して接続できます。

レプリカセット シャードを持つシャーディングされたクラスターの場合、 mongosはシャードから読み取るときに読み込み設定(read preference)を適用します。 サーバーの選択は、 読み込み設定( read preference ) とreplication.localPingThresholdMs設定によって決まります。 読み込み設定 (read preference) は、操作ごとに再評価されます。

mongosは、primary 以外の読み込み設定( read preference )モードで ヘッジされ た読み取りをサポートします。つまり、 mongosは、 primary以外の 読み込み設定( read preference ) を使用している場合に、読み取り操作をヘッジするために、追加の読み取りを別のノードに送信できます(利用可能な場合)。 読み取り操作をヘッジする ために送信される追加の読み取りでは、 maxTimeMSForHedgedReads のmaxTimeMS値が使用され 。

ヘッジされた読み取りは、以下の操作でサポートされています。

ヘッジされた読み取りを使用するには、次の手順に従います。

  • mongosではヘッジされた読み取りのサポートが有効になっている必要があります(デフォルト)。 readHedgingModeパラメーターを参照してください。

  • primary以外の読み込み設定( read preference )では、ヘッジされた読み取りの使用を有効にする必要があります。

読み込み設定(read preference)モード
選択プロセス

primary (デフォルト)

  1. mongosはプライマリを選択します。
  1. mongosは、資格のあるセカンダリ メンバーのリストをアセンブルします。 maxStalenessSecondsと読み込み設定(read preference)で指定されるタグ セットは、ノードの適格性をさらに制限する可能性があります。

  2. 資格のあるノードのリストが空でない場合、 mongosはどの資格のあるノードが「最も近い」か(平均ネットワーク ラウンド トリップ時間が最も低いノード)を決定し、平均的なラウンドトリップ時間を加算してレイテンシ ウィンドウを計算します。この「最も近い」サーバーとreplication.localPingThresholdMs (または--localThresholdコマンドライン オプション)の 時間 mongosはこのレイテンシ ウィンドウを使用して、適格なメンバーのリストをこのウィンドウに含まれるメンバーに絞り込みます。

  3. レイテンシ ウィンドウ内にある適格なメンバーのこのリストから、 mongosは適格なメンバーをランダムに選択します。 ヘッジされた読み取りを使用する場合、 mongosは 2 番目の適格なメンバーを選択します(使用可能な場合)。

  1. mongosは、資格のあるメンバー(プライマリとセカンダリ)のリストをアセンブルします。 maxStalenessSecondsと読み込み設定(read preference)で指定されるタグ セットは、ノードの適格性をさらに制限する可能性があります。

  2. If the list of eligible members is not empty, the mongos determines which eligible member is the "closest" (i.e. the member with the lowest average network round-trip-time) and calculates a latency window by adding the average round-trip-time of this "closest" server and the replication.localPingThresholdMs (or --localThreshold command line option) [1]. The mongos uses this latency window to pare down the list of eligible members to those members that fall within this window.

  3. レイテンシ ウィンドウ内にある適格なメンバーのこのリストから、 mongosは適格なメンバーをランダムに選択します。 ヘッジされた読み取りを使用する場合、 mongosは 2 番目の適格なメンバーを選択します(使用可能な場合)。

  1. プライマリが使用可能な場合、 mongosはプライマリを選択します。

  2. プライマリが使用できない場合、またはmongosがヘッジされた読み取りを使用している場合、サーバーは読み込み設定(read preference secondaryのプロセスに従います。 ヘッジされた読み取りの場合、

    • プライマリが使用可能な場合、 mongosは適格なセカンダリを 1 つ選択します(使用可能な場合)。

    • プライマリが使用できない場合、 mongosは適格なセカンダリを 2 つ選択します(使用可能な場合)。

  1. 読み込み設定(read preference) secondaryのサーバー選択プロセスに従い、適格なセカンダリ メンバーのリストが空でない場合、 mongosは適格なセカンダリを選択します。 ヘッジされた読み取りを使用している場合、 mongosは別のセカンダリ(使用可能な場合)を選択します。

  2. 資格のあるセカンダリ メンバーのリストが空の場合、またはmongosがヘッジされた読み取りを使用しており、適格なセカンダリが 1 つしか使用できない場合、 mongosはプライマリを選択します。

[1](1, 2) The default threshold value is 15 milliseconds.