データベースの基礎
複数のサーバにデータの複製を置く分散データベースについての、CAP定理の説明として適切なものはどれか。
- Aサーバ間のネットワークが分断されたときには、どのサーバから読んでも最新の値が返る一貫性と、すべての要求に応答する可用性を、同時には完全に満たせない
- B一貫性、可用性、分断耐性の3つは、適切に設計すれば常に同時に満たせる
- C分断耐性とは、サーバ間のネットワークが分断されないように、回線を二重化することをいう
答えと解説を見る
正解:A. サーバ間のネットワークが分断されたときには、どのサーバから読んでも最新の値が返る一貫性と、すべての要求に応答する可用性を、同時には完全に満たせない
CAP定理は、分散したデータベースが、一貫性(Consistency: どのサーバから読んでも最新の書き込みの結果が返る)、可用性(Availability: 故障していないサーバは、すべての要求に応答を返す)、分断耐性(Partition tolerance: サーバ間の通信が途絶えても、システムとして動き続ける)の3つを、同時にすべて完全には満たせないことを示したものです。ネットワークの分断は現実には避けられないので、要点は、分断が起きたときに、一貫性を優先して一部の要求への応答を止めるか、可用性を優先して古い値を返すことを許して応答を続けるかを選ぶ必要がある、ということです。分断が起きていないときは、一貫性と可用性の両方を満たせます。NoSQLの製品には、可用性を優先し、時間がたてば複製がそろう結果整合性を採用するものが多くあります。分断耐性は回線を二重化することではなく、分断が起きても動作を続ける性質のことです。
- A. 正しい。分断が起きたときは、一貫性と可用性のどちらを優先するかを選ぶ必要があります。
- B. CAP定理は、3つを同時にすべて完全には満たせないことを示しています。
- C. 分断耐性は、分断が起きても動き続ける性質のことで、分断を防ぐ仕組みではありません。