RethinkDB 的短期或长期连接?

Short or long lived connections for RethinkDB?

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

我看到下一个选项:

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

我建议每个查询一个连接池或一个连接。特别是如果您使用像 changefeeds 这样的功能,建议使用它自己的连接。

当您对所有内容使用单个连接时,您还必须在连接 timeout/broken 时处理重新连接。我认为每个查询只使用一个连接,或者在 request/response 上共享一个连接更容易。

使用后一定要关闭连接,否则会泄漏连接,无法创建新连接。

一些驱动程序走得更远,不再需要你考虑连接,例如:https://github.com/neumino/rethinkdbdash

或者 Elixir RethinkDB:​​https://github.com/hamiltop/rethinkdb-elixir/issues/32 创建连接池时出现问题。

RethinkDB 有一个与连接池相关的问题:https://github.com/rethinkdb/rethinkdb/issues/281

这可能也是社区的发展方向。