CAP定理
以下の書籍に「CAP定理」について書いてあったので、メモします。
- 作者: Eric Redmond,Jim R. Wilson,角征典
- 出版社/メーカー: オーム社
- 発売日: 2013/02/26
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 56回
- この商品を含むブログ (8件) を見る
CAP定理の"CAP"は以下を表しています。
- 整合性(Consistency):書き込みはアトミックであり、後続のリクエストはその新しい値を検索できる
- 可用性(Availability):データベースは1つのサーバーが動いている限り値を返すことができる
- 分断耐性(Partition tolerance):通信が一時的に中断してネットワーク分断が起きてもシステムが機能する。
分散型データベースは、このなかで同時に2つしか達成できないとされています。
分散型データベースを考えるときには、このCAP定理を考慮するといい。3つのなかでどれを諦めるかを決める必要があるからだ。最終的には、可用性か整合性のいずれかを失うことになる。分断耐性というのは、厳密にはデータベースを分散型にするかどうかというアーキテクチャの決定だ。選択肢を理解するには、CAP定理の理解が不可欠である。
「整合性」と「可用性」についてはわかりにくいですが、この本には分かりやすい例が書いてありました。
あなたはビヨンセの熱狂的ファンだ。日付は2006年9月5日。友達のビーチハウスで、ビヨンセのセカンドアルバムのリリースパーティが開かれることになった。しかし、大きな高波が桟橋を襲い、あなたは海に飲み込まれてしまう。流木にしがみついて、なんとか命は助かった。数日後、無人島にたどりついた。いっさいの通信手段がないので、システム(世界)から分断されてしまったことになる。それから、5年もの月日を過ごすことになった・・・
2011年のある朝のこと、海から聞こえる叫び声で目が覚めた。古びた帆船の船長があなたを発見したのである!この5年間、あなたはずっと1人だった。船長は船首に身を乗り出し、どなるように言った。「ビヨンセのアルバムは何枚だっけ?」
ここで、あなたは決断を迫られる。1つの道は、自分の知る最新の値(ただし5年前の情報)を答えることだ。質問に答えれば、あなたは問い合わせに応答できる(可用性がある)状態だということになる。もう1つの道は、質問に答えないことだ。ずっと隔離されていたので、世間と自分の答えが一致していない(整合性がない)可能性があるからだ。船長は答えを得られないが、世界の整合性は保たれる(船長は家に戻れば正しい答えを得られる)。あなたは問い合わせを受けるノードの立場として、世界のデータの整合性を保つこともできるし、自分の可用性を保つこともできる。しかし、同時に達成できない。
なんて分かりやすい例だ(´Д` )