Расширяемое приложение Rails, которое подключается к нескольким базам данных - PullRequest
0 голосов
/ 20 июня 2010

Я внедряю приложение Rails, которое должно объединять результаты поиска из N независимых гетерогенных баз данных. Пример использования будет:

  • Пользователь запрашивает "xpto"
  • Запрос отправляется во все базы данных, зарегистрированные в системе
  • Результаты преобразуются и объединяются в предопределенном формате
  • Пользователь получает результаты

Приложению необходимо предоставить точку расширяемости для введения новых баз данных в систему. Здесь база данных может быть разной - плоский файл, база данных SQL, интерфейс REST для базы данных SQL и т. Д.

Если бы я работал в C # / Java, игнорируя проблемы со скоростью, я бы определил систему управления подключаемыми модулями, в которой каждый узел имел бы подключаемый модуль, который знал бы, как запрашивать и преобразовывать результаты узла. Новые хосты будут легко представлены путем определения нового плагина и настройки хоста в системе.

Я новичок в рельсах и ищу идеи, инструменты или шаблоны проектирования, которые могут помочь мне решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 20 июня 2010

Из ссылки API :

Соединения обычно создаются через ActiveRecord :: Base.establish_connection и извлекаются ActiveRecord :: Base.connection.Все классы, унаследованные от ActiveRecord :: Base, будут использовать это соединение.Но вы также можете установить класс-специфическое соединение.Например, если Course является ActiveRecord :: Base, но находится в другой базе данных, вы можете просто сказать Course.establish_connection и Course, и все его подклассы будут использовать это соединение вместо этого.

0 голосов
/ 20 июня 2010

Я бы предпочел написать собственный адаптер ActiveRecord, который бы запрашивал все ваши базы данных и объединял результаты.

...