忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【知識:システムアーキテクチャ】分散システムの究極の選択「CAP定理」

ネットワークで結ばれた複数のコンピュータでデータを管理する「分散システム」には、同時に満たすことができない3つの性質があります。システム設計におけるトレードオフの原則を理解しましょう。

■ CAP定理を構成する3つの要素

システムがどの性質を優先するかによって、そのシステムの設計思想や採用すべきデータベースが決まります。

要素定義とシステムの振る舞い
C:一貫性(整合性) (Consistency) どのノードからデータを読み取っても、常に最新かつ同一の内容が返ってくること。銀行の残高管理など、データの不一致が許されない処理で最優先されます。
A:可用性 (Availability) 一部のノードに障害が起きても、システム全体が停止せず、常にレスポンスを返すこと。24時間365日の稼働が求められるWebサービスなどで重視されます。
P:分断耐性 (Partition-tolerance) ノード間のネットワークが遮断(分断)されても、システムとして動作を継続できること。物理的に離れた場所にサーバを分散配置するシステムには必須の性質です。

システム設計における「二者択一」

分散システムではネットワーク分断(P)が起こることを前提とするため、実質的には「CP」か「AP」の選択を迫られます。

  • CP型(一貫性 + 分断耐性):データの不一致を防ぐため、分断時は一部の応答を停止する。(例:金融系システム、RDBの強整合性モード)
  • AP型(可用性 + 分断耐性):応答を優先し、データが一時的に古くなることを許容する。(例:SNS、ECサイトの在庫表示、NoSQLの多く)

※この定理は、現代のクラウドサービスやNoSQLデータベースを選定する際の最も基本的な判断基準となっています。


PR