0

我正在實現一個需要從N個獨立異構數據庫中聚合搜索結果的Rails應用程序。一個示例使用情形將是:連接到多個數據庫的Extensible Rails應用程序

  • 用戶查詢「xpto」
  • 該查詢提交給所有的系統上註冊的數據庫
  • 結果變換和組合在預定格式
  • 用戶得到結果

應用程序需要爲在系統中引入新數據庫提供一個可擴展性點。這裏的數據庫可以是不同類型的 - 平面文件,SQL數據庫,SQL數據庫的REST接口等。

如果我在C#/ Java中工作,忽略速度問題,我會定義一個插件管理系統,每個主機都有一個插件,可以知道如何查詢和轉換主機的結果。通過定義新的插件並在系統中配置主機,可輕鬆引入新的主機。

我是新來的鐵軌,我正在尋找想法,工具或設計模式,可以幫助我解決這個問題。

+0

更好使這個社區維基 – clyfe 2010-06-20 11:52:09

回答

0

我最好猜測wolud是編寫一個定製的ActiveRecord適配器,它將查詢所有數據庫併合並結果。

+0

這是一種可能性,但我寧願有不同的模塊爲不同的數據庫。 – luis 2010-06-20 11:19:05

+0

您的MultiSourceAdapter是否依賴於多個MultiSourceAdapterAdapter.s並在database.yml中爲每個源指定適配器和adapteradapter。 – clyfe 2010-06-20 12:02:32

0

API參考:

連接通常是通過ActiveRecord的:: Base.establish_connection創建並由的ActiveRecord :: Base.connection檢索。從ActiveRecord :: Base繼承的所有類都將使用此連接。但是你也可以設置一個特定於類的連接。例如,如果課程是ActiveRecord :: Base,但駐留在不同的數據庫中,則可以說Course.establish_connection和Course及其所有子類將使用此連接。

相關問題