データベーススペシャリスト – CAP定理(ブリュワー定理)
IT業界そこそこ長いんですが、さっぱりわからないCAP定理について学んでみる。

いまの僕の脳内では帽子しかないです、やや申し訳ない。
Contents
CAP定理とは(Wikipedia Ver)
CAP定理はブリュワーの定理とも呼ばれ、分散コンピュータシステムのマシン間の情報複製に関する定理。
ウェブサービスを想定して作られた定理。
ノード間のデータ複製において、同時に次の3つの保証を提供することはできない。
一貫性 (Consistency)
すべてのデータ読み込みにおいて、最新の書き込みデータもしくはエラーのどちらかを受け取る。
可用性 (Availability)
ノード障害により生存ノードの機能性は損なわれない。
つまり、ダウンしていないノードが常に応答を返す。
単一障害点が存在しないことが必要。
分断耐性 (Partition-tolerance)
システムは任意の通信障害などによるメッセージ損失に対し、継続して動作を行う。
通信可能なサーバーが複数のグループに分断されるケース(ネットワーク分断)を指し、1つのハブに全てのサーバーがつながっている場合は、これは発生しない。
ただし、そのようなネットワーク設計は単一障害点をもつことになり、可用性が成立しない。
RDBではそもそもデータベースを分割しないので、このような障害とは無縁である。
※上記はWikipediaのCAP定理からの引用になります。

CAP定理とは(自分Ver)
3つ性質があって3つ同時には満たせないということですね。
一貫性 (Consistency)
データを読み込むとき、最新データを読み込むかエラーが返ってくるかどちらかになる性質です。
可用性 (Availability)
データテーブルに障害が発生しても、障害が発生してないデータテーブルが結果を返します。
分断耐性 (Partition-tolerance)
データベースが分割しておいてあって、ネットワーク障害があった場合も動作は継続します。
リレーショナル・データベースは分割しない単一のDBなので、分断耐性は関係ないです。

3つ同時に満たせない理由
最新のデータを返すかエラーという一貫性を担保しようとします。
障害が発生してない(古い)データテーブルからデータを取ってくる仕組みだと、矛盾することがあると思います。
たぶんそういうことと思います(たぶんかい)。

完全に理解してなくても仕事はできると思うので、雰囲気だけ理解してめげずにがんばっていこう。涙
ディスカッション
コメント一覧
まだ、コメントがありません