読み取り保証(read concern) "local"
読み取り保証(read concern "local"
を指定したクエリは インスタンスからデータを返しますが、そのデータがレプリカセットのノードの大半に書き込まれた(つまり、ロールバックされる可能性がある)という保証はありません。
読み取り保証"local"
は、プライマリとセカンダリに対する読み取り操作のデフォルトです。
読み取り保証のレベルを問わず、ノード上の最新データにシステム内のデータの最新バージョンが反映されていない場合があります。
可用性
読み取り保証 "local"
は、因果整合性を持つセッションやトランザクションの有無にかかわらず使用できます。
ローカルとトランザクションの読み取り保証
読み取り保証 (read concern) は、個々の操作レベルではなく、トランザクション レベルで設定します。トランザクションに読み取り保証 (read concern) を設定するには、「トランザクションと読み取り保証 (read concern)」を参照してください。
トランザクション内でコレクションとインデックス を作成できます。 コレクションまたはインデックスを明示的に作成する場合、トランザクションは読み取り保証"local"
を使用する必要があります。 コレクションを暗黙的に 作成する場合は、トランザクションに使用できる任意の読み取り保証を使用できます。
レプリカセットでは、トランザクションが読み取り保証local
を使用している場合でも、トランザクションが開かれた時点でのスナップショットから操作が読み取られる場合、より強力な読み取り分離が見られる可能性があります。
例
次の書込み (write) 操作のタイムラインを考えてみましょう。3 つのノードからなるレプリカセットに Write 0 します。
注意
単純化のため、この例では次のことを前提としています。
Write 0 より前のすべての書込みは、すべてのノードに正常にレプリケーションされました。
Write prev は Write 0 の前の書込みです。
Write 0 の後、他の書込みは発生していません。
時間 | イベント | 最新の書込み | 直近の w: "majority" 書込み |
---|---|---|---|
t 0 | プライマリが Write 0 を適用 | Primary: Write 0 Secondary 1: Write prev Secondary 2: Write prev | Primary: Write prev Secondary 1: Write prev Secondary 2: Write prev |
t 1 | セカンダリ 1 が Write 0 を適用 | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write prev | Primary: Write prev Secondary 1: Write prev Secondary 2: Write prev |
t 2 | セカンダリ 2 が Write 0 を適用 | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write 0 | Primary: Write prev Secondary 1: Write prev Secondary 2: Write prev |
t 3 | プライマリがセカンダリ1へのレプリケーション成功を認識し、クライアントに確認応答を送信 | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write 0 | Primary: Write 0 Secondary 1: Write prev Secondary 2: Write prev |
t 4 | プライマリがセカンダリ2 へのレプリケーション成功を認識 | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write 0 | Primary: Write 0 Secondary 1: Write prev Secondary 2: Write prev |
t 5 | セカンダリ 1 が(定期的なレプリケーションを通じて)最新の w: " majority " 書込みのスナップショットを更新するよう通知を受信 | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write 0 | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write prev |
t 6 | セカンダリ 2 が(定期的なレプリケーションを通じて)最新の w: " majority " 書込みのスナップショットを更新するよう通知を受信 | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write 0 | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write 0 |
次に、次の表は、 "local"
読み取り保証(read concern)を持つ読み取り操作に表示されるデータの状態をまとめたものです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 を反映 |