|
ORM vs sql
|
|||
---|---|---|---|
#18+
EnomayLelouchА к чему ваш комментарий, можно вопрос? Может сначала перечитаете вопрос, на который я отвечал? вы написали что необходимо преобразование. преобразование чего во что? конечно в том или ином виде оно всегда и везде есть. я уверен что даже внутри сиквела. но используя нормальные ORM, у вас не возникает необходимость делать это самому. и к тому же отпадает необходимость в том коде, что вы привели как пример. Еще раз посмотрите на что я отвечал... Вопрос ОРМ не касался.) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 19:12 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
МСУНе понимаю, всё же. В чём тяжелость и избыточность хибера? Нужно переключиться на другую БД (например, Oracle) - переключаем провайдер в конфиге. Нужно развернуть базу по схеме в инсталляторе - вызываем метод, который по схеме все сделает. большинство проектов, о которых я знаю, либо никогда не меняли базу, либо делали это исключительно ради оптимизации (например, переход с sql на nosql). Нельзя тупо поменять базу, ничего не поменять в коде и получить +500% в скорости. Так что ИМХО смена базы — проблема и, соответственно, выгода, сильно надуманы. Да, ты сейчас скажешь что ORM позволит оставить бОльшую часть кода как есть, но тот же переход sql->nosql требует заодно и смены подхода к работе с данными. А количество кода, которое необходимо будет переписать, зависит не от факта использования ORM, а от наличия первоначальной абстракции DAL и BL. В хибере очень много всего, что нужно настроить, чтобы заработало. Более высокий порог вхождения. А если внезапно начнет глючить в неумелых руках, то ошибки можно искать долго и упорно. Особенно коварны транзакции и кэш. В некоторых случаях кэш вообще нафиг не нужен, а он есть. А если несколько серверов — появляется ещё и проблема репликации кэша. Я не говорю что это отмазки ламеров чтобы не использовать. Пожалуйста, если это все нужно и умеешь работать. Но если нет — то хибер крайне избыточен и потери CPU внутри на все перделки при большой нагрузке становятся сильно заметны. Например, мне нужно делать выборки актуальных данных по вроде бы простым динамическим критериям. Нужно делать очень быстро, много и на большом объеме данных. Хибер не в состоянии это закэшировать, просто нет таких алгоритмов. Он хорошо справляется с поиском по ключу, но сложнее — проходит мимо. Лучше взять инструмент проще и эффективнее, например mybatis, и получить то, что мне нужно, сразу и без танцев. МСУНо так или иначе, самое ценное в ORM - это типизация хранилища, как следствие родной человеческий интелиссенс, с которым одно удовольствие работать. Рутинные же SELECT FROM WHERE в прошлом. Ну ты уж определись, тебе чтобы код быстрее писать, или чтобы написанный код быстрее работал. Иногда приходится чем-то жертвовать. Селекты бывают рутинные только если ты работаешь с таблицами данных по типу простых CRUD по ключу, и это не обязательно должно работать сверхбыстро. Тут да, я уже писал, ORM пожалуйста. Ну а в остальных случаях те же селекты, фром, вэрэ, куда ж без них :) но уже в других ракурсах. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 21:12 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
Enomayиспользуя ORM, я пропишу это условие в одном месте и все запросы будут работать правильно. в вашем случае вы будете тупым поиском пересматривать все текстовые запросы и хранимые процедуры. а если добавится еще условие? будете лазить еще и еще. при этом нет никакого контроля, что вы не сломали нигде ничего. ведь тестами это покрыть вы не можете. Я не очень понимаю, как ты представляешь себе архитектуру приложения с ORM и без? Почему, если нет ORM, то обязательно все будет раскидано по разным частям кода? Ну вот просто как-то не понимаю :) Enomayиспользуя ORM, я могу наследовать логику, а значит и запросы к базе. в вашем случае, вам придется использовать динамический SQL, который привнесет дополнительный ад в проект. а с ORM, если нужно делать выборки по динамическим критериям, не нужно будет писать динамический запрос на одном из этих самых языков запросов? sql-подобный как в хибернейте или какие-нибудь конструкторы критериев? это не как АД выглядит? :) что за предрассудки? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 21:18 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
ПарамонViPRosкусок соственной проги со всеми приблудами кто нить покажет? или вы все работаете в цру? Вот вам, маленький запросик которых в приложении сотни. Конечно вы его протестировали в студии, посмотрели план, и так каждый раз после любого изменения. Эффективно.. :) Парамоша, в ВИПРОС вся эта фигня генерируется и кешируется при изменении чего нить кеш проверяется на валидность и приводится в нужный вид если возможно или метится как говно (это по части СКЛ запросов = виртуальные типы) потом проверяются методы использующие данный тип и т.д. а воще все делатеся наоборот - из метаданных генерируются БД и запросы(виртуальные типы - вью) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 21:18 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыEnomayиспользуя ORM, я пропишу это условие в одном месте и все запросы будут работать правильно. в вашем случае вы будете тупым поиском пересматривать все текстовые запросы и хранимые процедуры. а если добавится еще условие? будете лазить еще и еще. при этом нет никакого контроля, что вы не сломали нигде ничего. ведь тестами это покрыть вы не можете. Я не очень понимаю, как ты представляешь себе архитектуру приложения с ORM и без? Почему, если нет ORM, то обязательно все будет раскидано по разным частям кода? Ну вот просто как-то не понимаю :) Enomayиспользуя ORM, я могу наследовать логику, а значит и запросы к базе. в вашем случае, вам придется использовать динамический SQL, который привнесет дополнительный ад в проект. а с ORM, если нужно делать выборки по динамическим критериям, не нужно будет писать динамический запрос на одном из этих самых языков запросов? sql-подобный как в хибернейте или какие-нибудь конструкторы критериев? это не как АД выглядит? :) что за предрассудки? Если под динамическими критериями подразумевается то что запрос меняется в зависимости от условий то на LINQ это спокойно пишется без SQL, Entitu SQL , etc. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 21:41 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
LelouchЕсли под динамическими критериями подразумевается то что запрос меняется в зависимости от условий то на LINQ это спокойно пишется без SQL, Entitu SQL , etc. да спасибо что глаза открыл, я этого и не отрицал. Я говорил что выглядит это по сути так же как составление динамического запроса на sql. Так что аргумент Enomay про какие-то там сложности мне не очень понятен. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 21:46 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыLelouchЕсли под динамическими критериями подразумевается то что запрос меняется в зависимости от условий то на LINQ это спокойно пишется без SQL, Entitu SQL , etc. да спасибо что глаза открыл, я этого и не отрицал. Я говорил что выглядит это по сути так же как составление динамического запроса на sql. Так что аргумент Enomay про какие-то там сложности мне не очень понятен. Нет, это выглядит совершенно по другому.) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 21:48 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
кстати напиши мне без стороннего кода условие where с поиском по названию поля, переданному как аргумент, на linq да ладно, можешь не писать, суть надеюсь понял. Задача стара как боян и существует с момента появления самого linq, и вроде как самой библиотекой она так и осталась нерешенной. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 21:48 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыкстати напиши мне без стороннего кода условие where с поиском по названию поля, переданному как аргумент, на linq да ладно, можешь не писать, суть надеюсь понял. Задача стара как боян и существует с момента появления самого linq, и вроде как самой библиотекой она так и осталась нерешенной. Тупой вариант switch-case по названию полей не рассматривать? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 21:52 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыВ хибере очень много всего, что нужно можно настроить, чтобы заработало Имхо, так правильней. Лейтмотивом версии 3.2 можно считать "Меньше настроек, больше дела." зыНапример, мне нужно делать выборки актуальных данных по вроде бы простым динамическим критериям. Нужно делать очень быстро, много и на большом объеме данных. Хибер не в состоянии это закэшировать, просто нет таких алгоритмов. Он хорошо справляется с поиском по ключу, но сложнее — проходит мимо. Лучше взять инструмент проще и эффективнее, например mybatis, и получить то, что мне нужно, сразу и без танцев. Вы часом не OLAP на хибер пытались навесить? Может быть пример очень быстро, много и на большом объеме данных приведёте? А то похоже на ситуацию "выбери любых два пункта" Да и проекции в хибере никто не отменял, и выполняются они намного быстрее работы с сущностями. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 21:58 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
LelouchНет, это выглядит совершенно по другому.) а что другого-то? ты правде в глаза погляди, решение проблемы на большинстве предлагаемых инструментов выглядит одинаково +- пара букв. http://www.mybatis.org/core/statement-builders.html и хреначь в свое удовольствие. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 21:59 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
SolYUtorВы часом не OLAP на хибер пытались навесить? Может быть пример очень быстро, много и на большом объеме данных приведёте? А то похоже на ситуацию "выбери любых два пункта" Да и проекции в хибере никто не отменял, и выполняются они намного быстрее работы с сущностями. нет, упаси меня от olap и кубов. Какой конкретный пример? Любой публичный сервис, задача которого — обрабатывать выборки хотя-бы со скоростью пару десятков тысяч запросов в секунду по базе размером, ну пусть от 50гигабайт, уже лучше давно пора начать избавлять от хибернейта и прочих монстров. Хотел привести социальную сеть, но неразумно — там можно много и яростно кэшировать и актуальность там не критична. Пусть будет какой-нибудь сервис для совместной работы людей над XXX в реальном времени. Выборки включают фильтрацию по правам, коллекциям и атрибутам XXX для отображения данных конкретному пользователю. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 22:08 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыLelouchНет, это выглядит совершенно по другому.) а что другого-то? ты правде в глаза погляди, решение проблемы на большинстве предлагаемых инструментов выглядит одинаково +- пара букв. http://www.mybatis.org/core/statement-builders.html и хреначь в свое удовольствие. А если я в этом инструменте сначала вызову метод Where а потом Join? он переместит строку Join выше условия? Код: java 1. 2. 3. 4. 5. 6.
Linq: Код: c# 1. 2. 3. 4. 5. 6.
Прям одно и тоже, особенно с типизацией и возможностью обработки noSQL (для EF достаточно найти провайдера. а для этой библиотеки что?) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 22:08 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыЯ не очень понимаю, как ты представляешь себе архитектуру приложения с ORM и без? Почему, если нет ORM, то обязательно все будет раскидано по разным частям кода? Ну вот просто как-то не понимаю :) Обычно если человек использует ORM, то как правило вся логика работы с данным сконцентрирована в одном слое - DAL. Та же ситуация может быть и при использовании SQL запросов, прописанных в коде. Другое дело когда мы начинаем примазывать тут использование хранмых процедур. Тут уже отследить где какая выборка, становится сложнее. Хранимые могут вызываться другими хранимыми и так далее. Проблема в том, что DAL слой с ORM при поддержке современных IDE очень легко поддерживать, рефакторить. зыа с ORM, если нужно делать выборки по динамическим критериям, не нужно будет писать динамический запрос на одном из этих самых языков запросов? sql-подобный как в хибернейте или какие-нибудь конструкторы критериев? это не как АД выглядит? :) что за предрассудки? опять же, это будет тестируемо и как минимум будет содержать значительно меньше синтаксических ошибок, в силу строгой типизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 22:10 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
Lelouch, даже не близко ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 22:13 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
Ответ на ваш вопрос про поле по названию: Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 22:14 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
ViPRosLelouch, даже не близко Браво, правда это был сарказм. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 22:14 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
ViPRosLelouch, даже не близко Если вы насчет оператора like то мне просто было не интересно искать его реализацию кроме показанной выше на 2 поста) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 22:15 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыфуфуфу. конечно нет IQueriable творит чудеса. в купе с extension и спецификациями. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 22:17 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
LelouchViPRosLelouch, даже не близко Браво, правда это был сарказм. да какой нафиг сарказм хардкод детектед ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 22:22 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
LelouchОтвет на ваш вопрос про поле по названию: Код: c# 1. 2.
а вот это уже недалко от датасет :):) можно и покруче ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 22:24 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
ViPRosLelouchпропущено... Браво, правда это был сарказм. да какой нафиг сарказм хардкод детектед То есть это: Код: java 1. 2. 3. 4. 5. 6.
не хардкод, а это: Код: c# 1. 2. 3. 4. 5. 6.
хардкод?) P.S. Отвечали не Вам) P.P.S. Идите Generic'и пробуйте, потом напишите эссе о их ужасной производительности) Я прочту) Честно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 22:25 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
LelouchА если я в этом инструменте сначала вызову метод Where а потом Join? он переместит строку Join выше условия? а если я с головой не дружу, компьютер мне поможет? :) в linq ты не можешь случайно переставлять все подряд местами, иначе получится что из базы выходит все, а фильтрует приложение. LelouchПрям одно и тоже, особенно с типизацией и возможностью обработки noSQL (для EF достаточно найти провайдера. а для этой библиотеки что?) Я уже писал выше свое отношение к смене сервера, нужно следить за дискуссией. Так что если нужен nosql, я буду сразу на нем писать. Кстати mybatis поддерживает только sql, впрочем как и linq to sql. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 22:26 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
ViPRosLelouchОтвет на ваш вопрос про поле по названию: Код: c# 1. 2.
а вот это уже недалко от датасет :):) можно и покруче До датасета как до луны) Точнее датасету до этого))) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 22:26 |
|
|
start [/forum/topic.php?fid=17&msg=37605982&tid=1350478]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 173ms |
0 / 0 |