【问题标题】:Pooling in Phoenix for OrientDB database在 Phoenix 中为 OrientDB 数据库池化
【发布时间】:2015-10-23 23:23:17
【问题描述】:
我想将 Phoenix/Elixir 与 OrientDB 一起使用。我决定构建一个小演示应用程序来更好地理解它。
作为数据库驱动程序,我将使用MarcoPolo 而根本不使用 Ecto。 MarcoPolo 非常低级(二进制驱动程序)并且不支持池化。
我必须使用池吗?凤凰有办法解决吗?还是我必须自己使用Poolboy 之类的东西来实现它?还是别的什么?
我想分享演示应用,让其他人的生活更轻松。所以我想以正确的方式去做。但也许我的方法有点矫枉过正。
【问题讨论】:
标签:
orientdb
elixir
phoenix-framework
【解决方案1】:
MarcoPolo 是一个非阻塞客户端,这意味着当进程要求 MarcoPolo 连接向 OrientDB 发送命令时,MarcoPolo 会立即向 OrientDB 发送命令,但不会等待响应(然后它作为 Erlang 消息接收,因为它在 :gen_tcp 上使用 :active)。这在实践中意味着单个 MarcoPolo 连接应该能够处理多个客户端进程,因此如果您的应用程序不必处理对 OrientDB 的大量请求,则无需池化。
如果您想使用池化,最简单的解决方案可能是您已经想到的 poolboy。我没有特定于 OrientDB 的设置,但您可以在 Redix(Elixir 的 Redis 客户端)的文档中找到有关如何设置与数据库的连接池的一些信息。原理是一样的。 This 是 Redix 文档中涉及池的部分。