Привет! Представляю вашему вниманию перевод статьи Эрика Бернхардссона "I don't want to learn your garbage query language". Авторский стиль изложения по возможности сохранён в вольном переводе.
Здесь есть немного пафоса, но я на самом деле не люблю ПО, которое изобретает свои собственные языки запросов. Существуют триллионы ORM. Другой триллион — это базы данных со своим языком запросов. Другой триллион SaaS продуктов, в которых единственная возможность — запросить данные это выучить рандомный язык запросов.
Я всего лишь хочу мой SQL назад. Это язык который все понимают, который был здесь с семидесятых, и который хорошо стандартизован. Он легко читается и может использоваться каждым начиная людьми бизнеса и заканчивая инженерами.
Вместо этого, я должен выучить кипу мусорных языков запросов потому что все продолжают изобретать колесо.
Взять, например ORM'ки. Их предполагаемые плюсы в том, что они сокращают время на разработку. Но вместо того, чтобы писать SQL, который все и так знают, я знаю как скроллить взад-вперед в документации некоторой ORM'ки чтобы узнать как написать свой запрос. Мало того, я должен потратить время на дебаг чтобы узнать почему ORMка превратила мой запрос в нечто монструозное, нечто что join'ит 17 таблиц не используя индексы. Вместо того, чтобы придерживаться SQL, в котором возможно легко оптимизировать запросы( используйте индексы по where полям, не перебарщивайте с join'ами и т.д.), я должен мириться с непрозрачным слоем абстракции, скрывающим итоговый запрос. Плюс к тому, появляются много высокоуровневых абстракций вместо понятных кортежей или словарей, который содержат данные в чертовски простой и легко доступной для последующего чтения форме.
Можно не говорить, что есть пять тысяч ORM'ок, так что вместо изучения SQL единожды — я должен выучить 34 разных ORM'ки. Получается изучение очередной ORM'ки вместо изучения SQL.
Все эти SaaS продукты. Для простого примера возьму несколько с моей работы:
Что хуже цестерн с данными? Цестерны с данными, которые изобретают свои собственные языки запросов.
По факту, многие из них почти как SQL или прикидываются им, но все со своими причудами заставляющими меня разучить все что знаю о SQL до той точки, в которой может начаться что-то совсем другое.
В довершении ко всему, каждая БД старается переизобрести языки запросов. Mongo имеет свой собственный ужасный язык запросов, который я никогда не приму. Lucene тоже со своим языком. И так далее и тому подобное.
О чём я прошу? Не о многом:
- Каждая SaaS-платформа должна иметь штуку, которая из коробки позволяет скопировать все данные, чтобы поместить из в SQL-подобную БД( в моём случае — Postgres/Redshift). Я не хочу их кастомный DSL. Может Европейский Союз может принудить к этому в их следующем PSD2 директиве о платёжных услугах.
- Должен существовать 30-летный мораторий на изобретение новых языков запросов.
- Давайте развеем миф? что ORM'ки делают код чище. Присоединяйтесь к движению за чистый SQL и откройте для себя мир с более читабельным, гораздо более лаконичных способом запросов к базе.
На этом всё. Я понял, что вягляжу как старый чудак, но я беру этот риск.
Дополнение:
Этот пост вызвал много трафика, так что можно сказать? что это касается очень многих людей.
Ссылка на ветку в Hacker News и Reddit r/programming комментарии.
Автор: Барак Адама