Chetan Ranpariya Ответов: 3

Хорош ли ORM только для поиска данных?


Всем Привет,

У меня есть один вопрос относительно технологий ORM.

У меня есть задача здесь, где мне нужно разработать отчетно-аналитический инструмент, который будет показывать отчеты и диаграммы пользователю на основе данных, полученных из базы данных.

Бизнес - логика поиска данных записывается в хранимые процедуры на базе данных, приложение будет запускать SPs, извлекать из них данные и отображать их в отчете или в виде диаграмм.

Клиент настаивает на использовании технологии ORM, предпочтительно Entity Framework.
Но я в замешательстве относительно того, насколько возможно использовать технологию ORM только для извлечения данных, потому что это будет хорошая попытка создать сопоставления и другие вещи, чтобы заставить ее работать нормально. и после всех этих усилий мы не используем самую важную функцию ORM - отслеживание состояния объекта и управление персистентностью. Кроме того, извлечение данных с помощью ORM будет медленным, так как возникнут накладные расходы на создание объектов из данных, извлеченных из базы данных.

Я бы предпочел использовать обычные ADO.NET а также собирать данные в dataset datareader и передавать их в отчет диаграммы для отображения.

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

Спасибо и с уважением,
Четан Ранпария

3 Ответов

Рейтинг:
23

KenJohnson

Имея дело с такого рода ситуациями, я обычно сравниваю ценность времени разработчика с производительностью машины. Если вы являетесь компетентным разработчиком/администратором баз данных, вы почти всегда можете значительно превзойти производительность, которую вы получаете от ORM. Обратите внимание, что это имеет очень мало общего с компиляцией кода sql и много общего со статистикой и индексами. Кроме того, небольшие изменения в sql могут иметь больший эффект, чем вы думаете разумно.

Проще говоря, ORM хорош, и вы, вероятно, должны использовать его в качестве первого проекта вашего приложения.

Затем производительность может быть улучшена с помощью соответствующих хранимых процедур и последующих модификаций базы данных.

Кругозор


Рейтинг:
19

Al-Farooque Shubho

Для целей отчетности, очевидно, было бы хорошей идеей не использовать ORM (то есть использовать хранимую процедуру и DataReader), просто потому, что это позволило бы вам генерировать отчеты быстрее, особенно если ваша база данных имеет тенденцию увеличиваться (и, следовательно, выполнение SQL отчета будет иметь тенденцию становиться медленнее). Это также позволит вам позже управлять функциями отчетности более простым способом.

Вы можете попросить своего клиента сообщить вам причину, по которой он хочет настаивать на ORM. Может быть, их объем данных имеет умеренный размер, или клиент вашего клиента может настаивать на использовании ORM (кто знает?). Знание причины поможет вам решить вашу стратегию, чтобы убедить вашего клиента в этом вопросе.


Pete O'Hanlon

Хммм. Боюсь, не совсем точно. Хорошо обработанный запрос ORM может быть так же эффективен, как и ручной. Весь фокус в том, чтобы знать, как добиться наилучшей производительности от ОРМ. Я подозреваю, что вы имеете в виду идею о том, что план выполнения хранимой процедуры компилируется, а прямой запрос-нет. Если ОП разрабатывается в SQL Server, то это не всегда так - прямые запросы также могут быть скомпилированы.

Рейтинг:
0

Chetan Ranpariya

Привет, Аль-Фарук,

Спасибо, что опубликовали ответ.

Но меня смущает самое первое предложение вашего ответа.

Для целей отчетности, очевидно, было бы хорошей идеей не использовать ORM (это означает, что я не должен использовать ORM для целей отчетности), (но наоборот, вы говорите, что) просто потому, что это позволит вам генерировать отчеты быстрее, особенно если ваша база данных имеет тенденцию расти больше (и, следовательно, выполнение SQL-отчета будет иметь тенденцию становиться медленнее)(Означает, что если моя база данных имеет тенденцию к увеличению, то хорошо использовать ORM для целей отчетности).

В любом случае, для меня база данных имеет миллионы записей, которые нужно вытащить, чтобы генерировать отчеты. И как вы предлагаете, я спрошу их о фактических требованиях, а также буду держать свою точку зрения перед ними.

Спасибо снова...

Спасибо и с уважением,
Четан Ранпария


Al-Farooque Shubho

Я понял, что мой ответ был немного запутанным. Я немного изменил ответ, чтобы он был более ясным.