2014-05-16 79 views
2

我有一種情況,我的應用需要根據請求連接到數據庫。數據庫的數據模型是相同的,但我需要並行連接到不同的數據模型。例如,我的REST風格的路線可能是這樣的使用ActiveRecord連接到多個數據庫

/database/:database_id/user/:user_id # Get user :user_id from database :database_id 

我看過類似的問題,他們都建議使用ActiveRecord::Base#establish_connection。但是,這些問題似乎並不能處理在使用相同模型類時同時訪問多個數據庫的情況。我擔心的是我會得到一個請求,建立一個連接,開始從數據庫讀取數據,但是接下來會有一個新的請求,並且改變ActiveRecord的連接。這是一個合理的擔心嗎?我使用Rails 3.0在Ruby 1.8.7上運行這段代碼。

謝謝。 - Max

回答

3

所以,我正面臨着類似的問題,其中連接需要有些動態。而不是使用ActiveRecord,我建議只使用db驅動程序。在我的情況下,它是一個遺留數據庫,並且我不需要記錄就可以轉換成一個可以操作並保存回數據庫的對象,這更多的是用於報告目的 - 我只需要聚合的結果查詢(僅限選擇)。

對於這種情況下,只使用MySQL2 gem偉大的作品。這種方法允許Rails對應用程序中的某些東西(我希望/需要一個ORM)進行斟酌,但是當我真的需要連接到任意數據庫來獲取一些快速數據時,我可以靈活地避免AR。

因此,這裏有你要問自己一些問題:

  • 我需要的ORM一樣的功能,以DB行映射爲對象?我需要CRUD操作嗎?
  • 是否需要持久連接,或者如果數據庫連接在請求後消失,是否可以使用?
    • (當然,如果你願意,你可以創建自己的游泳池和持久連接/需要)

如果您不需要ORM一樣的功能有CRUD操作,你可以得到只需幾個簡單的操作,如果你不需要持久連接,我建議你只需要使用數據庫的DB驅動程序。

HTH

+0

我將只從數據庫中讀取,但它是可以方便地使用一些關係功能活動記錄給你,因爲數據是高度相關的。另外,您還可以免費獲得我需要的JSON seialization。一旦我開始實施這些東西,我將在明天發佈更新。謝謝你的偉大答案。 – Max