Kentavr16
@Kentavr16
long cold winter

Стоит ли изучать sql, или же сразу заняться изучением ORM?

Начинаю очередной пет-проект. Ранее писал простенькие сервера на express, как бд в основном использовал mongodb. Сейчас заинтересовался nest`ом как более расширенной альтернативой экспрессу.
В целях ознакомления решил пощупать mysql. Ранее сталкивался с ним, но очень поверхностно. В ходе сбора данных узнал про ORM для реляционных бд. Сейчас возник по этому поводу ряд вопросов:
1) Жив ли сейчас sql настолько, чтобы его изучать?
2) Если да, то часто ли сейчас используют sql "рукописно", или же использование ORM стало общим местом?
3) МБ есть какие-либо моменты/советы по использованию sql и orm в nest? На чем лучше сосредоточиться?
  • Вопрос задан
  • 176 просмотров
Решения вопроса 2
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
ORM внезапно преобразует ваш код в sql.
Опять же внезапно, этот код может быть не оптимален.
Для того что бы понять что есть проблема вы должны понимать сиквел.
А для того что бы понять как быстрее, важно знать о SQL

Общие советы такие используйте механизмы БД, Используйте их по полной, не стесняйтесь хранимых процедур или сборок
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Стоит ли изучать sql, или же сразу заняться изучением ORM?

Все люди которые ратуют за использование ORM с годами все равно приходят к очень сильной
и мотивированной необходимости знать SQL. Этот язык сегодня является латынью баз данных.
Вы сможете говорить с бизнесом на одном языке если будете в переписке активно использовать
например язык DDL таблиц. Ваши аргументы будут выглядеть убедительно если в переписке будут
фрагменты например любой консоли MySQL, psql, SQL*Plus e.t.c. Короче знание SQL - это признак
джентльмена. Путь в приличное общество.

И наоборот, вы будете вообще НЕПОНЯТЫ если попробуете показать ORM объект на Node или не дай
бох на Java/JPA техниках аннотации. Бизнесу эти аннотации неинтересны и неинформативны.

Да и вам самомму смоделировать любой сложности выборку или отчет будет бытрее в SQL чем в фрейморках
ООП-отображения.

Что касаемо перформанса. К сожалению все современные ORM реализуют только самые базовые возможности
оптимизации запросов. Насколько я знаю Hibernate (по состоянию на 2015 год) так и не умел обращаться
с Oracle Hints. А любой сложный ентерпрайз начинается там где вы выжимаете из запроса не 100 а 1000%
возможностей. И здесь вам нужно управлять проприетарными функциями воздействия на оптимизатор.

Вообще для меня например цикл оптимизации ORM запросов начинается с того что я выбрасываю из
стека ORM. Заменяю на native. И долго наблюдаю его и оптимизирую. И когда достиг критерия готовности
то пытаюсь затащить обратно в ORM. Иногда не заходит. Это те случаи когда ORM оказался плох.
Эти случаи сложны, синьорны. и по каждому из них можно здесь в хабре открывать статью как минимум.

Но не все так плохо. Существует взгляд на ORM с обратной стороны. Это фреймворки наподобие MyBatis.
Они в первую очередь решают проблемы БД а уж потом дают опции объектных возможностей. Короче
Батис - это ОРМ наоборот. Где эволюция системы идет не от кода к БД (как любят хипстеры) а от
имеющихся вызовов процедур
и запросов к объектам респонса.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы