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