Consitent Hashing

steps to phantasien

普通のデータベースは書込みのタイミングで一貫性を保証しようとし, 衝突があった場合はその書込み要求を拒否する. 一方の Dynamo は "always writable" という目標を持っており, 書き込みの失敗は許されない. だから衝突のあるデータも一度ストレージに保存する.

衝突を解決するのは, そのデータを読み出したクライアントの仕事になる. クライアントが衝突のあるキーを読み出すと, 一つの値が返ってくるかわりに衝突を解決すべき値のリストが返ってくる. クライアントはアプリケーションに応じた方法でその二つをマージし, 解決済みデータとしてキーに書き込む. こうしてようやく (eventually) 一貫性が回復する. write の面倒を read に転嫁するわけね.

dynamo論文を読む際の参考にする。