Mongo DB - разница между автономным набором реплик и 1-узлом
Мне нужно было использовать транзакции БД Mongo, и недавно я понял, что транзакции не работают в автономном режиме Mongo, а только для наборов реплик ( БД Mongo с C# - документ добавляется независимо от транзакции).
Кроме того, я прочитал, что автономный режим не рекомендуется для производства.
Итак, я обнаружил, что простого определения имени набора реплик в mongod.cfg достаточно для запуска Mongo DB в качестве набора реплик вместо отдельного.
После этого Монго транзакции начали работать.
Тем не менее, это немного странно, если использовать его в качестве набора реплик, хотя я на самом деле не использую функции репликации и хочу убедиться, что я использую правильную конфигурацию.
Итак, мои вопросы:
- Есть ли какие-либо проблемы / недостатки при запуске Mongo в виде набора из 1 узла, если предположить, что мне действительно не нужна репликация, балансировка нагрузки или какая-либо другая масштабируемая функциональность? (как сказано мне нужно, чтобы разрешить транзакции)
- Каковы различия в функциональности и производительности, если таковые имеются, между работой в автономном режиме и работой в качестве набора реплик из 1 узла?
- Я читал, что автономный режим не рекомендуется для производства, хотя, похоже, это самая базовая конфигурация. Я понимаю, что эта конфигурация не используется в большинстве сценариев, но иногда вы можете использовать ее в качестве стандартной БД на локальной машине. Так почему же автономный режим не рекомендуется? Это недостаточно стабильно или по другим причинам?
1 ответ
Есть ли какие-либо проблемы / недостатки при запуске Mongo в виде набора из 1 узла, если предположить, что мне действительно не нужна репликация, балансировка нагрузки или какая-либо другая масштабируемая функциональность?
У вас нет высокой доступности, обеспечиваемой правильным набором реплик. Таким образом, это не рекомендуется для производственного развертывания. Это хорошо для развития, хотя.
Обратите внимание, что функция набора реплик главным образом связана с высокой доступностью, а не с масштабированием.
Каковы различия в функциональности и производительности, если таковые имеются, между работой в автономном режиме и работой в качестве набора реплик из 1 узла?
Набор реплик с одним узлом будет иметь оплог. Это означает, что вы будете использовать больше дискового пространства для хранения оплога, а также любая операция вставки / обновления будет записана в оплог (усиление записи).
Так почему же автономный режим не рекомендуется? Это недостаточно стабильно или по другим причинам?
MongoDB в рабочей среде был разработан с учетом развертывания набора реплик для:
- Высокая доступность перед лицом сбоев узлов
- Текущее обслуживание / модернизация без простоев
- Возможность масштабирования чтения
- Возможность иметь реплику данных в узле специального назначения, который не является частью узлов высокой доступности
Короче говоря, MongoDB была разработана как отказоустойчивая распределенная база данных (масштабируется горизонтально) вместо типичной монолитной базы данных SQL (масштабируется вертикально). Идея состоит в том, что, если вы потеряете один узел вашего набора реплик, другие сразу же вступят во владение. В большинстве случаев ваше приложение даже не знает о сбое на стороне базы данных. Напротив, сбой в монолитном сервере баз данных немедленно нарушит работу вашего приложения.
Я думаю, что Кевинади ответил хорошо, но я все еще хочу добавить это.
Автономный это экземпляр mongod, который работает на одном сервере, но не является частью набора реплик. Автономные экземпляры используются для тестирования и разработки, но всегда рекомендуется использовать наборы реплик в производстве.
Набор реплик с одним узлом будет иметь оплог, в котором записываются все изменения в его наборах данных. Это означает, что вы будете использовать больше дискового пространства для хранения оплога, а также любая операция вставки / обновления будет записана в оплог (усиление записи). Он также поддерживает восстановление во времени.
Пожалуйста, следуйте инструкции Преобразовать автономный набор в реплику, если вы хотите преобразовать автономную базу данных в набор репликации.
Транзакции были введены в MongoDB версии 4.0. Начиная с версии 4.0, для ситуаций, которые требуют атомарности для обновлений нескольких документов или согласованности между операциями чтения нескольких документов, MongoDB обеспечивает транзакции с несколькими документами для наборов реплик. Транзакция недоступна в автономном режиме, поскольку для поддержания строгой согласованности в кластере требуется журнал операций.