Я беру свое первое погружение в стек MEAN, и я работаю с базой данных через Mongoose. Я не очень хорошо знаком с Mongoose или MongoDB, поэтому я не знаю, как им нравится настраиваться. Я также не знаю, имеет ли значение Мангуста, или это вопрос исключительно MongoDB.Какова рекомендуемая продолжительность жизни для подключения в MongoDB/Mongoose?
В последний раз я написал логику доступа к данным напрямую (без ORM или вложенных репозиториев для управления соединением для меня), это было в .NET с System.Data.SqlClient
. Я помню, что всегда должен был быть уверен, что SqlConnection
был открыт не больше, чем необходимо, и всегда закрывать его явно, когда я был сделан.
Я прочитал много советов о написании приложений MEAN, и никто не упоминает об этом. Из кода, который я видел, создается впечатление, что соединения MongoDB/Mongoose любят жить на уровне приложений и что я должен только позвонить mongoose.connect
один раз для всего приложения.
Вот мой код подключения, который вызывается один раз при запуске приложения:
mongoose = require "mongoose"
connection = mongoose.connection
mongoose.connect process.env.MONGO_URI
connection.on 'error', (err) ->
console.error 'DB connection error', err
.once 'open', ->
console.log 'DB open'
gracefulExit = ->
connection.close ->
console.log 'Mongoose default connection disconnected through app termination'
process.exit 0
process.on('SIGINT', gracefulExit)
.on('SIGTERM', gracefulExit)
module.exports = (name, dataStructure) ->
schema = new Schema dataStructure
return mongoose.model(name, schema)
JavaScript translation if you need it
Это единственное место, где mongoose.connect
называется, а полученный объект соединения повторно используется по всему приложению. Правильно ли я это делать, или я должен создавать, открывать, закрывать и уничтожать его по каждому запросу? Какие еще вопросы масштабируемости я должен знать?
Я понимаю, что это звучит немного откровенно, но я надеюсь получить объективную информацию о MongoDB и внутренности Mongoose и конфигурации. Будут ли проблемы, когда я делаю это в производственной среде с большим количеством одновременных запросов?
Спасибо! Означает ли это, что может быть только 5 одновременных соединений? Это много для моего тестового приложения, но для коммерческого сайта это кажется низким. –
@JustinMorgan Вы можете установить значение 'poolSize' для любого количества необходимых вам соединений; 5 - это только значение по умолчанию. – JohnnyHK