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


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


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


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


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


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


  • Splunk — SPL
  • Mixpanel — JQL
  • Rollbar — RQL
  • New Relic — NRQL
  • Adwords — AWQL

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


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


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


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


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

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


PS


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