デフォルトの MongoDB 読み取り保証(read concern)または書き込み保証(write concern)
読み取り保証(read concern)
デフォルトの読み取り保証 (read concern)
のデフォルトの読み取り保証は次のとおりです。
読み取り保証 (read concern) の指定: MongoDB ドライバー
次の情報は、 トランザクション 外で実行される操作に適用されます。トランザクション内で実行される操作に関連する読み取り保証 (read concern)については、 Operations in Transactions
タブをクリックしてください。
MongoDB ドライバーを使用すると、デフォルトの読み取り保証を上書きし、以下のレベルでの操作の読み取り保証を設定できます。
レベル | 説明 |
---|---|
クライアント レベル | データベース、コレクション、または操作レベルでより詳細な操作の読み取り保証が設定されていない限り、操作に適用されます。 |
データベース レベル | コレクション レベルまたは操作レベルで読み取り保証が設定されていない限り、データベースのコレクションに対する操作(クライアント レベルの読み取り保証の上書きなど)に適用されます。 トランザクション内の操作には適用されません。 |
コレクション レベル | 操作レベルで読み取り保証が設定されていない限り、コレクションに対する読み取り操作(データベースまたはクライアントの読み取り保証の上書きなど)に適用されます。 トランザクション内の操作には適用されません。 |
操作レベル | 特定の読み取り操作(データベース、クライアント、またはコレクションの読み取り保証の上書きなど)に適用されます。 操作時に読み取り保証を設定できるかどうかは、ドライバーによって異なります。詳細については、ドライバーのドキュメントを参照してください。 トランザクション内の操作には適用されません。 |
次の情報は トランザクション 内で実行される操作に適用されます。トランザクション 外 で実行される操作に関連する読み取り保証 (read concern)については、 [ ]Operations outside Transactions
タブをクリックしてください。
MongoDB ドライバーを使用すると、デフォルトの読み取り保証を上書きし、以下のレベルのトランザクションの読み取り保証を設定できます。
レベル | 説明 |
---|---|
クライアント レベル | セッションまたはトランザクション レベルでより詳細な読み取り保証が設定されていない限り、トランザクションに適用されます。 トランザクション内のすべての操作は、トランザクションの読み取り保証 (read concern)を使用します。操作、コレクション、またはデータベースレベルで設定された読み取り保証 (read concern)は、トランザクション内では無視されます。 |
セッション レベル | セッションで開始されたトランザクション( クライアントの読み取り保証の上書きなど)に適用されます。 トランザクション内のすべての操作は、トランザクションの読み取り保証 (read concern)を使用します。操作、コレクション、またはデータベースレベルで設定された読み取り保証 (read concern)は、トランザクション内では無視されます。 詳細については、「トランザクションと読み取り保証」を参照してください。 |
トランザクション レベル | 特定のトランザクション(クライアントまたはセッションの読み取り保証の上書きなど)に適用されます。 トランザクション内のすべての操作は、トランザクションの読み取り保証 (read concern)を使用します。操作、コレクション、またはデータベースレベルで設定された読み取り保証 (read concern)は、トランザクション内では無視されます。 詳細については、「トランザクションと読み取り保証」を参照してください。 |
詳細情報
読み取り保証 (read concern) について詳しくは、「読み取り保証 (read concern)」を参照してください。
書込み保証 (write concern)
デフォルトの書込み保証 (write concern)
MongoDB 5.0 以降では、暗黙のデフォルト書込み保証 (write concern) は w: majority
です。ただし、アービタを含む配置については、特別な考慮事項があります。
レプリカセットの投票権の過半数は、投票ノードの半数に 1 を加え、端数を切り捨てた値です。データを保持する投票ノードの数が投票の過半数を超えない場合、デフォルトの書込み保証 (write concern) は
{ w: 1 }
になります。その他のすべてのシナリオでは、デフォルトの書込み保証 (write concern) は
{ w: "majority" }
です。シャーディングされたクラスターの場合、デフォルトの書込み保証 (write concern) は常に コンフィギュレーションサーバーから取得されます。 コンフィギュレーションサーバーはゼロのアービタである必要があるため、シャーディングされたクラスターの暗黙のデフォルト書込み保証 (write concern) は常に
"majority"
になります。 シャードがプライマリ-セカンダリ-アービタ トポロジー内にある場合でも、"majority"
のデフォルトの書込み保証 (write concern) はあります。 MongoDB 5.1 以降では、クラスター全体の 書込み保証 (write concern) が設定されていない場合、この構成は許可されません。
具体的には、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" }
になります。
書込み保証 (write concern) の指定: MongoDB ドライバー
次の情報は、 トランザクション 外で実行される操作に適用されます。トランザクション内で実行される操作に関連する読み取り保証 (read concern)については、 Operations in Transactions
タブをクリックしてください。
MongoDB ドライバーを使用すると、デフォルトの書込み保証を上書きし、以下のレベルでの操作の書込み保証を設定できます。
レベル | 説明 |
---|---|
クライアント レベル | 操作、データベース、またはコレクションでより詳細な書込み保証が操作に対して設定されていない限り、操作に適用されます。 |
データベース レベル | コレクション レベルまたは操作レベルで書込み保証が設定されていない限り、データベースのコレクションに対する操作(クライアント レベルの書込み保証の上書きなど)に適用されます。 トランザクション内の操作には適用されません。 |
コレクション レベル | 操作レベルで書込み保証が設定されていない限り、コレクションに対する書込み操作(データベースまたはクライアントの書込み保証の上書きなど)に適用されます。 トランザクション内の操作には適用されません。 |
操作レベル | 特定の書込み操作に適用されます。 操作時に書込み保証を設定できるかどうかは、ドライバーによって異なります。 詳細については、ドライバーのドキュメントを参照してください。 トランザクション内の操作には適用されません。 |
次の情報は トランザクション 内で実行される操作に適用されます。トランザクション 外 で実行される操作に関連する読み取り保証 (read concern)については、 [ ]Operations outside Transactions
タブをクリックしてください。
MongoDB ドライバーを使用すると、デフォルトの書込み保証を上書きし、以下のレベルでのトランザクションの書込み保証を設定できます。
レベル | 説明 |
---|---|
クライアント レベル | セッションまたはトランザクション レベルでより詳細なトランザクションの書込み保証が設定されていない限り、トランザクションに適用されます。 トランザクションの書込み保証は、コミット操作とトランザクション内の操作に適用されます。 トランザクション内のすべての操作は、トランザクションの書込み保証( 書込み保証 (write concern) )を使用します。操作、コレクション、またはデータベースレベルで設定された書込み保証 (write concern)は、トランザクション内では無視されます。 |
セッション レベル | 書込み保証レベルが特定のトランザクション レベルに設定されていない限り、セッションで開始されたトランザクションに適用されます。 トランザクションの書込み保証は、コミット操作とトランザクション内の操作に適用されます。 トランザクション内のすべての操作は、トランザクションの書込み保証( 書込み保証 (write concern) )を使用します。操作、コレクション、またはデータベースレベルで設定された書込み保証 (write concern)は、トランザクション内では無視されます。 |
トランザクション レベル | 特定のトランザクションに適用されます。 トランザクションの書込み保証は、コミット操作とトランザクション内の操作に適用されます。 トランザクション内のすべての操作は、トランザクションの書込み保証( 書込み保証 (write concern) )を使用します。操作、コレクション、またはデータベースレベルで設定された書込み保証 (write concern)は、トランザクション内では無視されます。 |
詳細については、「トランザクションと書込み保証」を参照してください。
詳細情報
利用可能な書込み保証 (write concern) の詳細については、「書込み保証 (write concern)」を参照してください。
因果整合性の保証
因果関係がコンシステントなクライアント セッションでは、クライアント セッションは次の場合にのみ因果整合性を保証します。
関連する読み取り操作が
"majority"
読み取り保証 (read concern)を使用し、かつ関連する書き込み操作には
"majority"
書込み保証 (write concern) が使用されます。