2015-11-10 3 views
1

У нас есть проект на Node.js, основанный на восстановлении, и мы используем RethinkDB в качестве базы данных. Проблема в том, что RethinkDB должен быть доступен из разных частей кода (из обработчиков маршрутов, middlewares), но не для всех запросов. Мне интересно, что лучший способ подключиться к RethinkDB в этом случае?Краткосрочные или долгосрочные подключения для RethinkDB?

Я вижу следующие варианты:

  • имеют одну длинную связь, которая хранится где-то (подход, который мы используем в настоящее время),

  • подключения к RethinkDB на каждый запрос HTTP, который потенциально некоторые из соединений никогда не используется,

  • подключается в каждой части индивидуально, с потенциально несколькими подключениями по HTTP-запросу, но без бесполезных подключений.

Я задаю этот вопрос, потому что я не уверен, насколько хорошо Rethink хорошо справляется с короткими/длинными соединениями и насколько они дороги. Например, MongoDB предпочитает длинные соединения, но все примеры в документах RethinkDB используют одно соединение для HTTP-запроса.

ответ

2

Я рекомендую пул соединений или одно соединение для каждого запроса. Особенно, если вы используете функцию, например changefeeds, которая рекомендуется для подключения.

Когда вы используете одно соединение для всего, вы также должны обрабатывать повторное соединение при таймауте/времени соединения. Я думаю, что проще просто использовать соединение для каждого запроса или поделить соединение на запрос/ответ.

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

Некоторые водитель идет дальше и не требует, чтобы вы думали о связи больше, такие как: https://github.com/neumino/rethinkdbdash

или эликсир RethinkDB: https://github.com/hamiltop/rethinkdb-elixir/issues/32 имеет вопрос о создании пула соединений.

RethinkDB имеет связанный с этим вопрос пула соединений: https://github.com/rethinkdb/rethinkdb/issues/281

Это, вероятно, что сообщество движется слишком.

Смежные вопросы