- PVSM.RU - https://www.pvsm.ru -
Привет! Представляю вашему вниманию перевод статьи Эрика Бернхардссона "I don't want to learn your garbage query language" [1]. Авторский стиль изложения по возможности сохранён в вольном переводе.
Здесь есть немного пафоса, но я на самом деле не люблю ПО, которое изобретает свои собственные языки запросов. Существуют триллионы ORM. Другой триллион — это базы данных со своим языком запросов. Другой триллион SaaS продуктов, в которых единственная возможность — запросить данные это выучить рандомный язык запросов.
Я всего лишь хочу мой SQL назад. Это язык который все понимают, который был здесь с семидесятых, и который хорошо стандартизован. Он легко читается и может использоваться каждым начиная людьми бизнеса и заканчивая инженерами.
Вместо этого, я должен выучить кипу мусорных языков запросов потому что все продолжают изобретать колесо.
Взять, например ORM'ки. Их предполагаемые плюсы в том, что они сокращают время на разработку. Но вместо того, чтобы писать SQL, который все и так знают, я знаю как скроллить взад-вперед в документации некоторой ORM'ки чтобы узнать как написать свой запрос. Мало того, я должен потратить время на дебаг чтобы узнать почему ORMка превратила мой запрос в нечто монструозное, нечто что join'ит 17 таблиц не используя индексы. Вместо того, чтобы придерживаться SQL, в котором возможно легко оптимизировать запросы( используйте индексы по where полям, не перебарщивайте с join'ами и т.д.), я должен мириться с непрозрачным слоем абстракции, скрывающим итоговый запрос. Плюс к тому, появляются много высокоуровневых абстракций вместо понятных кортежей или словарей, который содержат данные в чертовски простой и легко доступной для последующего чтения форме.
Можно не говорить, что есть пять тысяч ORM'ок, так что вместо изучения SQL единожды — я должен выучить 34 разных ORM'ки. Получается изучение очередной ORM'ки вместо изучения SQL.
Все эти SaaS продукты. Для простого примера возьму несколько с моей работы:
Что хуже цестерн с данными? Цестерны с данными, которые изобретают свои собственные языки запросов.
По факту, многие из них почти как SQL или прикидываются им, но все со своими причудами заставляющими меня разучить все что знаю о SQL до той точки, в которой может начаться что-то совсем другое.
В довершении ко всему, каждая БД старается переизобрести языки запросов. Mongo имеет свой собственный ужасный язык запросов [7], который я никогда не приму. Lucene тоже со своим языком [8]. И так далее и тому подобное.
О чём я прошу? Не о многом:
На этом всё. Я понял, что вягляжу как старый чудак, но я беру этот риск.
Дополнение:
Этот пост вызвал много трафика, так что можно сказать? что это касается очень многих людей.
Ссылка на ветку в Hacker News [10] и Reddit r/programming [11] комментарии.
Автор: Барак Адама
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/291896
Ссылки в тексте:
[1] "I don't want to learn your garbage query language": https://erikbern.com/2018/08/30/i-dont-want-to-learn-your-garbage-query-language.html
[2] своим SQL: https://www.splunk.com/en_us/resources/search-processing-language.html
[3] JQL: https://mixpanel.com/help/reference/jql
[4] RQL: https://docs.rollbar.com/docs/rql
[5] NRQL: https://docs.newrelic.com/docs/insights/nrql-new-relic-query-language/nrql-resources/nrql-syntax-components-functions
[6] AWQL: https://developers.google.com/adwords/api/docs/guides/awql
[7] ужасный язык запросов: https://docs.mongodb.com/manual/reference/sql-comparison/
[8] языком: https://lucene.apache.org/core/2_9_4/queryparsersyntax.html
[9] PSD2 директиве о платёжных услугах: https://en.wikipedia.org/wiki/Payment_Services_Directive
[10] ветку в Hacker News : https://news.ycombinator.com/item?id=17890760
[11] Reddit r/programming: https://www.reddit.com/r/programming/comments/9bxwba/i_dont_want_to_learn_your_garbage_query_language/
[12] Источник: http://habrahabr.ru/sandbox/123595/
Нажмите здесь для печати.