【りーどゆあらいついっかんせい】

Read-Your-Writes一貫性 とは?

最終更新:
💡 自分の書き込みを、次の読み取りに反映する

同じセッションの読み取りに、それ以前の自分の書き込みを反映させる保証。複製の遅れ、セッショントークン、全利用者の最新状態とは異なることを解説します。

📌 このページのポイント
Read Your Writes:保存した変更を読む1 プロフィール保存ひよこ名前を更新書き込みの完了確認2 同じセッションひよこ読み直す更新を反映した状態この例では「ひよこ」が返る後から別の更新がない場合ほかの利用者・別セッションは別の保証自分の過去の値を固定する保証ではない待ち時間ゼロや全複製への同時反映ではない
矢印は同じセッションで保存後に読み取る操作順です。その後に更新や削除があれば結果は変わり、セッションの範囲や引き継ぎ方も実装によります。
ひよこ ひよこ
プロフィールを保存したのに、読み直すと古い名前になった。
ペンギン先生 ペンギン先生
読み取り先の複製に、変更がまだ届いていない可能性があるよ。Read Your Writesは、同じセッションの読み取りに、それ以前の自分の書き込みが反映されるようにする保証なんだ。
ひよこ ひよこ
保存したら、全員の画面ですぐ新しくなる?
ペンギン先生 ペンギン先生
保証の対象はそのセッションだよ。ほかの利用者や、別のセッションで読む端末まで同時に新しくなるとは限らない。全利用者の最新状態を保証する話とは分けて考えよう。
ひよこ ひよこ
自分が書いた文字は、必ずそのまま返ってくる?
ペンギン先生 ペンギン先生
その後に別の更新や削除があれば、結果が変わることもあるよ。自分の書き込みを含む状態から読む保証で、過去に書いた値を固定して返す保証ではないんだ。
ひよこ ひよこ
必ず書き込み先のサーバーから読むの?
ペンギン先生 ペンギン先生
それは実現方法の一つだけだよ。Azure Cosmos DBのSession整合性では、書き込みで得たセッショントークンを読み取りに使う。条件を満たさない複製なら別の複製などへ再試行するので、常にプライマリだけから読む仕組みではない。
ひよこ ひよこ
セッションは、ログインしている人と同じ意味?
ペンギン先生 ペンギン先生
一致するとは限らないよ。アプリやデータベースが決める範囲だ。Cosmos DBではトークンはパーティションに対応し、クライアントを作り直してトークンを失う場合にも注意が必要だ。同じアカウントというだけで保証が引き継がれるとは考えないようにしよう。
もっと詳しく知りたい人へ

即座に読み取りが成功する保証もある?

一貫性の保証と、応答時間や可用性は別です。条件を満たす複製を待つ、別の読み取り先へ再試行する、保証できない場合に失敗を通知する、といった動作が必要になる場合があります。実際の製品の仕様を確認します。

この保証があれば、キャッシュも気にしなくてよい?

データベース側の保証だけで、ブラウザーやCDNなどの古いキャッシュまで自動的に更新されるわけではありません。アプリがどの経路で読み、どのセッション情報を渡すか、キャッシュの更新も含めて確認します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Read Your Writes」って出てきたら「同じセッションで行った書き込みを、その後の読み取りに反映させる保証」と思えばだいたいOK!全利用者が同じ最新値を見る保証とは違うよ。
📖 おまけ:英語の意味
「Read Your Writes」 = 自分の書き込みを読む
💬 Terryらの1994年の論文では、弱い一貫性の複製データに対するセッション保証の一つとして説明されています。セッションの作り方や共有の仕方は実装によります。

参考資料

← 用語集にもどる