読み取り保証(read concern "local"を指定したクエリは インスタンスからデータを返しますが、そのデータがレプリカセットのノードの大半に書き込まれた(つまり、ロールバックされる可能性がある)という保証はありません。
読み取り保証"local"は、プライマリとセカンダリに対する読み取り操作のデフォルトです。
読み取り保証のレベルを問わず、ノード上の最新データにシステム内のデータの最新バージョンが反映されていない場合があります。
可用性
Read concern "local" is available for use with or without causally consistent sessions and transactions.
ローカルとトランザクションの読み取り保証
読み取り保証 (read concern) は、個々の操作レベルではなく、トランザクション レベルで設定します。トランザクションに読み取り保証 (read concern) を設定するには、「トランザクションと読み取り保証 (read concern)」を参照してください。
You can create collections and indexes inside a transaction. If explicitly creating a collection or an index, the transaction must use read concern "local". If you implicitly create a collection, you can use any of the read concerns available for transactions.
レプリカセットでは、トランザクションが読み取り保証localを使用している場合でも、トランザクションが開かれた時点でのスナップショットから操作が読み取られる場合、より強力な読み取り分離が見られる可能性があります。
例
次の書込み (write) 操作のタイムラインを考えてみましょう。3 つのノードからなるレプリカセットに Write 0 します。
注意
単純化のため、この例では次のことを前提としています。
Write 0 より前のすべての書込みは、すべてのノードに正常にレプリケーションされました。
Write prev は Write 0 の前の書込みです。
Write 0 の後、他の書込みは発生していません。
時間 | イベント | 最新の書込み | 直近の w: "majority" 書込み |
|---|---|---|---|
t 0 | プライマリが Write 0 を適用 | プライマリ: Write0 | プライマリ: Write prev |
t 1 | セカンダリ 1 が Write 0 を適用 | プライマリ: Write0 | Primary: Write prev |
t 2 | セカンダリ 2 が Write 0 を適用 | プライマリ: 書き込み0 | Primary: Write prev |
t 3 | プライマリがセカンダリ1へのレプリケーション成功を認識し、クライアントに確認応答を送信 | Primary: Write 0 | Primary: Write 0 |
t 4 | プライマリがセカンダリ2 へのレプリケーション成功を認識 | Primary: Write 0 | Primary: Write 0 |
t 5 | セカンダリ 1 が(定期的なレプリケーションを通じて)最新の w: " majority " 書込みのスナップショットを更新するよう通知を受信 | Primary: Write 0 | Primary: Write 0 |
t 6 | セカンダリ 2 が(定期的なレプリケーションを通じて)最新の w: " majority " 書込みのスナップショットを更新するよう通知を受信 | Primary: Write 0 | Primary: Write 0 |
Then, the following tables summarizes the state of the data that a read operation with "local" read concern would see at time T.
読み取りの対象 | 時間 T | データの状態 |
|---|---|---|
原発 | t 0より後 | データは Write 0を反映します。 |
セカンダリ 1 | t 1より前 | データは Write prev を反映 |
セカンダリ 1 | t 1 より後 | データは Write 0 を反映 |
セカンダリ 2 | t 2より前 | データは Write prev を反映 |
セカンダリ 2 | t 2より後 | データは Write 0 を反映 |