В документации MongoDB, here, было упомянуто, что в наборе реплик даже с большинством readConcern мы достигнем конечной согласованности. Мне интересно, как это возможно, когда у нас есть большинство в чтениях и письмах, что приводит к кворуму (R + W> N) в нашей распределенной системе? Я ожидаю сильной последовательной системы в этой ситуации. Это техника, которую использует Cassandra, чтобы добиться сильной согласованности.Как добиться сильной согласованности в наборах MongoDB Replica?
Может кто-нибудь прояснить это для меня, пожалуйста?
Вы говорите о производительности и масштабируемости при чтении и записи, которые можно обрабатывать с помощью sharding. Конечная согласованность имеет значение только в том случае, если вы хотите использовать вторичные узлы в наборе реплик для операций чтения. Мой вопрос в том, почему у нас нет сильной консистенции, хотя у нас есть quruom? –
Кворум необходим только при выборе первичного. Он не может учитывать задержку сети/задержку, и первичная не обязана ждать, пока транзакция записи будет воспроизведена на всех вторичных операциях только ради согласованности. Представьте себе этот сценарий - наличие двух узлов на основе ssd для производительности и восстановления после сбоев и более дешевый hdd-узел для резервного копирования. Должен ли высокопроизводительный первичный узел ждать завершения операции над самым медленным элементом? –
Мажоритарное голосование необходимо для первичных выборов. Кворум означает «Читатели + Писатели»> «Нет узлов». Это выражение верно, когда мы устанавливаем как readConcern, так и writeConcern в большинстве. Поэтому, когда мы читаем из большинства узлов, существует хотя бы один узел, который имеет самую последнюю запись, поэтому система сильно согласована. Я хочу знать, почему это выражение не верно в отношении MongoDB? –