System Design Space

    Глава 84

    Обновлено: 16 февраля 2026 г. в 03:00

    PACELC теорема

    Прогресс части0/21

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

    Оригинал

    Telegram: book_cube

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

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

    CAP теорема объясняет поведение системы во время сетевых сбоев. Но что происходит, когда всё работает нормально? Теорема PACELC расширяет CAP и описывает компромиссы распределённых систем в штатном режиме работы.

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

    CAP теорема

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

    Читать обзор

    Формулировка теоремы

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

    Формула PACELC

    if P (Partition)

    Если произошло разделение сети, система выбирает между:

    A — AvailabilityилиC — Consistency
    else E (Normal operation)

    В штатном режиме система выбирает между:

    L — LatencyилиC — Consistency

    Фундамент

    HTTP протокол

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

    Читать обзор

    Зачем нужна PACELC?

    CAP теорема не объясняет, почему системы вроде Amazon Dynamo или Cassandra выбирают eventual consistency. Ведь сетевые разделения — редкость. Настоящая причина:

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

    Eventual consistency используется не только на случай аварий, но и для снижения задержек в повседневной работе. Это и есть выбор «L over C» в части «Else» теоремы PACELC.

    Классификация систем

    PACELC даёт четыре категории систем в зависимости от их выбора в каждой ситуации:

    AAvailability
    CConsistency
    LLow Latency
    PPartition

    Подробный разбор категорий

    PA/EL — Скорость превыше всего

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

    CassandraDynamoDBRiakCouchDB

    PC/EC — Консистентность любой ценой

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

    VoltDBMegastoreGoogle Spanner

    PA/EC — Гибридный подход

    При сбоях сохраняют доступность, но в штатном режиме стремятся обеспечить согласованность. Компромисс между надёжностью и корректностью.

    MongoDB (default)

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

    При partition выбирают консистентность (могут отказывать), но в обычном режиме работают максимально быстро, допуская временную рассогласованность.

    PNUTS

    История

    2010

    Теорема предложена Даниэлем Абади (Daniel Abadi) в статье "Consistency Tradeoffs in Modern Distributed Database System Design".

    Визуализация Trade-off

    Latency vs Consistency Trade-off

    Интерактивный график показывает позиционирование распределённых систем

    Низкая задержка
    Высокая задержка
    Строгая консистентность
    Eventual
    PC/EC зона
    PA/EL зона
    Низкая задержка (EL)

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

    Строгая консистентность (EC)

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

    Low Latency
    trade-off
    Strong Consistency

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

    Классификация PACELC основана на статье Daniel Abadi "Consistency Tradeoffs in Modern Distributed Database System Design" (2012) и общепринятой индустриальной классификации.

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

    База данныхКатегорияИсточник
    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 говорит о выборе между Latency и Consistency, но что именно понимается под "консистентностью"? Проект Jepsen создал полную иерархию моделей, показывающую как транзакционная изоляция (RDBMS) и линеаризуемость (распределённые системы) сходятся на вершине.

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

    Иерархия моделей консистентности, Serializable vs Linearizable, тестирование распределённых систем

    Ключевые выводы

    • PACELC объясняет выбор eventual consistency в системах типа Dynamo — это не только про аварии
    • Latency vs Consistency — ключевой trade-off для высоконагруженных систем в штатном режиме
    • Большинство NoSQL баз — PA/EL, большинство традиционных СУБД — PC/EC
    • Выбор категории зависит от бизнес-требований: финансы требуют PC/EC, социальные сети — PA/EL

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