Означает ли теорема CAP, что ACID невозможен для распределенных баз данных?

Существуют базы данных NoSQL ACID (распределенные), несмотря на теорему CAP . Как такое возможно? Какая связь между теоремой CAP и (возможно / невозможно) быть ACID?

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


person gremo    schedule 27.05.2013    source источник


Ответы (2)


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

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

Однако на практике все не так просто. Следует отметить, что выбор между согласованностью и доступностью не является двоичным. У вас даже может быть определенная степень и того, и другого. Например, что касается ACID, вы можете иметь атомарные и устойчивые транзакции с NoSQL, но потерять степень изоляции и согласованности для большей доступности. В таком случае доступность можно сравнить с задержкой, поскольку время отклика будет зависеть от нескольких факторов (доступен ли ближайший сервер?).

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

Если вам нужны более подробные объяснения, вы можете посмотреть здесь, здесь или здесь.

person LMeyer    schedule 27.05.2013
comment
Спасибо за хороший ответ! У меня также есть дополнительный вопрос: если мы выбираем доступность, это означает, что мы предпочитаем скорость - другими словами, если у нас есть проблема со связью (раздел), узлы снова в сети, но они не синхронизируются. Или, если мы предпочитаем (согласованность) точные данные - например, если у нас есть транзакции на миллион евро и т.д ... В этом случае мы выберем согласованность. Я прав? Что это за теорема? у него есть какое-нибудь название? :) - person grep; 08.10.2014
comment
@grep Да, вы правы, но вы не стали бы этого делать, потому что слишком много компромиссов при выборе того или другого. Реальный мир сложнее теоремы :) - person LMeyer; 08.10.2014
comment
Еще раз спасибо. Используя теорему CAP, я знаю, какая база данных находится между CP (BigData, Mongo, Hbase), а какая - между AP (Riak, Cassandra, Dynamo). Если мы используем новую теорему, последовательность или доступность, как выбрать базу данных? Если нам грустно, что BigData, Mongo, Hbase имеют только согласованность, а Dynamo, Riak, Cassandra - только Availabillity, это будет правильно? Насколько я понимаю, это неверно, я могу иметь и то и другое с некоторой степенью. это правда? - person grep; 08.10.2014
comment
@grep Я не могу утверждать, что знаю их всех, но да, это правда. - person LMeyer; 09.10.2014

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

FaunaDB реализует Calvin, позволяя поддерживать транзакции ACID со строгими -сериализуемость, даже во время секционирования или во время сбоя реплики, пока кворум реплик не разбит на разделы.

person J Chris A    schedule 11.02.2019