2022-10-15 17:42:49
CAP теорема: один из самых недооцененных терминовCAP теорема это один из самых известных терминов в сфере информационных технологий, но я готов поспорить что разные разработчики имеют разное его понимание. Давайте рассмотрим на примере, почему это происходит.
CAP теорема утверждает, что распределенная система не может предоставить более чем 2 из 3 гарантий одновременно.
Консестентность: консистентность подразумевает все клиенты (в смысле клиент-серверной архитектуры) видят те же самые данные в любой произвольный момент времени, независимо от того, к какой ноде они подключены.
Доступность: означает любой клиент может запросить данные и получить ответ даже если какие-то из узлов недоступны.
𝐏𝐚𝐫𝐭𝐢𝐭𝐢𝐨𝐧 𝐓𝐨𝐥𝐞𝐫𝐚𝐧𝐜𝐞, означает обрыв коммуникаций между двумя нодами. Устойчивость к подобного рода разрывам, означает система продолжает работать несмотря на сетевые разрывы.
Формулировка "2 из 3" может быть удобной и простой для понимания, но такое упрощение приводит к недопониманию.
1. Выбор базы данных не является простой задачей. Выбор на основе лишь CAP теоремы недостаточен. Для примера, компании не выбирают Cassandra при разработке чат приложений только потому что она является примером AP системы. Есть ряд характеристик, которые делают Cassandra отличным выбором для хранения сообщений чата. Но для этого нужно копнуть глубже.
2. CAP теорема покрывает лишь малую часть архитектурных проблем
3. Теорема упрощает и возводит в абсолют выбор между 100% доступностью и консистентностью. В реальном мире мы решаем задачи выбора между длительностью обработки запроса и консистентностью когда нет рассинхронизации сети. Ознакомтесь с PACECL теоремой, она дает более развернутый ответ.
Полезна ли CAP теорема?Я думаю она достаточно полезна, так как приучает наш мозг к подобного рода дилеммам, когда нужно делать выбор между производительностью, консистентностью и какими либо гарантиями. Однако не стоит делать выбор базы данных только на ее основании.
#базыданных #программирование #архитектура
262 views14:42