わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

ビヨンセに学ぶCAP定理

CAPの冒険:第1部「CAP」
世界が巨大な分散データベースシステムであると想像してほしい。どの土地にもさまざまなトピックに関する情報が保管されており、人またはテクノロジーの近くにいるかぎり、あなたは質問の答えを探すことができる。
あなたはビヨンセの熱狂的なファンだ。日付は2006年9月5日。友達のビーチハウスで、ビヨンセのセカンドアルバムのリリースパーティが開かれることになった。しかし、大きな高波が桟橋を襲い、あなたは海に飲み込まれてしまう。流木にしがみついて、なんとか命は助かった。数日後、無人島にたどりついた。いっさいの通信手段がないので、システム(世界)から分断されてしまったことになる。それから、5年もの月日を過ごすことになった……。
2011年のある朝のこと、海から聞こえる叫び声で目が覚めた。古びた帆船の船長があなたを発見したのである! この5年間、あなたはずっと1人だった。船長は船首に身を乗り出し、どなるように言った。「ビヨンセのアルバムは何枚だっけ?」
ここで、あなたは決断を迫られる。1つの道は、自分の知る最新の値(ただし5年前の情報)を答えることだ。質問に答えれば、あなたは問い合わせに応答できる(可用性がある)状態だということになる。もう1つの道は、質問に答えないことだ。ずっと隔離されていたので、世間と自分の答えが一致していない(整合性がない)可能性があるからだ。船長は答えを得られないが、世界の整合性は保たれる(船長は家に戻れば正しい答えを得られる)。あなたは問い合わせを受けるノードの立場として、世界のデータの整合性を保つこともできるし、自分の可用性を保つこともできる。しかし、それらを同時には達成できない
(『7つのデータベース 7つの世界』pp.293-294)

そのタイミングで「ビヨンセのアルバムは何枚」かいな.バスの中で,笑いながら読みました.
さて,CAP定理のCはConsistency,AはAvailability,Pは…思い出せないんで本を読み直すと,Partition torelance.日本語にすると「一貫性」「可用性*1」「分断耐性」.wikipedia:CAP定理も,同じ用語でした.
分散システムはC,A,Pのすべてを満たすことができないというのがCAP定理です.同書で取り上げた「7つのデータベース」がどうなっているか,p.295で整理されています.

  • Redis・PostgreSQL・Neo4jは,非分散型システムだけれどあえて当てはめるならCA*2
  • MongoDB・HBaseはCP
  • CouchDBはAP
  • RiakはリクエストごとにCPとAPを選択可能
  • 設定によるところもある(MongoはCAになれるし,CouchDBはCPになれる)

長くなるので引用しませんでしたが,CAPの冒険:第2部「結果整合性」も,面白い話でした.
ビヨンセが出てくるのは,CAP定理→ブリュワーの定理(Brewer's theorem)→Bから始まるもの→ビヨンセ(Beyoncé),で合っているでしょうか.

*1:悲しい「可用性」

*2:ConsitencyとAvailabilityを満たすということの簡略表記です.「CP」「AP」も同様です.