最近我们考虑过将奴隶数据库用于我们的搜索/读取操作。我们没有任何计划将所有读取请求发送给奴隶。我们只想将我们的搜索查询中的一小部分打到奴隶数据库
我尝试了几乎所有可用的宝石octopus, octoshark, db-charmer, makara, knockoff
,但它们都没有正常工作。
For example on Octopus (other gems too)
,下面是一个大问题
Octopus.using(:slave1) do User.first end
。
这很好用,并使用“slave1”。
但不确定为什么以下不起作用。
Octopus.using(:slave1) do User.where(id: 1) end
这个没有使用slave1,但它在master数据库上触发,我们的大多数搜索查询都采用这种格式。
直到现在,这令人非常沮丧。任何帮助将不胜感激。答案 0 :(得分:0)
也许尝试直接在User
模型中建立数据库连接?
class User < ActiveRecord::Base
octopus_establish_connection(db_url_to_slave)
..
end
我们目前正在制作Octopus,我相当确定where
用例适用于我们:P
如果您需要更多信息,此section in the docs会详细说明该方法。
答案 1 :(得分:0)
经过多次努力,我发现User.where(id: 1)
只创建了一个活动的记录关系,但查询在octopus
之外执行。所以,当我User.where(id: 1).to_a
时,神奇的一切都开始为我做好了。
我尝试过多次使用这个技巧。我花了很多时间才弄明白。