CAP задаёт предел гарантий при разделении сети. PACELC добавляет отдельный вопрос о задержке и согласованности при обычной работе. Ни одна аббревиатура сама не описывает весь путь конкретного запроса.
Почему это важно
Если площадки потеряли связь, нужно заранее определить, какие ответы допускает каждая операция и какие гарантии сохраняются. Получение ответа, его допустимость по спецификации и соблюдение срока SLA требуют отдельных проверок. Для заказа важно поведение чтений и записей при разрыве связи; пара букв у названия продукта его не описывает.
Что подтверждено
В асинхронной модели Гилберта и Линч невозможно одновременно гарантировать атомарную согласованность и доступность службы чтения и записи при допустимых сетевых разделениях. Речь идёт о гарантиях для всех разрешённых выполнений модели, а не о вероятности одного удачного запроса.
Граница применимости: Теорема CAP Гилберта и Линч, асинхронная модель и её формальные определения; не универсальная классификация всех свойств базы данных.
CAP не означает постоянный свободный выбор любых двух букв. Когда связь уже разделена, нельзя отменить это событие настройкой. Компромисс штатного режима между задержкой и согласованностью отдельно рассматривает PACELC.
Граница применимости: Граница теоремы CAP и принципа PACELC; P означает учёт разделений сети в модели.
Согласованность C в теореме CAP — атомарная, то есть линеаризуемая, история чтений и записей. Это не проверка допустимого остатка или внешних ключей: правильность такого правила данных относится к другой задаче.
Граница применимости: Формальная согласованность CAP; сравнение с транзакционными ограничениями PostgreSQL.
Формальная доступность A требует, чтобы каждый запрос, полученный исправным узлом, в итоге получил ответ. Определение не задаёт числовой предел задержки. Допустимость ответа с ошибкой проверяется отдельно по заранее заданной спецификации операции: из определения A самого по себе не следует ни обязательный бизнес-успех, ни право заменить любой ответ произвольной ошибкой.
Граница применимости: Определение доступности в асинхронной модели Гилберта и Линч сопоставлено с допустимыми результатами операций по спецификации объекта у Херлихи и Винг. Это различение свойства завершения и корректности ответа; числовой SLA и универсальная политика ошибок в теореме не заданы.
Пусть спецификация регистра требует от чтения вернуть значение, а от записи — подтверждение. После разделения узел A подтвердил запись 1 вместо 0. Начатое затем чтение на узле B, который не получил запись, не может вернуть 0 с сохранением линеаризуемости. Если разделение не заканчивается, бесконечное ожидание связи нарушает A. Ответ об ошибке не входит в заданные результаты этого регистра; его допустимость нельзя вывести из одного требования A.
Граница применимости: Учебный вывод из модели CAP и спецификации линеаризуемого регистра: один объект, две исправные разделённые части, нет другой записи и внешнего пути передачи значения. Спецификация задана до отказа; пример не устанавливает общий запрет ошибок для других операций.
Разделение сети не требует остановки процессов: узлы по обе стороны могут работать и принимать запросы, но не получать нужные сообщения друг от друга. Проверка только отказа питания одного сервера не воспроизводит этот сценарий.
Граница применимости: Сетевое разделение в модели CAP; конкретные ограничения доставки задаются сценарием испытания.
Не путать
C в CAP означает линеаризуемый порядок операций. Согласованность транзакции связана с сохранением правил допустимого состояния. Правильная сумма заказа и свежий ответ разделённой реплики — разные проверки.
Что проверить
- Запишите, что именно означает согласованность для выбранного чтения или записи.
- Заранее задайте спецификацию операции и допустимые ответы, включая предусмотренные ошибки.
- Разделите связь между работающими частями, а не ограничивайтесь выключением узла.
- После подтверждённой записи проверьте чтение на изолированной стороне.
- Проверьте отдельно получение ответа каждым запросом к исправному узлу и допустимость ответа по спецификации.
- Определите, какие операции ждут восстановления связи и что произойдёт, если разделение не закончится.
- Предел задержки и процент доступности задайте отдельно: формальная A не подставляет числа в SLA.
- Отдельно измерьте задержку и гарантии при восстановленной связи.
Первоисточники
Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services
MIT Laboratory for Computer Science · Gilbert and Lynch, SIGACT News 33(2), 2002
Формализует CAP impossibility для atomic consistency и availability в asynchronous network model.
Открыть первоисточникConsistency Tradeoffs in Modern Distributed Database System Design
Yale University / IEEE Computer · Daniel Abadi, IEEE Computer 45(2), 2012
Вводит PACELC: partition tradeoff и отдельный normal-operation latency/consistency tradeoff.
Открыть первоисточникLinearizability: A Correctness Condition for Concurrent Objects
Carnegie Mellon University / ACM · Herlihy and Wing, ACM TOPLAS 12(3), July 1990
Даёт формальное real-time correctness condition для concurrent operations.
Открыть первоисточникPostgreSQL 18 Documentation: Constraints
PostgreSQL Global Development Group · документация PostgreSQL 18, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Проверить CHECK и NULL, NOT NULL, UNIQUE и границу проверок одной строки; пример заказа — редакторское применение этих правил.
Открыть первоисточник