Skip to content

CAP and PACELC

CAP Теорема

CAP теорема, предложенная Эриком Брювером, гласит, что в любой распределённой системе невозможно одновременно гарантировать выполнение всех трёх свойств:

  1. Consistency (Согласованность):

• Все узлы системы возвращают одно и то же актуальное значение данных.

  1. Availability (Доступность):

• Каждый запрос получает ответ, даже если некоторые узлы системы недоступны.

  1. Partition Tolerance (Устойчивость к разделению сети):

• Система продолжает работать, даже если между узлами возникает потеря связи (сеть разрывается или сообщения теряются).

CAP теорема утверждает, что из трёх свойств вы можете выбрать только два:

CP (Consistency + Partition Tolerance):

• Система поддерживает согласованность данных и устойчива к сетевым разделениям, но может жертвовать доступностью. Пример: большинство реляционных баз данных с распределённой репликацией.

AP (Availability + Partition Tolerance):

• Система остаётся доступной и устойчива к разделениям сети, но может допускать временные нарушения согласованности данных. Пример: NoSQL базы данных, такие как Cassandra и DynamoDB.

CA (Consistency + Availability):

• Такие системы теоретически существуют, но только в условиях отсутствия разделения сети (что практически невозможно в распределённых системах).

PACELC Теорема

PACELC теорема расширяет CAP теорему, добавляя элемент времени. Она утверждает, что в распределённой системе, кроме момента, когда возникает Partition (разделение сети), нужно также учитывать поведение системы в нормальном состоянии, когда нет разделения сети.

Расшифровка PACELC:

Partition, Availability, Consistency:

• Как и в CAP, при сетевом разделении вы должны выбрать между доступностью (A) и согласованностью (C).

Else, Latency, Consistency:

• В условиях нормальной работы системы (без разделения сети), вам нужно выбрать между задержкой (L) и согласованностью (C). Более строгая согласованность часто приводит к увеличению задержки.

Пример выбора по PACELC

PA/EL (Partition-Availability, Else-Latency):

• Системы, такие как DynamoDB или Cassandra, предпочитают доступность в случае разделения сети, а также стараются минимизировать задержки в условиях нормальной работы.

PC/EC (Partition-Consistency, Else-Consistency):

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

Важные моменты

ACID подходит для систем, где важна строгая согласованность и надёжность транзакций (например, банковские системы).

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

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

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