我们在Node.js上有一个基于restify的项目,我们使用RethinkDB作为数据库。问题是RethinkDB应该从代码的不同部分(来自路由处理程序,中间件)访问,但不能用于所有请求。我想知道在这种情况下连接到RethinkDB的最佳方法是什么?
我看到下一个选项:
有一个存储在某处的长连接(我们现在使用的方法),
在每个HTTP请求上连接到RethinkDB,这可能是从未使用过的某些连接,
单独连接每个部分,每个HTTP请求可能有多个连接,但没有无用的连接。
我问这个问题,因为我不确定Rethink如何处理短/长连接以及它们有多昂贵。例如,MongoDB更喜欢长连接,但RethinkDB文档中的所有示例都为每个HTTP请求使用一个连接。
答案 0 :(得分:2)
我建议每个查询使用一个连接池或一个连接。特别是如果您使用类似更换的功能,建议您自己连接。
当您为所有内容使用单个连接时,您还必须在连接超时/中断时处理重新连接。我认为在每个查询中使用连接或在请求/响应上共享连接更容易。
确保在使用后关闭连接,否则将导致连接泄漏,无法创建新连接。
某些驱动程序更进一步,不再需要您考虑连接,例如:https://github.com/neumino/rethinkdbdash
或者Elixir RethinkDB:https://github.com/hamiltop/rethinkdb-elixir/issues/32有一个问题就是创建连接池。
RethinkDB有一个与问题相关的连接池:https://github.com/rethinkdb/rethinkdb/issues/281
这可能也是社区的目标。