1

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

我看到下一个选项:

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

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

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

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

4

1 回答 1

2

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

当您对所有内容使用单个连接时,您还必须在连接超时/断开时处理重新连接。我认为每个查询只使用一个连接,或者在请求/响应上共享一个连接更容易。

只要确保在使用后关闭您的连接,否则您会泄漏连接并且无法创建新连接。

一些驱动程序更进一步,不再需要您考虑连接,例如:https ://github.com/neumino/rethinkdbdash

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

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

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

于 2015-11-10T20:20:34.290 回答