Граф знанийНастройки

Обновлено: 1 июля 2026 г. в 16:50

Теорема PACELC

сложный

Расширение CAP: как система выбирает между задержкой и консистентностью в штатном режиме и между доступностью и консистентностью при сетевом разделении. Классы PA/EL, PC/EC, PA/EC, PC/EL.

CAP отвечает за поведение при сетевом разделении, а PACELC — за цену обычной работы. Именно поэтому эта теорема так полезна в практике: большую часть времени система платит не за аварию, а за баланс между задержкой и консистентностью.

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

В интервью и архитектурных обсуждениях она даёт зрелый язык для разговора о хвостовой задержке, вероятности конфликтов, стоимости согласования и цене последующей синхронизации реплик.

Практическая польза главы

Практика проектирования

Расширяет CAP на штатный режим и помогает осознанно выбирать баланс между задержкой и консистентностью.

Качество решений

Позволяет отдельно проектировать поведение системы в нормальной работе и при сетевом разделении.

Аргументация на интервью

Делает ответы сильнее: можно сравнивать стратегии через цену координации, время ответа и допустимую рассогласованность.

Риски и компромиссы

Подсвечивает стоимость выбора: хвостовую задержку, вероятность конфликтов и сложность последующего согласования данных.

Оригинал

Telegram: Книжный куб

Оригинальный пост с разбором теоремы PACELC.

Перейти на сайт

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

Основная цена распределённой системы рождается не в аварии, а в ежедневной координации между репликами: сколько ждать подтверждения, как быстро отвечать клиенту и когда допустимо ослабить чтения ради скорости. Теорема PACELC даёт язык, чтобы назвать этот компромисс вслух.

На практике выбор между и упирается в три конкретных вопроса: какие продукт выдержит, какой бюджет задержки он не готов превышать и какой сценарий деградации устраивает бизнес.

Связанная глава

Теорема CAP

Фундаментальное ограничение распределённых систем.

Читать обзор

Что утверждает теорема PACELC

if P then (A or C) else (L or C)

Формула теоремы PACELC

if P (сетевое разделение)

Если сеть распалась на части, системе приходится выбирать между:

A — доступностьюилиC — консистентностью
else E (штатный режим)

Когда сеть работает нормально, система выбирает между:

L — задержкойилиC — консистентностью

Фундамент

Протокол HTTP

Задержка на уровне протокола влияет на компромисс L vs C.

Читать обзор

Зачем нужна теорема PACELC

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

Ключевой инсайт

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

Классификация систем по теореме PACELC

Каждая система отвечает на два вопроса: куда сдвинуться при сетевом разделении и какой ценой держать ответ в штатной работе. На пересечении и появляются четыре класса теоремы PACELC.

AДоступность
CКонсистентность
LНизкая задержка
PСетевое разделение

Как читать категории теоремы PACELC

PA/EL — Доступность и низкая задержка

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

CassandraDynamoDBRiakCouchDB

PC/EC — Строгая согласованность в любой ситуации

Консистентность держится всегда — и в аварии, и в спокойной работе. Платят за это более долгой координацией, дополнительной синхронизацией и иногда отказом части операций в момент сбоя.

VoltDBMegastoreGoogle Spanner

PA/EC — Доступность при сбоях, строгость в норме

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

MongoDB (типичная конфигурация)

PC/EL — Строгость при сбоях, скорость в штатном режиме

Зеркало предыдущего класса: в аварии система предпочитает консистентность, а в повседневной работе режет задержку и не платит лишнюю цену за синхронную координацию. Редкий, но очень показательный угол компромисса.

PNUTS

Как появилась теорема

2010

В 2010 году Даниэль Абади предложил теорему PACELC, чтобы закрыть слепое пятно теоремы CAP: одной модели для сетевых разделений мало, если нужно объяснить цену повседневной работы распределённой базы. Ключевая идея сформулирована в статье "Consistency Tradeoffs in Modern Distributed Database System Design".

Визуализация компромисса между задержкой и консистентностью

Компромисс между задержкой и консистентностью

Интерактивная схема показывает, как реальные системы располагаются на шкале PACELC.

Низкая задержка
Высокая задержка
Строгая консистентность
Сходимость со временем
PC/EC зона
PA/EL зона
Приоритет низкой задержки в штатном режиме (EL)

Системы в левом нижнем углу приоритизируют скорость ответа, допуская временную рассогласованность данных между репликами.

Приоритет консистентности в штатном режиме (EC)

Системы в правом верхнем углу гарантируют согласованность, но платят за это повышенными задержками из-за синхронизации.

Меньшая задержка
компромисс
Более строгая консистентность

Важно: Позиции систем на графике — это качественные оценки, а не точные измерения. Реальные характеристики зависят от конфигурации, нагрузки, версии и сетевых условий.

Классификация PACELC здесь опирается на статью Даниэля Абади "Consistency Tradeoffs in Modern Distributed Database System Design" и на общепринятой отраслевой интерпретации этих классов.

Источники классификации

База данныхКатегорияИсточник
Cassandra
PA/ELApache Docs
DynamoDB
PA/ELAWS Docs
Riak
PA/ELRiak Blog
CouchDB
PA/ELCouchDB Docs
Redis Cluster
PA/ELRedis Docs
Voldemort
PA/ELVoldemort Design
ScyllaDB
PA/ELScyllaDB Docs
MongoDB
PA/ECMongoDB Docs
Cosmos DB
PA/ECAzure Docs
Firebase RTDB
PA/ECFirebase Docs
PNUTS
PC/ELVLDB Paper
База данныхКатегорияИсточник
HBase
PC/ELHBase Book
FoundationDB
PC/ELFDB Docs
VoltDB
PC/ECVoltDB Docs
Spanner
PC/ECGoogle Cloud
CockroachDB
PC/ECCRDB Docs
YugabyteDB
PC/ECYugabyteDB Docs
TiDB
PC/ECTiDB Docs
PostgreSQL
PC/ECPostgreSQL Docs
MySQL Cluster
PC/ECMySQL Docs
Megastore
PC/ECGoogle Research

Подробнее

Jepsen и модели консистентности

Полная иерархия моделей консистентности от проекта Jepsen.

Читать обзор

Модели консистентности: полная картина

Теорема PACELC задаёт ось «задержка против консистентности», но за словом «консистентность» прячется целый набор уровней гарантий. Проект Jepsen раскладывает их по полочкам: где заканчивается согласованность в конечном итоге, где начинается строгая консистентность и чем отличается от более слабых моделей.

Jepsen и модели консистентности

Иерархия моделей консистентности, сериализуемость и линеаризуемость, проверка распределённых систем под отказами

Что важно запомнить

  • PACELC не отменяет CAP, а достраивает её до штатного режима: компромисс никуда не исчезает даже при здоровой сети.
  • Согласованность в конечном итоге чаще выбирают ради задержки в обычной работе, а не только ради переживания аварий.
  • PA/EL хорошо подходит там, где критичны время ответа и доступность, а PC/EC — там, где важнее строгая корректность данных.
  • Итоговый класс определяют доменные инварианты, география, схема репликации и цена координации между узлами — не вкусы команды.

Связанные главы

Чтобы отмечать прохождение, включи трекинг в Настройки