powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Наши за рубежом [закрыт для гостей] / Что происходит на рынке DB вакансий в ЕС?
25 сообщений из 375, страница 10 из 15
Что происходит на рынке DB вакансий в ЕС?
    #21629896
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уже несколько лет как прокачивают навыки дба, оставаясь при этом и разработчиком. Да вакансий дба меньше, ну а рынок толковых спецов по бд ещё меньше, на порядок! Ну а по рынку фриланса, в том числе зарубежного, особенно на фоне популярности всяких там три, я понял, что работы для дба непочатый край. Надо же кому-то потом исправлять то, что наговнокодили разрабы, особенно фанаты орм. :)
Кстати, по фрилансу много заказов от самих разработчиков. А то с течением времени их говноподелка почему-то стала дико тормозить. Докупили железа, но это помогло ненадолго, а потом и вовсе перестало помогать. Вот тогда-то они и приходят к дба. :)
Так что фанаты тем - это благо для дба, без работы не останемся))
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21630140
yabs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte,

Можно пример того, что говнокодят фанаты ОРМ?
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21630583
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам что, ссылку на таск на бирже фриланса или описать словами? :)

Если словами, то, различные crm\erp-системы, где более-менее сложная логика, аналитика. Один заказ был, разработчик написал ПО под MS SQL на каком-то entity фреймворке. С увеличением размеров данных, как я понимаю, все стало дико тормозить. Клиент сам увидел, во что превратилась его система и решил переписывать без entity, логику переводить на сервер, в хп. Ко мне обратились как к специалисту по БД.

Другой вариант. У одной украино-американской конторы есть ПО на ОРМ, только какой-то по ходу свой движок. Какие-то запросы они все же сами пишут. Куча клиентов по всему миру. ПО умеет работать с MS SQL и с PostgreSQL. Сильно заковыристых запросов у них нет. Большую часть логики реализовывают на клиенте. Но вот загрузка данных в систему(порядка 50млн. записей), с каким-то расчетами занимает больше 2ч на MS SQL. Ну типа их заказчиков это устраивает... Хотя, думаю, с логикой на сервере там можно было бы все за полчаса, максимум, загрузить, с расчетами, а то и быстрее.
С MS SQL у них все просто: добавили памяти, работает на столько-то шустрее. С PostgreSQL так не получается, надо настраивать.
Вот они ко мне обратились насчет донастройки PostgreSQL.

p.s. я не говорю, что ОРМ - это однозначное зло. Для автоматизации простых задач без сложной логики их можно использовать, или для автоматизации простых линейных операций в сложном ПО. А для задач, где сложная логика, таки придется уметь писать качественные запросы и уметь их оптимизировать.
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21630678
yabs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte,

Сорри, но я все же не увидел нигде вины orm-фреймворков.
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21631732
sti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yabs 
Megabyte,
Можно пример того, что говнокодят фанаты ОРМ?
вот могу предложить :-) не самый плохой пример, кстати
Спойлер
(@P0 nvarchar(4000),@P1 nvarchar(4000),@P2 nvarchar(4000),@P3 nvarchar(4000),@P4 datetime2,@P5 int,@P6 nvarchar(4000),@P7 nvarchar(4000),@P8 nvarchar(4000),@P9 nvarchar(4000),@P10 nvarchar(4000),@P11 int,@P12 int,@P13 int,@P14 int,@P15 nvarchar(4000),@P16 nvarchar(4000),@P17 int) SELECT TOP 100000 c0_member.member_id FROM c0_member WHERE (c0_member.attribute_18 IS NOT NULL AND ((((c0_member.attribute_3994 = @P0 OR c0_member.attribute_3994 = @P1) AND ((c0_member.attribute_3595 <> @P2 OR c0_member.attribute_3595 IS NULL) AND (c0_member.attribute_3600 <> @P3 OR c0_member.attribute_3600 IS NULL)) AND (DATEDIFF(DAY,@P4,c0_member.attribute_4195) <= @P5 OR c0_member.attribute_4195 IS NULL) AND ((((NOT(c0_member.attribute_5 = @P6) OR c0_member.attribute_5 IS NULL) OR (NOT(c0_member.attribute_5 = @P7) OR c0_member.attribute_5 IS NULL) OR (NOT(c0_member.attribute_5 = @P8) OR c0_member.attribute_5 IS NULL))) AND (NOT(c0_member.attribute_5 = @P9) OR c0_member.attribute_5 IS NULL) AND (((NOT(c0_member.attribute_5 = @P10) OR c0_member.attribute_5 IS NULL) OR c0_member.member_id NOT IN (SELECT recipient_id FROM c0_sending_protocol prot JOIN c0_sending_log log ON prot.sending_id=log.sending_id WHERE log.mailing_id = @P11 AND ( prot.state = @P12 OR prot.state = @P13 OR prot.state = @P14 ) ))) AND (NOT(c0_member.attribute_5 = @P15) OR c0_member.attribute_5 IS NULL) AND (NOT(c0_member.attribute_5 = @P16) OR c0_member.attribute_5 IS NULL)))) AND (c0_member.attribute_51 IS NULL OR c0_member.attribute_51 < @P17)))
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21631915
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yabs 
Megabyte,

Сорри, но я все же не увидел нигде вины orm-фреймворков.
Я вас не понял. Вы вроде просили примеры говноподелок фанатов орм, а не примеры говнокода, который генерит орм.
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21631922
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632134
yabs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sti 
yabs 
Megabyte,
Можно пример того, что говнокодят фанаты ОРМ?
вот могу предложить :-) не самый плохой пример, кстати
Спойлер
(@P0 nvarchar(4000),@P1 nvarchar(4000),@P2 nvarchar(4000),@P3 nvarchar(4000),@P4 datetime2,@P5 int,@P6 nvarchar(4000),@P7 nvarchar(4000),@P8 nvarchar(4000),@P9 nvarchar(4000),@P10 nvarchar(4000),@P11 int,@P12 int,@P13 int,@P14 int,@P15 nvarchar(4000),@P16 nvarchar(4000),@P17 int) SELECT TOP 100000 c0_member.member_id FROM c0_member WHERE (c0_member.attribute_18 IS NOT NULL AND ((((c0_member.attribute_3994 = @P0 OR c0_member.attribute_3994 = @P1) AND ((c0_member.attribute_3595 <> @P2 OR c0_member.attribute_3595 IS NULL) AND (c0_member.attribute_3600 <> @P3 OR c0_member.attribute_3600 IS NULL)) AND (DATEDIFF(DAY,@P4,c0_member.attribute_4195) <= @P5 OR c0_member.attribute_4195 IS NULL) AND ((((NOT(c0_member.attribute_5 = @P6) OR c0_member.attribute_5 IS NULL) OR (NOT(c0_member.attribute_5 = @P7) OR c0_member.attribute_5 IS NULL) OR (NOT(c0_member.attribute_5 = @P8) OR c0_member.attribute_5 IS NULL))) AND (NOT(c0_member.attribute_5 = @P9) OR c0_member.attribute_5 IS NULL) AND (((NOT(c0_member.attribute_5 = @P10) OR c0_member.attribute_5 IS NULL) OR c0_member.member_id NOT IN (SELECT recipient_id FROM c0_sending_protocol prot JOIN c0_sending_log log ON prot.sending_id=log.sending_id WHERE log.mailing_id = @P11 AND ( prot.state = @P12 OR prot.state = @P13 OR prot.state = @P14 ) ))) AND (NOT(c0_member.attribute_5 = @P15) OR c0_member.attribute_5 IS NULL) AND (NOT(c0_member.attribute_5 = @P16) OR c0_member.attribute_5 IS NULL)))) AND (c0_member.attribute_51 IS NULL OR c0_member.attribute_51 < @P17)))
Сложночииаемо, но кроме дурацких столбцов таблицы ничего плохого не вижу.
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632137
yabs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte 
yabs 
Megabyte,

Сорри, но я все же не увидел нигде вины orm-фреймворков.
Я вас не понял. Вы вроде просили примеры говноподелок фанатов орм, а не примеры говнокода, который генерит орм.
Тогда ладно
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632210
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет генерации говнокода ОРМом. Вот в этой статье пишется про "фирменный" почерк Django.
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632260
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yabs 
sti 
пропущено...

вот могу предложить :-) не самый плохой пример, кстати
Спойлер
(@P0 nvarchar(4000),@P1 nvarchar(4000),@P2 nvarchar(4000),@P3 nvarchar(4000),@P4 datetime2,@P5 int,@P6 nvarchar(4000),@P7 nvarchar(4000),@P8 nvarchar(4000),@P9 nvarchar(4000),@P10 nvarchar(4000),@P11 int,@P12 int,@P13 int,@P14 int,@P15 nvarchar(4000),@P16 nvarchar(4000),@P17 int) SELECT TOP 100000 c0_member.member_id FROM c0_member WHERE (c0_member.attribute_18 IS NOT NULL AND ((((c0_member.attribute_3994 = @P0 OR c0_member.attribute_3994 = @P1) AND ((c0_member.attribute_3595 <> @P2 OR c0_member.attribute_3595 IS NULL) AND (c0_member.attribute_3600 <> @P3 OR c0_member.attribute_3600 IS NULL)) AND (DATEDIFF(DAY,@P4,c0_member.attribute_4195) <= @P5 OR c0_member.attribute_4195 IS NULL) AND ((((NOT(c0_member.attribute_5 = @P6) OR c0_member.attribute_5 IS NULL) OR (NOT(c0_member.attribute_5 = @P7) OR c0_member.attribute_5 IS NULL) OR (NOT(c0_member.attribute_5 = @P8) OR c0_member.attribute_5 IS NULL))) AND (NOT(c0_member.attribute_5 = @P9) OR c0_member.attribute_5 IS NULL) AND (((NOT(c0_member.attribute_5 = @P10) OR c0_member.attribute_5 IS NULL) OR c0_member.member_id NOT IN (SELECT recipient_id FROM c0_sending_protocol prot JOIN c0_sending_log log ON prot.sending_id=log.sending_id WHERE log.mailing_id = @P11 AND ( prot.state = @P12 OR prot.state = @P13 OR prot.state = @P14 ) ))) AND (NOT(c0_member.attribute_5 = @P15) OR c0_member.attribute_5 IS NULL) AND (NOT(c0_member.attribute_5 = @P16) OR c0_member.attribute_5 IS NULL)))) AND (c0_member.attribute_51 IS NULL OR c0_member.attribute_51 < @P17)))
Сложночииаемо, но кроме дурацких столбцов таблицы ничего плохого не вижу.
Я уверен, что нормальный SQL разработчик не спроектировал бы такую модель данных, и написал бы такой запрос.

Зло ОРМ не в том, что там делается какой то кривой код условий запросов, например, с синтаксическими ошибками (с чего бы?), а в том, что разработчики не выделяют работу с данными как слой системы, требующий специалиста с соответствующей квалификацией. Поэтому получаются такие вот страшные поделия.
Второй недостаток, вытекающий из первого - отсутствие отдельного слоя не позволяет полноценно контролировать работу с СУДБ, теми же самыми узкими специалистами.

И если это прекрасно работает для приложения-записной книжки, то для более сложных и нагруженных систем будет проблемой, делая их неработоспособными в реальной жизни. Когда приложение разрабатывается и поддерживается много лет, так что сменились несколько поколений разработчиков, если ни один разработчик не представляет, как работает весь код системы, потому что его много, и т.д.
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632274
Фотография Ruuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yabs 
sti 
пропущено...

вот могу предложить :-) не самый плохой пример, кстати
Спойлер
(@P0 nvarchar(4000),@P1 nvarchar(4000),@P2 nvarchar(4000),@P3 nvarchar(4000),@P4 datetime2,@P5 int,@P6 nvarchar(4000),@P7 nvarchar(4000),@P8 nvarchar(4000),@P9 nvarchar(4000),@P10 nvarchar(4000),@P11 int,@P12 int,@P13 int,@P14 int,@P15 nvarchar(4000),@P16 nvarchar(4000),@P17 int) SELECT TOP 100000 c0_member.member_id FROM c0_member WHERE (c0_member.attribute_18 IS NOT NULL AND ((((c0_member.attribute_3994 = @P0 OR c0_member.attribute_3994 = @P1) AND ((c0_member.attribute_3595 <> @P2 OR c0_member.attribute_3595 IS NULL) AND (c0_member.attribute_3600 <> @P3 OR c0_member.attribute_3600 IS NULL)) AND (DATEDIFF(DAY,@P4,c0_member.attribute_4195) <= @P5 OR c0_member.attribute_4195 IS NULL) AND ((((NOT(c0_member.attribute_5 = @P6) OR c0_member.attribute_5 IS NULL) OR (NOT(c0_member.attribute_5 = @P7) OR c0_member.attribute_5 IS NULL) OR (NOT(c0_member.attribute_5 = @P8) OR c0_member.attribute_5 IS NULL))) AND (NOT(c0_member.attribute_5 = @P9) OR c0_member.attribute_5 IS NULL) AND (((NOT(c0_member.attribute_5 = @P10) OR c0_member.attribute_5 IS NULL) OR c0_member.member_id NOT IN (SELECT recipient_id FROM c0_sending_protocol prot JOIN c0_sending_log log ON prot.sending_id=log.sending_id WHERE log.mailing_id = @P11 AND ( prot.state = @P12 OR prot.state = @P13 OR prot.state = @P14 ) ))) AND (NOT(c0_member.attribute_5 = @P15) OR c0_member.attribute_5 IS NULL) AND (NOT(c0_member.attribute_5 = @P16) OR c0_member.attribute_5 IS NULL)))) AND (c0_member.attribute_51 IS NULL OR c0_member.attribute_51 < @P17)))
Сложночииаемо, но кроме дурацких столбцов таблицы ничего плохого не вижу.
Он просто неправильный, не говоря уже про какую-то производительность.
Несчастные конечные пользователи, которым приходится работать с такими вот продуктами ради универсальности у кого-то там.

PS: если уж запрос генерируется динамически, неужели нельзя лёгким движением руки убрать хотя бы все эти IS NULL OR ?
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632280
yabs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ruuu,

Сорри, глаза можно сломать
Ты б хоть запрос отформатировал предварительно
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632283
Фотография Ruuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yabs,

отформатируй, если тебе это поможет увидеть топ 100000 без сортировки, зато с десятком необязательных условий.
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632334
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ruuu 
Несчастные конечные пользователи, которым приходится работать с такими вот продуктами ради универсальности у кого-то там.

PS: если уж запрос генерируется динамически, неужели нельзя лёгким движением руки убрать хотя бы все эти IS NULL OR ?
а что конкретно в нем плохого-то? Сравнивали с планом написаного вручную эквивалента? Планы будут одинаковыми в 99% процентах случаев, как и производительность. А вот интерфейс к базе вместо тысяч хранимок с именами GetUserByCity() будет в слое доступа к базе данных в куда более поддерживаемом виде.
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632349
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg 
Когда приложение разрабатывается и поддерживается много лет, так что сменились несколько поколений разработчиков, если ни один разработчик не представляет, как работает весь код системы, потому что его много, и т.д.
Бывает хуже.
Когда ни один аналитик не представляет структуру данных всей системы.
Отвечая только за её локальный модуль.
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632470
Фотография Ruuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenford 
Ruuu 
Несчастные конечные пользователи, которым приходится работать с такими вот продуктами ради универсальности у кого-то там.

PS: если уж запрос генерируется динамически, неужели нельзя лёгким движением руки убрать хотя бы все эти IS NULL OR ?
а что конкретно в нем плохого-то? Сравнивали с планом написаного вручную эквивалента? Планы будут одинаковыми в 99% процентах случаев, как и производительность. А вот интерфейс к базе вместо тысяч хранимок с именами GetUserByCity() будет в слое доступа к базе данных в куда более поддерживаемом виде.
Как уже написали, этот запрос всего лишь следствие подхода к работе с данными и организации выдачи данных конечному пользователю. Хотя при желании можно улучшить и его.
Вывалить на клиент кучу данных и пусть дальше фильтруют в каком-нибудь девэкспресовском компоненте, попивая кофе в ожидании результатов.

Ни у кого из фанатов орм не возникает даже вопроса, почему пользователю отдаются произвольные 100000 записей, видимо 100 тыс должно хватить всем (с)

У меня только одтн вопрос, если на уровне интерфейса к данным всё быстро и красиво, то зачем вообще делать какую-то фильтрацию и топ миллион на уровне базы?
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632526
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte 
Насчет генерации говнокода ОРМом. Вот в этой статье пишется про "фирменный" почерк Django.
Литературное преувеличение. :)
Это фирменный почерк многих наколенных поделий. Вне зависимости от стека технологий.
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632661
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenford 
Ruuu 
Несчастные конечные пользователи, которым приходится работать с такими вот продуктами ради универсальности у кого-то там.

PS: если уж запрос генерируется динамически, неужели нельзя лёгким движением руки убрать хотя бы все эти IS NULL OR ?
а что конкретно в нем плохого-то? Сравнивали с планом написаного вручную эквивалента? Планы будут одинаковыми в 99% процентах случаев, как и производительность. А вот интерфейс к базе вместо тысяч хранимок с именами GetUserByCity() будет в слое доступа к базе данных в куда более поддерживаемом виде.
Планы будут одинаковыми может быть в 80% случаев, но остальные 20 вам сделают проблем намного больше.

Кстати, в чем заключается лучшая поддерживаемость кода на клиенте? Только в том, что на фирме нет людей, хорошо знающих SQL, но знающих код клиента?

p.s. тысяча хранимок - это плохо, если можно обойтись 100, но должным образом параметризированных. Но если функциональность разная, то какая разница, сколько хранимок? Вы же не предъявляете претензии к объему клиентского кода...
L_argo 
Megabyte 
Насчет генерации говнокода ОРМом. Вот в этой статье пишется про "фирменный" почерк Django.
Литературное преувеличение. :)
Это фирменный почерк многих наколенных поделий. Вне зависимости от стека технологий.
Ну может и так. :)
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632738
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ruuu 
Ни у кого из фанатов орм не возникает даже вопроса, почему пользователю отдаются произвольные 100000 записей, видимо 100 тыс должно хватить всем (с)

У меня только одтн вопрос, если на уровне интерфейса к данным всё быстро и красиво, то зачем вообще делать какую-то фильтрацию и топ миллион на уровне базы?
а какое отношение это имеет к ОRМ? Я могу и в хранимке миллион на клиента отправить
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632755
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte 
Планы будут одинаковыми может быть в 80% случаев, но остальные 20 вам сделают проблем намного больше.

Кстати, в чем заключается лучшая поддерживаемость кода на клиенте? Только в том, что на фирме нет людей, хорошо знающих SQL, но знающих код клиента?

p.s. тысяча хранимок - это плохо, если можно обойтись 100, но должным образом параметризированных. Но если функциональность разная, то какая разница, сколько хранимок? Вы же не предъявляете претензии к объему клиентского кода...
Лучшая поддерживаемость заключается в том, что вместо тысяч хранимок с десятками параметров и 10-ти этажными case'ами (или вообще формирования динамического sql вручную и таинственных ошибок 'Invalid syntax near x symbol' в продакшене) у меня будет один единственный метод DAL'a IQuerable GetClients(), который разные методы будут вызывать с нужными параметрами и ОRM будет автоматически создавать правильный код.
Никаких проблем с планами не будет, а если и возникают - то решаются точно такими-же методами, как и при написании запросов вручную
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632894
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenford 
Megabyte 
Планы будут одинаковыми может быть в 80% случаев, но остальные 20 вам сделают проблем намного больше.

Кстати, в чем заключается лучшая поддерживаемость кода на клиенте? Только в том, что на фирме нет людей, хорошо знающих SQL, но знающих код клиента?

p.s. тысяча хранимок - это плохо, если можно обойтись 100, но должным образом параметризированных. Но если функциональность разная, то какая разница, сколько хранимок? Вы же не предъявляете претензии к объему клиентского кода...
Лучшая поддерживаемость заключается в том, что вместо тысяч хранимок с десятками параметров и 10-ти этажными case'ами (или вообще формирования динамического sql вручную и таинственных ошибок 'Invalid syntax near x symbol' в продакшене) у меня будет один единственный метод DAL'a IQuerable GetClients(), который разные методы будут вызывать с нужными параметрами и ОRM будет автоматически создавать правильный код.
Никаких проблем с планами не будет, а если и возникают - то решаются точно такими-же методами, как и при написании запросов вручную
Можно пример функционала, когда на сервере тысяча хранимок(для чего?), а на клиенте 1 метод? Мне просто сложно это представить... Обычно 1 метод на клиенте равен 1 хп на сервере.
Кто вам мешает все вызовы в БД завернуть в один метод верхнего уровня, как вы сделали с клиентским кодом?

Не, есть бизнес-логика, которую на клиенте бывает проще обработать, но в целом это редкость. Да и СУБД развивается. Используя же СУБД посредством ОРМ, вы лишаетесь множества полезного функционала.

Часто ОРМщики, да и не только они, работают с большими объемами данных построчно, например, для заливки данных в БД. Тогда как это можно сделать на sql одной командой. Скорость работы на порядок\два будет выше.
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632926
sti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg 
yabs 
пропущено...

Сложночииаемо, но кроме дурацких столбцов таблицы ничего плохого не вижу.
Я уверен, что нормальный SQL разработчик не спроектировал бы такую модель данных, и написал бы такой запрос.

Зло ОРМ не в том, что там делается какой то кривой код условий запросов, например, с синтаксическими ошибками (с чего бы?), а в том, что разработчики не выделяют работу с данными как слой системы, требующий специалиста с соответствующей квалификацией. Поэтому получаются такие вот страшные поделия.
Второй недостаток, вытекающий из первого - отсутствие отдельного слоя не позволяет полноценно контролировать работу с СУДБ, теми же самыми узкими специалистами.

И если это прекрасно работает для приложения-записной книжки, то для более сложных и нагруженных систем будет проблемой, делая их неработоспособными в реальной жизни. Когда приложение разрабатывается и поддерживается много лет, так что сменились несколько поколений разработчиков, если ни один разработчик не представляет, как работает весь код системы, потому что его много, и т.д.
alexeyvg, пример был мой, но ваш ответ в точку! Проблема не в запросе как таковом, а в модели данных. И действительно, давайте запихаем всё в одну таблицу и никаких проблем :-)
Ruuu 
...топ 100000 без сортировки...
А вот это, кстати, здесь как раз нормально. Специфика ))
Привет бывшему коллеге, если не ошибаюсь.
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21632968
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte 
Можно пример функционала, когда на сервере тысяча хранимок(для чего?), а на клиенте 1 метод? Мне просто сложно это представить... Обычно 1 метод на клиенте равен 1 хп на сервере.
Кто вам мешает все вызовы в БД завернуть в один метод верхнего уровня, как вы сделали с клиентским кодом?
есть к примеру таблица с клиентами Client (Name, Surname, DOB и еще 20 полей). Одной подсистеме надо клиентов отбирать по имени + фамилии, другой - по дате рождения, третьей - по адресу. С хранимками у вас 2 варианта - иметь 3 хранимки (с такими замечательными именами как GetClientsByNameAndSurname), либо иметь одну хранимку с десятком параметров и лестницей из case'ов внутри (либо ручным динамическим sql).
С ОRM будет один метод DAL IQuerable GetClients(). Вызывающие подсистемы просто вызовут его как GetClients().Where(c => c.Name == 'Alex' && Surname == 'Ivanov'). Все остальное сделает ОRM.
Теперь для следующей версии понадобится фильтр по наличию у клиента детей. Вы будете либо создавать новый DAL метод + новую хранимку, либо добавлять новый параметер с новым case'ом в существующую (и заодно перетестировать весь код что-бы убедится что ничего не сломалось). А мне в буквальном смысле слова не надо будет ничего делать. Подсистема просто вызовет мой метод как GetClients().Where(c => c.Kids > 0)
...
Рейтинг: 0 / 0
Что происходит на рынке DB вакансий в ЕС?
    #21633009
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenford 
А мне в буквальном смысле слова не надо будет ничего делать. Подсистема просто вызовет мой метод как GetClients().Where(c => c.Kids > 0)
Кстати, будет ли именно в Вами используемом ORM такая конструкция оттранслирована в предикат на уровне SQL, или будет производиться пост-фильтрация на уровне приложения?
...
Рейтинг: 0 / 0
25 сообщений из 375, страница 10 из 15
Форумы / Наши за рубежом [закрыт для гостей] / Что происходит на рынке DB вакансий в ЕС?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]