CAP рассматривает несовместимые гарантии при разделении. PACELC добавляет цену согласования при исправной связи. Сценарий штатной задержки нужен наряду с испытанием разделения сети.
Почему это важно
Даже исправная удалённая реплика отвечает не мгновенно. Если операция обязана дождаться её подтверждения, размещение площадок влияет на время ответа. PACELC помогает составить условия приёмки: что ждём, какой результат обещаем и как меняется режим при потере связи.
Что подтверждено
PACELC соединяет два вопроса: при разделении сети — компромисс доступности и согласованности, иначе — компромисс задержки и согласованности. Штатный режим рассмотрен отдельно, потому что межузловое согласование влияет на обычные операции и без аварии.
Граница применимости: Принцип PACELC Даниэля Абади; это схема анализа, а не числовая формула задержки.
Одной меткой PACELC нельзя заменить описание режима конкретной операции. Настраиваемая база может ждать удалённое подтверждение в одном режиме записи и не ждать в другом; выбранный путь чтения также имеет свои гарантии.
Граница применимости: Применение PACELC к настраиваемой репликации; режимы PostgreSQL служат конкретным примером, а не классификацией всех продуктов.
В учебном сценарии запись ждёт обязательного подтверждения удалённой реплики. Передача до неё занимает 40 мс, ответ обратно — ещё 40 мс. Один такой обмен занимает не менее 80 мс даже без отказа; обработка, запись на носитель и очереди могут добавить время.
Граница применимости: Один обязательный последовательный обмен запросом и подтверждением; заданные односторонние задержки, без обходного пути и исключения ожидания из ответа клиенту. Учебные числа, не паспортная задержка СУБД.
Ожидание сохранения записи на удалённой реплике не тождественно ожиданию её применения там. В PostgreSQL режим remote_apply отдельно дожидается применения, чтобы изменения стали видимы запросам на подтверждающей реплике. Поэтому режим записи и путь последующего чтения разбирают вместе.
Граница применимости: PostgreSQL 18, синхронная репликация и remote_apply; видимость конкретного запроса дополнительно ограничена его снимком.
Задержка синхронной записи зависит от того, чьи подтверждения обязательны. PostgreSQL позволяет ждать заданное число синхронных реплик; наличие ещё одной удалённой копии не означает, что каждая операция обязательно ждёт именно её.
Граница применимости: PostgreSQL 18, настройка синхронной репликации; точное правило выбора реплик и ожидаемый этап задаются конфигурацией.
Если при потере синхронной реплики запись начинает завершаться без её подтверждения, меняется условие успешного завершения. Такой переход нужно явно описать: меньшая задержка ответа не доказывает сохранение прежней гарантии удалённой записи.
Граница применимости: Сравнение синхронного и асинхронного режима подтверждения на примере PostgreSQL; автоматическое переключение без настройки не обещается.
Не путать
Синхронная репликация — конкретный механизм ожидания подтверждений. PACELC помогает оценить, чем выбранное ожидание оплачивается по задержке и что происходит при его недоступности.
Что проверить
- Выберите одну операцию и назовите требуемый результат её успешного ответа.
- Запишите обязательные удалённые подтверждения и этап, которого ждёт запись.
- Сопоставьте размещение реплик с задержкой пути до обязательного подтверждения и обратно.
- Проверьте свежесть чтения на той реплике, куда действительно направляется клиент.
- Измерьте время ответа и его разброс при обычной рабочей нагрузке.
- Повторите проверку при недоступной реплике и разрыве межплощадочной связи.
- Любой переход к завершению без прежнего подтверждения запишите как изменение гарантии.
Первоисточники
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.
Открыть первоисточникPostgreSQL 18 Documentation: Log-Shipping Standby Servers
PostgreSQL Global Development Group · PostgreSQL 18, Chapter 26.2
Фиксирует async default, synchronous commit wait points и связь replication delay с data loss.
Открыть первоисточникPostgreSQL 18 Documentation: Transaction Isolation
PostgreSQL Global Development Group · PostgreSQL 18, Chapter 13.2
Определяет isolation phenomena и фактическое поведение PostgreSQL levels, включая Serializable.
Открыть первоисточник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.
Открыть первоисточник