Навіщо вчити цей Garbage Query Language?

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

Поверніть мені мій SQL назад. Це мова зрозуміла кожному, існує аж з 70-х і за цей час встигла стати стандартом. Вона проста у читанні і може використовуватися ким завгодно, від бізнесу до інженерів.

Однак замість цього мені доводиться вивчати цілу купу різних “garbage query language”, тому що люди все ще намагаються винайти колесо заново.

Почнемо з ORM. Їх основна фіча — це скорочення часу розробки. Але замість того, щоб писати зрозумілий всім SQL, мені доводиться вивчати документацію конкретного ORM, щоб з’ясувати, як писати для неї мої запити. Крім того, мені доводиться витрачати час на налагодження, з’ясовувати чому цей ORM перевів мій запит в якийсь жахливий SQL, який об’єднує 17 таблиць, використовуючи повне їх сканування. Замість того, щоб дотримуватися стандартного SQL, де досить легко міркувати про ефективність (“намагайтеся використовувати в предикатах індексовані стовпці”, “не переборщуйте з join’ами в одному запиті” тощо), мені доводиться мати справу з додатковим каламутним шаром, який приховує оригінальний SQL-запит. В кінцевому підсумку ви залишитеся з розпухлими класами даних більш високого рівня, замість того щоб мати справу з простими для розуміння і обробки структурами БД.

Не кажучи вже про те, що існує близько п’яти тисяч ORM, тому замість вивчення SQL один раз я повинен вивчити 34 різних ORM. Це не означає, що люди вивчають ORM, це означає, що вони просто не вивчають SQL.

Читайте також  Кібердемони: штучний інтелект DOOM 2016

А ще всі ці продукти 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 і ви отримаєте набагато більш просту і прозору взаємодію з вашою БД.

На цьому все. Я розумію, що схожий на старого буркуна, але я беру цей ризик на себе.

Степан Лютий

Обожнюю технології в сучасному світі. Хоча частенько і замислююся над тим, як далеко вони нас заведуть. Не те, щоб я прям і знаюся на ядрах, пікселях, коллайдерах і інших парсеках. Просто приходжу в захват від того, що може в творчому пориві вигадати людський розум.

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *