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

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

項目一覧

  • 操作
  • 読み取り保証(read concern) とトランザクション
  • 読み取り保証(read concern) と atClusterTime
  • Cappedコレクションに関する 読み取り保証 (read concern)

バージョン 5.0 での変更

読み取り保証"snapshot"を指定したクエリでは、直近の特定の点のシャード全体に表示れる、過半数のコミット済みデータが返されます。 読み取り保証"snapshot"は、トランザクションが書込み保証 "majority"でコミットされた場合にのみ保証を提供します。

読み取り保証"snapshot"は、マルチドキュメントトランザクションと MongoDB 5.0 以降では、マルチドキュメントトランザクション外の特定の読み取り操作で使用できます。

  • トランザクションが因果関係がコンシステントなセッションの一部でない場合、書込み保証"majority"によるトランザクションのコミット時に、トランザクション操作は、大多数がコミットされたデータのスナップショットから読み取られることが保証されます。

  • トランザクションが因果関係がコンシステントなセッションの一部である場合、書込み保証"majority"によるトランザクションのコミット時に、トランザクション操作は、トランザクションの開始直前の操作との因果整合性を提供する、大多数がコミットされたデータのスナップショットから読み取られることが保証されます。

マルチドキュメントトランザクション以外では、読み取り保証 "snapshot"は、次の読み取り操作のプライマリとセカンダリで使用できます。

他のすべての読み取りコマンドは、 "snapshot"を禁止しています。

読み取り保証を受け入れるすべての操作のリストについては、「読み取り保証をサポートする操作 」を参照してください。

マルチドキュメントトランザクションは、読み取り保証"snapshot"だけでなく、 "local""majority"もサポートします。

注意

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

バージョン 5.0 で追加

マルチドキュメントトランザクション以外では、読み取り保証(read concern) "snapshot"を使用する読み取りは任意のパラメータatClusterTimeをサポートします。 パラメーターatClusterTimeを使用すると、読み取りのタイムスタンプを指定できます。 指定されたatClusterTimeの T で読み取りリクエストを満たすには、 mongodは T 時に利用可能なデータに基づいてリクエストを実行します。

操作のoperationTimeまたはclusterTimeは、 db.runCommand()の応答またはSession()オブジェクトから取得できます。

次のコマンドは、読み取り保証(read concern "snapshot"を使用して検索操作を実行し、この操作がクラスター時間Timestamp(1613577600, 1)にスナップショットからデータを読み取る必要があることを指定します。

db.runCommand( {
find: "restaurants",
filter: { _id: 5 },
readConcern: {
level: "snapshot",
atClusterTime: Timestamp(1613577600, 1)
},
} )

パラメータatClusterTimeが指定されていない場合、 mongos 、または単一ノード レプリカセットではmongodは、最新の 過半数がコミットしたスナップショット のタイムスタンプをatClusterTimeとして選択し、それをクライアントに返します。

トランザクション以外では、 "snapshot"の読み取りは、過半数がコミットされたデータから読み取られることが保証されます。

バージョン5.0 以降、"snapshot" Capped コレクションから読み取るときに読み取り保証 を使用できません。

戻る

「線形化可能」