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及其所有子类将使用此连接。

相关问题