Docs Menu
Docs Home
/
MongoDB マニュアル
/

デフォルトの MongoDB 読み取り保証(read concern)または書き込み保証(write concern)

項目一覧

  • 読み取り保証(read concern)
  • 書込み保証 (write concern)
  • 因果整合性の保証
読み取り保証 (reading concern)/書込み保証 (write concern)の継承
クリックして拡大します

デフォルト読み取り保証は次のとおりです。

操作
デフォルトの読み取り保証 (read concern)
プライマリに対する読み取り

"local"

注意

  • この読み取り保証 (read concern) は、ロールバックされる可能性のあるデータを返す場合があります。

  • この読み取り保証 (read concern) は因果整合性を保証するものではありません

Reads against secondaries.

"local"

注意

  • この読み取り保証 (read concern) は、ロールバックされる可能性のあるデータを返す場合があります。

  • この読み取り保証 (read concern) は因果整合性を保証するものではありません

注意

以下はトランザクション外で発行された操作に適用されます。

トランザクション内で発行された操作に関連する読み取り保証については、[Operations in Transactions] タブをクリックしてください。

MongoDB ドライバーを使用すると、デフォルトの読み取り保証を上書きし、以下のレベルでの操作の読み取り保証を設定できます。

レベル
説明
クライアント レベル
データベース、コレクション、または操作レベルでより詳細な操作の読み取り保証が設定されていない限り、操作に適用されます。
データベース レベル

コレクション レベルまたは操作レベルで読み取り保証が設定されていない限り、データベースのコレクションに対する操作(クライアント レベルの読み取り保証の上書きなど)に適用されます。

注意

トランザクション内の操作には適用されません。

コレクション レベル

操作レベルで読み取り保証が設定されていない限り、コレクションに対する読み取り操作(データベースまたはクライアントの読み取り保証の上書きなど)に適用されます。

注意

トランザクション内の操作には適用されません。

操作レベル

特定の読み取り操作(データベース、クライアント、またはコレクションの読み取り保証の上書きなど)に適用されます。

操作時に読み取り保証を設定できるかどうかは、ドライバーによって異なります。詳細については、ドライバーのドキュメントを参照してください。

注意

トランザクション内の操作には適用されません。

注意

以下はトランザクション内で発行された操作に適用されます。

トランザクションで発行された操作に関連する読み取り保証については、[Operations outside Transactions] タブをクリックしてください。

MongoDB ドライバーを使用すると、デフォルトの読み取り保証を上書きし、以下のレベルのトランザクションの読み取り保証を設定できます。

レベル
説明
クライアント レベル

セッションまたはトランザクション レベルでより詳細な読み取り保証が設定されていない限り、トランザクションに適用されます。

注意

トランザクション内のすべての操作は、トランザクションの読み取り保証を使用します。つまり、操作、コレクション、またはデータベースレベルで設定された読み取り保証は、トランザクション内では無視されます。

セッション レベル

セッションで開始されたトランザクション( クライアントの読み取り保証の上書きなど)に適用されます。

注意

トランザクション内のすべての操作は、トランザクションの読み取り保証を使用します。つまり、操作、コレクション、またはデータベースレベルで設定された読み取り保証は、トランザクション内では無視されます。

詳細については、「トランザクションと読み取り保証」を参照してください。

トランザクション レベル

特定のトランザクション(クライアントまたはセッションの読み取り保証の上書きなど)に適用されます。

注意

トランザクション内のすべての操作は、トランザクションの読み取り保証を使用します。つまり、操作、コレクション、またはデータベースレベルで設定された読み取り保証は、トランザクション内では無視されます。

詳細については、「トランザクションと読み取り保証」を参照してください。

読み取り保証 (read concern) について詳しくは、「読み取り保証 (read concern)」を参照してください。

読み取り保証 (reading concern)/書込み保証 (write concern)の継承
クリックして拡大します

MongoDB 5.0 以降では、暗黙のデフォルト書込み保証 (write concern)w: majorityです。ただし、アービタを含む配置については、特別な考慮事項があります。

  • レプリカセットの投票権の過半数は、投票ノードの半数に 1 を加え、端数を切り捨てた値です。データを保持する投票ノードの数が投票の過半数を超えない場合、デフォルトの書込み保証 (write concern) は{ w: 1 } になります。

  • その他のすべてのシナリオでは、デフォルトの書込み保証 (write concern) は{ w: "majority" }です。

具体的には、MongoDB では次の式を使用して、デフォルトの書込み保証 (write concern)を決定します。

if [ (#arbiters > 0) AND (#non-arbiters <= majority(#voting-nodes)) ]
defaultWriteConcern = { w: 1 }
else
defaultWriteConcern = { w: "majority" }

たとえば、次の配置とそれぞれのデフォルトの書込み保証 (write concern) について考えてみましょう。

Non-Arbiters
アービタ
投票ノード
投票ノードの過半数
暗黙のデフォルト書込み保証 (write concern)
2
1
3
2
{ w: 1 }
4
1
5
3
{ w: "majority" }
  • 最初の例では、次のようになります。

    • 投票ノードは合計 3 つあり、非アービタ ノードが 2 つ、アービタ ノードが 1 つです。

    • 投票ノードの過半数(1 に 3 の半分を足し、切り捨てた値)は 2 です。

    • 非アービタの数 (2) は、投票ノードの過半数 (2) と等しく、暗黙の書込み保証 (write concern) { w: 1 }になります。

  • 2 番目の例では、次のようになります。

    • 投票ノードは合計 5 つあり、非アービタ ノードが 4 つ、アービタ ノードが 1 つあります。

    • 投票ノードの過半数(1 に 5 の半分を足し、切り捨てた値)は 3 です。

    • 非アービタ数 (4) が投票ノードの過半数(3) よりも多いため、暗黙の書込み保証 (write concern)が { w: "majority" } になります。

注意

以下はトランザクション外で発行された操作に適用されます。

トランザクション内で発行された操作に関連する読み取り保証については、[Operations in Transactions] タブをクリックしてください。

MongoDB ドライバーを使用すると、デフォルトの書込み保証を上書きし、以下のレベルでの操作の書込み保証を設定できます。

レベル
説明
クライアント レベル
操作、データベース、またはコレクションでより詳細な書込み保証が操作に対して設定されていない限り、操作に適用されます。
データベース レベル

コレクション レベルまたは操作レベルで書込み保証が設定されていない限り、データベースのコレクションに対する操作(クライアント レベルの書込み保証の上書きなど)に適用されます。

注意

トランザクション内の操作には適用されません。

コレクション レベル

操作レベルで書込み保証が設定されていない限り、コレクションに対する書込み操作(データベースまたはクライアントの書込み保証の上書きなど)に適用されます。

注意

トランザクション内の操作には適用されません。

操作レベル

特定の書込み操作に適用されます。

操作時に書込み保証を設定できるかどうかは、ドライバーによって異なります。 詳細については、ドライバーのドキュメントを参照してください。

注意

トランザクション内の操作には適用されません。

注意

以下はトランザクション内で発行された操作に適用されます。

トランザクションで発行された操作に関連する読み取り保証については、[Operations outside Transactions] タブをクリックしてください。

MongoDB ドライバーを使用すると、デフォルトの書込み保証を上書きし、以下のレベルでのトランザクションの書込み保証を設定できます。

レベル
説明
クライアント レベル

セッションまたはトランザクション レベルでより詳細なトランザクションの書込み保証が設定されていない限り、トランザクションに適用されます。

トランザクションの書込み保証は、コミット操作とトランザクション内の操作に適用されます。

注意

トランザクション内のすべての操作は、トランザクションの書込み保証を使用します。つまり、操作/コレクション/データベースレベルで設定された書込み保証は、トランザクション内では無視されます。

セッション レベル

書込み保証レベルが特定のトランザクション レベルに設定されていない限り、セッションで開始されたトランザクションに適用されます。

トランザクションの書込み保証は、コミット操作とトランザクション内の操作に適用されます。

注意

トランザクション内のすべての操作は、トランザクションの書込み保証を使用します。つまり、操作/コレクション/データベースレベルで設定された書込み保証は、トランザクション内では無視されます。

トランザクション レベル

特定のトランザクションに適用されます。

トランザクションの書込み保証は、コミット操作とトランザクション内の操作に適用されます。

注意

トランザクション内のすべての操作は、トランザクションの書込み保証を使用します。つまり、操作/コレクション/データベースレベルで設定された書込み保証は、トランザクション内では無視されます。

詳細については、「トランザクションと書込み保証」を参照してください。

利用可能な書込み保証 (write concern) の詳細については、「書込み保証 (write concern)」を参照してください。

因果関係がコンシステントなクライアント セッションでは、クライアント セッションは次の場合にのみ因果整合性を保証します。

  • 関連する読み取り操作が "majority" 読み取り保証 (read concern)を使用し、かつ

  • 関連する書き込み操作には "majority" 書込み保証 (write concern) が使用されます。

戻る

デフォルトポート