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

Обновлено: 30 апреля 2026 г. в 07:40

PACELC теорема

сложный

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

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

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

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

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

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

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

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

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

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

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

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

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

Оригинал

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

Оригинальный пост с разбором теоремы 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 — там, где важнее строгая корректность данных.
  • Итоговый выбор зависит от доменных инвариантов, географии, схемы репликации и стоимости координации между узлами.

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

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