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

«Что такое CAP-теорема?» — вопрос из категории Базы данных, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

CAP-теорема (теорема Брюера) — это концепция в распределенных системах, которая утверждает, что в условиях сетевого раздела (Partition tolerance) распределенная система может гарантировать одновременно только либо согласованность (Consistency), либо доступность (Availability)**.

Расшифровка свойств:

  • Согласованность (C): Все узлы в кластере видят одни и те же данные в один и тот же момент времени. Чтение после записи всегда возвращает последнее записанное значение.
  • Доступность (A): Каждый запрос к системе (независимо от состояния узлов) получает ответ (успешный или ошибочный), но без гарантии, что это самые свежие данные.
  • Устойчивость к разделению (P): Система продолжает работать, несмотря на произвольный обрыв связи (partition) между некоторыми своими узлами.

Выбор в реальных системах (CP или AP):

Выбор Примеры БД Поведение при сетевом разделе
CP (Согласованность + Устойчивость) PostgreSQL (в кластерных режимах), ZooKeeper, etcd Система блокирует запись/чтение на разделенных узлах, чтобы избежать несогласованности. Жертвует доступностью (A).
AP (Доступность + Устойчивость) Cassandra, DynamoDB, Riak Все узлы остаются доступными для чтения и записи, но данные на разделенных узлах могут расходиться. Жертвует согласованностью (C) в момент раздела (обеспечивая eventual consistency).

Важность для DevOps: Понимание CAP-теоремы критично при проектировании и выборе инфраструктуры баз данных для микросервисов. Например, для хранения конфигурации (где важна согласованность) выбирают CP-систему (etcd), а для хранения логов или пользовательских сессий (где важнее доступность) — AP-систему (Cassandra).

Видео-ответы