Jet School Logo

Что такое CAP Теорема?

CAP Теорема — это фундаментальная концепция в распределённых системах и базах данных, которая формулирует ограничения, с которыми сталкиваются разработчики при проектировании таких систем. Теорему выдвинул в 2000 году учёный Эрик Брюер (Eric Brewer), а в 2002 году исследователи MIT Сет Гилберт и Нэнси Линч доказали её математически.

Название «CAP» происходит от трёх ключевых свойств, которые система может обеспечить:

  • Consistency (Согласованность)
  • Availability (Доступность)
  • Partition Tolerance (Устойчивость к разделению сети)

Что означает каждое свойство?

Consistency (Согласованность)

Каждый запрос на чтение возвращает либо последнее записанное значение, либо ошибку. То есть все узлы системы видят одни и те же данные одновременно, и устаревшие данные никогда не возвращаются.

Availability (Доступность)

Каждый запрос к работающему узлу системы получает ответ без ошибки — однако без гарантии того, что этот ответ содержит самые последние данные.

Partition Tolerance (Устойчивость к разделению сети)

Система продолжает работать, даже если произошёл сбой связи между некоторыми узлами сети — то есть когда часть серверов не может связаться друг с другом.

Основная идея CAP теоремы

В распределённой системе невозможно одновременно гарантировать все три свойства — Consistency, Availability и Partition Tolerance. В больших системах сетевые разделения неизбежны, поэтому в момент разделения приходится выбирать между согласованностью и доступностью.

Пример выбора

  • CP (Consistency + Partition Tolerance): при сетевом разделении система не отвечает на часть запросов или возвращает ошибку, но не отдаёт устаревшие данные. Примеры: MongoDB, HBase. Такой подход подходит для систем, где важна точность, например для банковских операций.
  • AP (Availability + Partition Tolerance): система всегда отвечает, но данные могут быть временно несогласованными и синхронизируются позже («eventual consistency»). Примеры: Cassandra, Amazon DynamoDB. Подходит для систем, где задержка в несколько секунд некритична, — например, соцсетей или списков избранного.
  • CA (Consistency + Availability): система согласованна и доступна, но не устойчива к разделениям сети. В реальных распределённых системах такой выбор практически невозможен. CA относится в основном к традиционным RDBMS, работающим на одном сервере.

Многие распределённые NoSQL-базы выбирают модель CP или AP именно на основе CAP теоремы.

CAP и ACID: буквы «C» — не одно и то же

Эти понятия часто путают. «C» (Consistency) в ACID означает, что транзакция сохраняет базу данных в состоянии, соответствующем всем правилам. «C» в CAP означает, что все узлы распределённой системы видят одни и те же данные. Несмотря на одинаковое название, это разные понятия.

Почему это важно?

CAP теорема помогает понять компромиссы, которые необходимо учитывать при проектировании распределённых баз данных, облачных сервисов, Big Data-систем и платформ с высокой доступностью. Она определяет фундаментальные ограничения и помогает выбрать правильную архитектуру для конкретных задач.

Хотите применить эти знания на практике и получить реальные результаты? Начните обучение на курсе «IT и Компьютерная инженерия» и шаг за шагом приобретайте практические навыки. Подробнее о курсе — перейдите по ссылке: Курс «IT и Компьютерная инженерия».

Заполните форму чтобы узнать больше о наших IT курсах

Связанные термины:

Начни изучать IT уже сегодня