рельсы и мультибазы данных, использующие установление соединения на лету, чтобы направить к правильной базе данных? - PullRequest
1 голос
/ 03 ноября 2010

Я хочу структурировать свою базу данных таким образом, чтобы определенные таблицы (которые не имеют никаких связей с другими таблицами, поэтому не требуется никаких объединений) должны быть помещены в отдельные базы данных mysql.

Я знаюкаждая модель имеет свойство establish_connection.

Что я хочу сделать:

  1. Я получу 10 строк из конкретной модели на основе clientID.

clientID будет определять, из какой базы данных будет получена эта модель.

Я хочу как-то запрограммировать эту логику маршрутизации базы данных в логику модели.

Возможно ли это?*

Ответы [ 3 ]

7 голосов
/ 05 ноября 2010

Вы можете указывать отдельные модели на разные базы данных, используя в своих моделях установление_соединения.См. здесь для примеров .

Если вы хотите, чтобы одна модель имела доступ к нескольким базам данных на основе атрибута, вам, вероятно, нужно использовать сегментирование базы данных, например, с DataFabric или ShardTheLove .

4 голосов
/ 14 ноября 2010

Не знаю, может ли это помочь вам:

https://github.com/brianmario/mysql2

Это позволяет вам выполнять подключения и запросы, такие как:

1 голос
/ 15 ноября 2010

Похоже, вам нужна поддержка 'Sharding'

К сожалению, ActiveRecord не имеет этого встроенного. Есть несколько драгоценных камней, которые взламывают в поддержке Sharding

Драгоценный камень "осьминог" кажется многообещающим. Смотри https://github.com/tchandy/octopus

Примечание: я сам не использовал осьминога

Если вы готовы пойти еще дальше, я рекомендую Сиквел (http://sequel.rubyforge.org/), который является стабильным, многофункциональным ORM, который я использовал ранее.

Документация отличная. Что вам нужно, это http://sequel.rubyforge.org/rdoc/files/doc/sharding_rdoc.html

Может потребоваться некоторое время, чтобы привыкнуть к сиквелу, если вы привыкли к AR 2.x. Есть хорошее руководство по миграции. Смотри http://sequel.rubyforge.org/rdoc/files/doc/active_record_rdoc.html

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...