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

読み取り保証 (read concern) "majority" (読み取り保証 "majority")

"majority"

マルチドキュメントトランザクションに関連しない読み取り操作の場合、読み取り保証 (read concern) "majority" は、読み取られたデータがレプリカセットの過半数によって確認済みであることを保証します。読み取られたドキュメントは永続的であり、ロールバックされないことが保証されます。

マルチドキュメントトランザクション での操作では、読み取り保証 (read concern) は、トランザクションが書込み保証"majority" (write concern) ) "majority" でコミットされる場合にのみ保証を提供します。それ以外の場合、"majority" 読み取り保証 (read concern)では、トランザクションで読み取られるデータについて保証されません。

読み取り保証のレベルを問わず、ノード上の最新データにシステム内のデータの最新バージョンが反映されていない場合があります。

プライマリに障害が発生した場合の詳細については、「自動フェイルオーバー」を参照してください。

レプリカセットの各ノードは、メモリ内にマジョリティ コミット ポイントのデータのビューを保持します。マジョリティ コミット ポイントはプライマリによって計算されます。読み取り保証 "majority" を満たすために、ノードはこのビューからデータを返しますが、パフォーマンスは他の読み取り保証と同等です。

読み取り保証 (read concern) "majority" はクエリのパフォーマンスを低下させません。クライアントに返されるもののみを変更します。読み取り保証 "majority" では、レプリカセット内の過半数のノードに永続的に保存されているデータのみがクライアントに返されます。対照的に、読み取り保証 (read concern) "local" のクエリでは、ロールバックなどの特定のシナリオで失われる可能性のあるデータを返す場合があります。

読み取り保証"majority" は、因果整合性を持つセッションやトランザクションの有無にかかわらず使用できます。

警告

3 ノードのプライマリセカンダリアービタ(PSA)アーキテクチャを使用している場合は、次の点を考慮してください。

  • セカンダリが使用できないか、遅延している場合、書込み保証 (write concern) "majority" が原因でパフォーマンスの問題が発生することがあります。こうした問題を軽減する方法については、「自己管理型 PSA レプリカセットのパフォーマンス問題の軽減」を参照してください。

  • グローバルデフォルト"majority" を使用しており、書込み保証 (write concern)が過半数のサイズより小さい場合、クエリは古い(完全には複製されていない)データを返すことがあります。

次の書込み (write) 操作のタイムラインを考えてみましょう。3 つのノードからなるレプリカセットに Write 0 します。

注意

単純化のため、この例では次のことを前提としています。

  • Write 0 より前のすべての書込みは、すべてのノードに正常にレプリケーションされました。

  • Write prev は Write 0 の前の書込みです。

  • Write 0 の後、他の書込みは発生していません。

3 つのノードからなるレプリカセットへの書込み操作のタイムライン
時間
イベント
最新の書込み
直近の w: "majority" 書込み

t 0

プライマリが Write 0 を適用

プライマリ: Write0
1セカンダリ: Write prev
2セカンダリ: Write prev

プライマリ: Write prev
1セカンダリ: Write prev
2セカンダリ: Write prev

t 1

セカンダリ 1 が Write 0 を適用

プライマリ: Write0
1セカンダリ: Write0
2セカンダリ: Write prev

プライマリ: Write prev
1セカンダリ: Write prev
2セカンダリ: Write prev

t 2

セカンダリ 2 が Write 0 を適用

プライマリ: 書き込み0
1セカンダリ: 書き込み0
2セカンダリ: 書き込み0

プライマリ: Write prev
1セカンダリ: Write prev
2セカンダリ: Write prev

t 3

プライマリがセカンダリ1へのレプリケーション成功を認識し、クライアントに確認応答を送信

プライマリ: 書き込み0
1セカンダリ: 書き込み0
2セカンダリ: 書き込み0

プライマリ: Write0
1セカンダリ: Write prev
2セカンダリ: Write prev

t 4

プライマリがセカンダリ2 へのレプリケーション成功を認識

プライマリ: 書き込み0
1セカンダリ: 書き込み0
2セカンダリ: 書き込み0

プライマリ: Write0
1セカンダリ: Write prev
2セカンダリ: Write prev

t 5

セカンダリ 1 が(定期的なレプリケーションを通じて)最新の w: " majority " 書込みのスナップショットを更新するよう通知を受信

プライマリ: 書き込み0
1セカンダリ: 書き込み0
2セカンダリ: 書き込み0

プライマリ: Write0
1セカンダリ: Write0
2セカンダリ: Write prev

t 6

セカンダリ 2 が(定期的なレプリケーションを通じて)最新の w: " majority " 書込みのスナップショットを更新するよう通知を受信

プライマリ: 書き込み0
1セカンダリ: 書き込み0
2セカンダリ: 書き込み0

プライマリ: 書き込み0
1セカンダリ: 書き込み0
2セカンダリ: 書き込み0

次に、次の表は、 読み取り保証 (read"majority" concern)を持つ読み取り操作に表示されるデータの状態をまとめたものです。T の時点での読み取り操作。

3 つのノードからなるレプリカセットへの書込み (write) 操作のタイムライン。
読み取りの対象
時間 T
データの状態

原発

t 3 より前

データは Write prev を反映

原発

t 3 より後

データは Write 0 を反映

セカンダリ 1

t 5 より前

データは Write prev を反映

セカンダリ 1

t 5 より後

データは Write 0 を反映

セカンダリ 2

t 6 以前

データは Write prev を反映

セカンダリ 2

t 6 より後

データは Write 0 を反映

"majority"読み取り保証 はWiredTigerストレージエンジンで使用できます。

Tip

serverStatus コマンドは、ストレージエンジンが "majority" 読み取り保証をサポートしているかどうかを示す storageEngine.supportsCommittedReads フィールドを返します。

注意

読み取り保証 (read concern) は、個々の操作レベルではなく、トランザクション レベルで設定します。トランザクションに読み取り保証 (read concern) を設定するには、「トランザクションと読み取り保証 (read concern)」を参照してください。

マルチドキュメントトランザクション での操作では、読み取り保証 (read concern) は、トランザクションが書込み保証"majority" (write concern) ) "majority" でコミットされる場合にのみ保証を提供します。それ以外の場合、"majority" 読み取り保証 (read concern)では、トランザクションで読み取られるデータについて保証されません。

ステージを含む集計に対して、読み取り保証(read"majority" $outconcern)レベル を指定できます。

書き込みリクエスト確認をする場合は、非公式のコンシステントセッションを使用して自分の書き込みを読み取ることができます。

MongoDB 5.0 以降では、ストレージエンジンの改善により、enableMajorityReadConcern--enableMajorityReadConcern は変更できなくなり、常にtrue に設定されています。

MongoDB の以前のバージョンでは、enableMajorityReadConcern--enableMajorityReadConcern を構成可能であり、これらを false に設定して、ストレージ キャッシュの負荷が 3 つのノードからなるプライマリとセカンダリのアービタ(PSA)アーキテクチャで配置が固定されないようにできます。

3 ノードのプライマリセカンダリアービタ(PSA)アーキテクチャを使用している場合は、次の点を考慮してください。

  • セカンダリが使用できないか、遅延している場合、書込み保証 (write concern) "majority" が原因でパフォーマンスの問題が発生することがあります。こうした問題を軽減する方法については、「自己管理型 PSA レプリカセットのパフォーマンス問題の軽減」を参照してください。

  • グローバルデフォルト"majority" を使用しており、書込み保証 (write concern)が過半数のサイズより小さい場合、クエリは古い(完全には複製されていない)データを返すことがあります。