我正在实现一个Rails应用程序,需要聚合来自N个独立异构数据库的搜索结果。一个示例用例是:
应用程序需要为在系统中引入新数据库提供扩展点。这里的数据库可以是不同的类型 - 平面文件,SQL数据库,SQL数据库的REST接口等等。
如果我在C#/ Java中工作,忽略速度问题,我会定义一个插件管理系统,其中每个主机都有一个插件,知道如何查询和转换主机的结果。通过定义新插件并在系统中配置主机,可以轻松引入新主机。
我是rails的新手,我正在寻找可以帮助我解决这个问题的想法,工具或设计模式。
答案 0 :(得分:0)
我最好的猜测是编写一个自定义ActiveRecord适配器,它将查询所有数据库并合并结果。
答案 1 :(得分:0)
来自API参考:
连接通常通过ActiveRecord :: Base.establish_connection创建,并由ActiveRecord :: Base.connection检索。从ActiveRecord :: Base继承的所有类都将使用此连接。但您也可以设置特定于类的连接。例如,如果Course是ActiveRecord :: Base,但驻留在不同的数据库中,您可以说Course.establish_connection和Course及其所有子类将使用此连接。