Что такое 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 и Компьютерная инженерия».
