ikemonn's blog

技術ネタをちょこちょこと

Session Guarantees for Weakly Consistent Replicated Data を読んだ

Session Guarantees for Weakly Consistent Replicated Data を読んだ時のメモ。

どんなもの?

  • weak consistencyのread-any, write-anyの特性を活かしつつも、ある1つのクライアントからは一貫性があるように見えるようにしたもの
    • モバイル端末のユーザはread/writeで別のサーバに接続しに行く時があるので、従来のweak consistencyではinconsistencyに気づく可能性があった
    • 下記の4つのモデルがポイント
      • Read Your Writes
      • Monotonic Reads
      • Writes Follow Reads
      • Monotonic Writes

先行研究とくらべて何がすごい?

  • atomic transactionとは異なる
    • sessionという概念の導入
      • アプリケーションが実行する、ひとつづきのread/writeを抽象化したもの
    • 複数のサーバに接続先が切り替わっても大丈夫

技術や手法の肝は?

  • Read Your Writes
    • 同一セッション内であれば、以前に行われた全てのwriteの結果をreadできる
      • 「DBを更新したあとすぐに書き込んだ値を読めるか」という、ユーザやアプリケーションを悩ませる問題にモチベートされた
    • 例) Webサービスで、パスワードを変更したあとすぐに新しいパスワードでログインしようとすると、データの更新が伝播されていない場合にログインできない時がある
      • ログインプロセスが新しいパスワードに更新される前のサーバと通信したから
      • Read Your Writesが担保されていると、パスワード更新後に別のサーバにつなぎに行っても新しいパスワードでログインできる
  • Monotonic Read
    • 同一セッション内で、あるプロセスがreadした後に、再度readをすると前回と同じかそれより新しいデータをreadすることができる
    • 例) 分散DBを利用しているメールシステムで、あるメールを読んだ後にreloadして別のサーバに繋ぎにいっても、前回読んだメールは全て読める
  • Write Follow Reads
    • 同一セッション内で、あるreadに後続するwriteは、前回のread時に取得した値かそれより新しい値に対して行われる
    • 例) 掲示板の書き込みで、前回読み込んだ記事への返信を書き込む場合、別のサーバにアクセスしても、その記事が読み込める限り返信が書き込まれている

どうやって有効と検証した?

議論はある?

  • session guaranteeを導入することで、可用性を損なう可能性がある
    • 実用上は問題なさそう

次に読むべき論文は?

Coda: A Highly Available File System for aDistributed Workstation Environment