Теорема CAP в СУБД

Опубликовано: 15 Августа, 2021

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

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

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

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

  • Последовательность -
    Согласованность означает, что узлы будут иметь одни и те же копии реплицированного элемента данных, видимые для различных транзакций. Гарантия того, что каждый узел в распределенном кластере вернет одну и ту же самую последнюю успешную запись. Согласованность относится к каждому клиенту, имеющему одинаковое представление данных. Существуют различные типы моделей согласованности. Согласованность в CAP относится к последовательной согласованности, очень сильной форме согласованности.
  • Доступность -
    Доступность означает, что каждый запрос на чтение или запись для элемента данных будет либо успешно обработан, либо получит сообщение о том, что операция не может быть завершена. Каждый исправный узел возвращает ответ на все запросы чтения и записи в разумные сроки. Ключевое слово здесь - каждый. Чтобы быть доступным, каждый узел (по обе стороны от сетевого раздела) должен иметь возможность отвечать в разумные сроки.
  • Толерантность к разделу -
    Устойчивость к разделению означает, что система может продолжать работу, если в сети, соединяющей узлы, произошел сбой, который приводит к появлению двух или более разделов, где узлы в каждом разделе могут обмениваться данными только между собой. Это означает, что система продолжает функционировать и сохраняет гарантии согласованности, несмотря на наличие сетевых разделов. Сетевые перегородки - это реальность. Распределенные системы, гарантирующие устойчивость разделов, могут корректно восстанавливать разделы после их восстановления.

Использование слова «согласованность» в CAP и его использование в ACID не относятся к одному и тому же идентичному понятию.

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