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

Middle
1.5k просмотров
AFK Offer AI

CAP теорема говорит: в распределённой системе невозможно одновременно гарантировать все три свойства — Consistency (все узлы видят одни данные), Availability (каждый запрос получает ответ), Partition tolerance (система работает при разрыве сети между узлами).

Partition tolerance обязателен в реальных системах — сеть всегда может порваться. Поэтому выбор сводится к CP или AP:

  • CP (Consistency + Partition tolerance): при сетевом разрыве система отказывает в обслуживании, но не врёт. Пример: PostgreSQL с синхронной репликацией, etcd, ZooKeeper.
  • AP (Availability + Partition tolerance): при сетевом разрыве система отвечает, но данные могут быть устаревшими. Пример: Cassandra, DynamoDB, DNS.
На практике это не бинарный выбор, а спектр. Одна система может быть CP для транзакций и AP для чтения. PostgreSQL — CP, но с async-репликацией читающие реплики — AP.
Следующий вопрос

Как оптимизировать медленный SQL запрос?