Извините, если этот вопрос немного глупый, но есть ли какие-либо отрицательные последствия, если приложение имеет модель или модели с многочисленными ассоциациями? Для сложного приложения, требующего модели пользователя, например (например, сайт социальной сети), вполне вероятно, что модель может иметь более 15 ассоциаций (has_many :posts, has_many :messages, has_many :photos, has_many :friends
и т. Д.). Если одна модель сильно связана с другими, оказывает ли это какое-либо негативное влияние на производительность приложения? И если да, то каков наилучший способ свести к минимуму проблемы?У моделей Can Rails слишком много ассоциаций?
ответ
Связи между моделями в Rails действительно просто манипулирует значение идентификаторов за кадром. Это довольно высокопроизводительные операции, особенно если вы потратили время на настройку отношений внешнего ключа, если ваша БД поддерживает его. ActiveRecord также не загружает ничего, если вы не попросите его, поэтому обычно они будут переведены как JOIN для SQL-сервера, только если вы действуете на эти отношения.
Как создаются сообщения, сообщения, фотографии или друзья в вашем примере, ActiveRecord автоматически установит столбец user_id
. Это все, что связано с ассоциацией has_many
.
Преждевременная оптимизация - вот корень всего зла. Не беспокойтесь об этом, пока вы не установили узкое место с профилированием.
Ну, первый совет, который я мог бы предложить, - это прототип чего-то быстро и посмотреть, как он работает.
Что касается ограничения на ассоциации, ActiveRecord по умолчанию использует ленивые отношения. Таким образом, загрузка пользователя не будет автоматически загружать сообщения, сообщения, фотографии, друзей и т. Д., Пока вы не попросите их. Это обычно очень хорошо для вас, так как вам, вероятно, не нужны все их фотографии на странице сообщений.
Вот ссылка с некоторыми советами по оптимизации ActiveRecord для некоторых более глубокой информации: http://www.ibm.com/developerworks/web/library/wa-rails3/
- 1. Rails: Когда использовать много-много ассоциаций?
- 2. Объяснение ассоциаций моделей в Rails Active Record
- 3. Rails Composite Keys - Настройка моделей и ассоциаций
- 4. factory girl rails trac для ассоциаций моделей
- 5. Слишком много маршрутов Rails?
- 6. У ElasticSearch поисковый запрос есть много моделей отношений rails
- 7. У NSMatrix слишком много кнопок?
- 8. Rails ActiveRecord: подсчет ассоциаций ассоциаций
- 9. Rails app слишком много параметров
- 10. Mixin для определения ассоциаций моделей в Rails 3.1
- 11. Rails, выполняющий слишком много SQL
- 12. Слишком много фильтров плохо? + rails
- 13. SQL много-много рекурсивных ассоциаций?
- 14. Сколько классов слишком много? Rails STI
- 15. Создание ассоциаций моделей Rails для has_many и принадлежит_to
- 16. Создание ассоциаций моделей для упрощения запросов
- 17. Модели ассоциаций Rails
- 18. factory_girl: имеет много ассоциаций
- 19. Cakephp 2.0 валидация ассоциаций моделей
- 20. У меня слишком много слоев WPF здесь?
- 21. У моего хранилища слишком много логики?
- 22. У вас слишком много хранимых процедур?
- 23. Codeigniter: у веб-сайта слишком много перенаправлений
- 24. Когда у вас слишком много таблиц?
- 25. У вас слишком много утверждений (в Python)?
- 26. Rails: применяются, когда условия для обеих моделей и ассоциаций
- 27. У Rails есть много и принадлежит
- 28. Rails cancan пользователь, у которого много пользователей
- 29. Rails Dup: переназначение ассоциаций
- 30. Rails использует столбец не id для ассоциаций моделей