railsで複数DBを素早く切り替えるためには?
環境: ruby2.1.3, rails4.2, activerecord-sqlserver-adapter4.1
20個ほどあるデータベースを、あちこち切り替えながら処理しなくてはならない場合。
まず接続情報を格納した配列(specs)を用意して、
Benchmark.bm do |x|
100.times{ x.report{ ActiveRecord::Base.establish_connection(specs.sample) } }
end
と確認してみたところ。どうにも0.9秒~1.2秒かかっているようです。
単体コストはともかくとして、最初にガッツリ全部の接続先をキープして、
クエリを投げる先だけ変えるような感じで切替コストを下げることは、できないものでしょうか。
以下、考え事:
(接続モデルをDB分作って、各モデルが継承という手も考えたのですが。全てのモデルファイルのコピーを20個ずつ作るのもおかしな話に感じます。動的にモデルを複製して継承しなおすという事も考えたのですが最後の手段にしたいなぁと)