RethinkDB的短期或长期连接?

时间:2015-11-10 13:09:02

标签: node.js rethinkdb rethinkdb-javascript

我们在Node.js上有一个基于restify的项目,我们使用RethinkDB作为数据库。问题是RethinkDB应该从代码的不同部分(来自路由处理程序,中间件)访问,但不能用于所有请求。我想知道在这种情况下连接到RethinkDB的最佳方法是什么?

我看到下一个选项:

  • 有一个存储在某处的长连接(我们现在使用的方法),

  • 在每个HTTP请求上连接到RethinkDB,这可能是从未使用过的某些连接,

  • 单独连接每个部分,每个HTTP请求可能有多个连接,但没有无用的连接。

我问这个问题,因为我不确定Rethink如何处理短/长连接以及它们有多昂贵。例如,MongoDB更喜欢长连接,但RethinkDB文档中的所有示例都为每个HTTP请求使用一个连接。

1 个答案:

答案 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

这可能也是社区的目标。