Хабрахабр

[Перевод] Я не буду учить твой Garbage Query Language

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

Это язык понятный каждому, существует аж с 70-х и за это время успел стать стандартом. Верните мне мой SQL обратно. Он прост в чтении и может использоваться кем угодно, от бизнеса до инженеров.

Однако вместо этого мне приходится изучать целый ворох разных "garbage query language", потому что люди по-прежнему пытаются изобрести колесо заново.

Их основная фича — это сокращение времени разработки. Начнем с ORM. Кроме того, мне приходится тратить время на отладку, выяснять почему этот ORM перевел мой запрос в какой-то чудовищный SQL, который объединяет 17 таблиц, используя полное их сканирование. Но вместо того, чтобы писать понятный всем SQL, мне приходится штудировать документацию конкретного ORM, чтобы выяснить, как писать для нее мои запросы. В конечном итоге вы останетесь с распухшими классами данных более высокого уровня, вместо того чтобы иметь дело с простыми для понимания и обработки структурами БД. Вместо того, чтобы придерживаться стандартного SQL, где достаточно легко рассуждать об эффективности ("старайтесь использовать в предикатах индексированные столбцы", "не перебарщивайте с join'ами в одном запросе" и пр.), мне приходится иметь дело с дополнительным мутным слоем, который скрывает оригинальный SQL-запрос.

Это не значит, что люди изучают ORM, это значит, что они просто не изучают SQL. Не говоря уже о том, что существует около пяти тысяч ORM, поэтому вместо изучения SQL один раз я должен изучить 34 разных ORM.

Я просто выбрал несколько из стека моей компании: А еще все эти продукты SaaS.

Свалка данных, которая изобретает свой собственный язык запросов. Что может быть хуже, чем свалка данных?

Иногда до такой степени, что это эти прошлые знания могут оказаться практически бесполезными. Справедливости ради следует сказать, что некоторые из таких запросов все-таки являются SQL-like или, по крайней мере, претендуют на эту роль, но с собственными причудами, которые заставляют меня отбросить все, что я знал о SQL ранее.

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

На самом деле не много: Что я прошу?

  1. Каждый SaaS-продукт должен предоставлять возможность скопировать все данные в мою собственную SQL БД (в моем случае Postgresql/Redshift). Я не хочу использовать их DSL. Возможно, Европейский союз сможет установить это в качестве следующего требования после принятия директивы по открытым банковским услугам PSD2.
  2. Необходим 30-летний мораторий на изобретение новых языков запросов.
  3. Нужно развеять миф о том, что ORM делают код чище. Переходите на сторону чистого SQL и вы получите гораздо более простое и прозрачное взаимодействие с вашей БД.

Я понимаю, что похож на старого ворчуна, но я беру этот риск на себя. На этом все.

PS

Следите за обсужденим на Hacker News и комментариями на Reddit r / programming. Этот пост получил достаточное количество просмотров, поэтому должен вызвать живой интерес среди публики.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть