MongoDB: Как часто вы должны открывать и закрывать базу данных? Зачем?
Для каждого запроса я открывал базу данных, запрашивал, закрывал базу данных.
Я спорадически сталкивался с проблемой connection already opened
.
Я закончил тем, что менял конфигурацию, чтобы просто открыть манго и держать ее открытой.
Каковы недостатки этого метода?
Спасибо!
(обратите внимание: используя node.js)
Ответы
Ответ 1
Мне кажется, что вы должны открыть соединение один раз и продолжать его повторно использовать, по крайней мере, с помощью node -native-driver. Комментарии к теме по разработчику драйвера найдены здесь: https://github.com/mongodb/node-mongodb-native/issues/84
Ответ 2
Ответ здесь будет зависеть от версии, в которой вы работаете. Метод, описанный на странице main github, включает открытие/закрытие соединения "по мере необходимости".
В настоящее время ведутся работы по правильной поддержке наборов реплик и обеспечению базового пула соединений. Фактически, вчера была регистрация, чтобы отправить очистку объединенных подключений при ошибке.
Учитывая, что документы предоставляют этот метод open/close, это, вероятно, путь. Это то, что я сейчас делаю в своих приложениях. Что касается проблемы, которую вы видите, это может быть просто ошибкой. Опять же, версия в драйвере равна < 1.0, и вчера была проверка, что-то похожее на то, что вы испытываете, поэтому могут возникнуть некоторые проблемы.
Изменить. Я должен добавить, что Христианин - отличный парень, который делает эту работу в свое время с ограниченной поддержкой от команды 10gen. Создание такого драйвера - это много и много работы, поэтому, если вы сталкиваетесь с ошибками, например, повторно используете открытые соединения, обязательно укажите ошибку и/или внесите исправление.
Ответ 3
Я не могу говорить за драйвер node.js, но Java-драйвер был разработан таким образом: http://www.mongodb.org/display/DOCS/Java+Driver+Concurrency - он обрабатывает соединения внутри. Возможно, драйвер node.js тоже. Возможно, стоит написать разработчикам драйверов по электронной почте?