Ограничивает ли Rails ORM возможность выполнения агрегации? - PullRequest
3 голосов
/ 02 февраля 2009

Меня беспокоит, может ли Rails обрабатывать типы сложных агрегаций, которые необходимы для финансового приложения, и, в частности, может ли ORM эффективно их обрабатывать. В финансовом приложении, для которого я собираюсь использовать это, существует необходимость в большом количестве отчетов о подробных финансовых данных, агрегированных различными способами. Без поддержки в Rails ORM мне пришлось бы писать прямой SQL. Но я обеспокоен тем, что, как только я начну это делать, другие части Rails могут не работать так же хорошо, и что в результате я могу в основном использовать Rails для своих маршрутов и совсем немного. Это действительная проблема или я беспокоюсь излишне?

Ответы [ 4 ]

3 голосов
/ 03 февраля 2009

Ограничения ActiveRecord - одна из причин, по которым у меня возникли проблемы с использованием Rails в научной среде. Вы можете попробовать альтернативные Ruby ORM, которые немного облегчают работу с устаревшей базой данных:

В конечном счете, хотя ORM по своей конструкции уводят вас от SQL, возможно, что ни один из них не подходит.

3 голосов
/ 02 февраля 2009

Этот вопрос иллюстрирует проблему RoR, которая довольно широко обсуждается - ее относительный дискомфорт из-за сложных требований к отображению базы данных. (Это действительно шаблон ActiveRecord, в котором лежат трудности.) Ему нравится разбивать сложные запросы на более простые, которые в большей степени соответствуют модели AR, что, как вы, вероятно, уже знаете, является относительно легкой абстракцией таблиц с простыми отношениями, основанными, например, на утверждения типа один ко многим.

Так что я бы сказал, что вам будет удобнее, если вы примете на себя обязанности SQL, а затем разрешите RoR обрабатывать непостоянные части.

Это не проблема, ограниченная RoR. Практически любой инструмент объектно-реляционного моделирования задает одни и те же вопросы.

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

2 голосов
/ 02 февраля 2009

Возможно, что Rails не является подходящей платформой для этого приложения. ИЛИ вы можете рассмотреть возможность использования ActiveRecord против представлений в вашей базе данных. Объедините ваши данные в ваших представлениях, затем, используя гем 'rails_sql_views', вы можете рассматривать их как обычные модели. (Я никогда не использовал это, поэтому я не знаю, насколько хорошо это работает на практике.)

Ссылка: rails_sql_views

Редактировать: При дальнейшем осмотре вам может даже не потребоваться этот драгоценный камень или какая-либо другая специальная настройка для простого запроса к представлениям.

1 голос
/ 03 февраля 2009

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

...