Ответ
CAP-теорема (теорема Брюера) утверждает, что в распределённой системе, подверженной сетевым сбоям (разделам — P), невозможно одновременно обеспечить:
- Согласованность (Consistency, C): Все узлы видят одни и те же данные в один момент времени.
- Доступность (Availability, A): Каждый запрос к системе получает ответ (успешный или ошибочный).
На практике система может гарантировать только два из трёх свойств:
| Компромисс | Описание | Примеры систем |
|---|---|---|
| CP (Согласованность + Устойчивость к разделению) | При сетевом разделении система блокирует запросы для сохранения согласованности данных, жертвуя доступностью. | MongoDB (в конфигурации с сильной согласованностью), HBase, Redis (в режиме кластера). |
| AP (Доступность + Устойчивость к разделению) | При разделении система остаётся доступной, но может возвращать устаревшие или несогласованные данные. | Cassandra, DynamoDB, CouchDB. |
| CA (Согласованность + Доступность) | Реализуется только в системах без сетевых разделений (например, в одном узле или идеальной сети). | Традиционные RDBMS (PostgreSQL, MySQL) в рамках одного дата-центра. |
Важно: Теорема описывает поведение системы в момент сетевого раздела, а не её постоянные характеристики. Современные системы часто стремятся к гибким компромиссам (например, базовая доступность и согласованность в конечном счёте).