Почему MongoDB «Непротиворечивый» недоступен, а «Кассандра» недоступна? - PullRequest
0 голосов
/ 01 июня 2018

Mongo

Из этого ресурса Я понимаю, почему mongo не A(Highly Available), основываясь на приведенном ниже утверждении

MongoDB поддерживаетМодель «один мастер».Это означает, что у вас есть главный узел и несколько подчиненных узлов.В случае, если мастер выходит из строя, один из рабов выбирается в качестве мастера.Этот процесс происходит автоматически, но это занимает время, обычно 10-40 секунд.В это время выборов нового лидера ваш набор реплик не работает и не может принимать записи

По той же причине, по которой Монго называется Consistent (поскольку запись не произошла, поэтому возвращаются последниеданные в системе) но не Available (недоступно для записи)?

До тех пор, пока не произойдет переизбрание, и операция записи еще не завершена, может ли подчиненный возврат выполнить операцию чтения?Также пользователь снова запускает операцию записи после выбора мастера?

Но я не понимаю под другим углом почему Mongo highly consistent Как сказано в Где mongodbстоять в теореме CAP? ,

Монго равен consistent, когда все чтения идут по умолчанию на первичное.

Но это не так.Если в соответствии с моделью Master / Slave все операции чтения перейдут к первичным, что тогда используют Slave?Далее говорится: If you optionally enable reading from the secondaries then MongoDB becomes eventually consistent where it's possible to read out-of-date results. Это означает, что mongo может не соответствовать ведущему / ведомому (при условии, что я не настраиваю запись на все узлы перед возвратом).Мне не имеет смысла говорить, что монго непротиворечиво, если все чтение и запись идут на первичную.В этом случае любая другая БД (например, кассандра) будет согласованной.Не так ли?

Кассандра Из этого ресурса Я понимаю, почему Кассандра A(Highly Available ) основана на приведенном ниже утверждении

Кассандраподдерживает модель «несколько мастеров».Потеря одного узла не влияет на способность кластера принимать записи - так что вы можете достичь 100% времени безотказной работы для записи

Но я не понимаю , почему Кассандране Consistent?Это потому, что узел недоступен для записи (так как координированный узел не может подключиться) доступен для чтения, что может вернуть устаревшие данные?

Ответы [ 2 ]

0 голосов
/ 25 июля 2019

Вам нужно только понять «момент времени»: поскольку вы записываете только в master mongodb, даже если ведомое устройство не обновляется, оно согласованно, так как содержит все данные, сгенерированные с использованием момента синхронизации.

Это не верно для Кассандры.Поскольку cassandra использует модель без хозяина, нет гарантии, что другие узлы имеют все данные.В определенное время узел может иметь определенные недавние данные и не иметь более старых данных от узлов, еще не синхронизированных.Кассандра будет последовательной, только если вы прекратите запись на все узлы и включите их в сеть.Как только синхронизация завершится, у вас будут согласованные данные.

0 голосов
/ 01 июня 2018

Согласованность в парадигме CAP также включает в себя «возможную согласованность», которую поддерживает MongoDB.В отличие от систем ACID, чтение в системах CAP не гарантирует безопасный возврат.

Проще говоря, это означает, что ваш Мастер может иметь обновленное значение, но если вы действительно читаете из Slave, он не обязательно возвращает обновленное значение, и что все в порядке, если это обновленное значение не предусмотрено.

Концепция возможной последовательности объясняется в отличном ответе здесь .

По архитектуре Кассандра должна быть последовательной;он предлагает специальную реализацию конечной согласованности, называемую «настраиваемой согласованностью», которая означала бы, что клиентское приложение может выбрать метод обработки этого, - он даже предлагает поддержку согласованности нескольких центров обработки данных на низких уровнях!Большинство проблем, связанных с непоследовательностью строк в Cassandra, связаны с тем, что Cassandra использует временные метки клиента, чтобы определить, какое значение является самым последним, а не серверное, что поначалу может показаться немного запутанным.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...