Je n'apprendrai pas votre langue de requĂȘte

Ce sera un peu dĂ©lirant, mais je suis vraiment ennuyĂ© par un logiciel dans lequel les gens essaient d'inventer leur propre langage de requĂȘte. Nous avons dĂ©jĂ  un billion d'ORM diffĂ©rents, un autre billion de bases de donnĂ©es avec notre propre langage de requĂȘte chacune, et un autre billion de produits SaaS, pour l'accĂšs auquel vous devez maĂźtriser certains DSL rĂ©guliers qu'ils ont inventĂ©s.


Rendez-moi mon SQL. Cette langue est comprĂ©hensible par tout le monde, existe dĂ©jĂ  Ă  partir des annĂ©es 70 et pendant ce temps a rĂ©ussi Ă  devenir une norme. Il est facile Ă  lire et peut ĂȘtre utilisĂ© par n'importe qui, des entreprises aux ingĂ©nieurs.


Cependant, au lieu de cela, je dois apprendre tout un tas de diffĂ©rents "langage de requĂȘte poubelle" parce que les gens essaient toujours de rĂ©inventer la roue.


Commençons par ORM. Leur principale caractĂ©ristique est une rĂ©duction du temps de dĂ©veloppement. Mais au lieu d'Ă©crire du SQL comprĂ©hensible pour tout le monde, je dois Ă©tudier la documentation d'un ORM spĂ©cifique pour comprendre comment Ă©crire mes requĂȘtes pour celui-ci. De plus, je dois passer du temps Ă  dĂ©boguer pour savoir pourquoi cet ORM a traduit ma requĂȘte en un SQL monstrueux qui joint 17 tables Ă  l'aide de leur analyse complĂšte. Au lieu de s'en tenir au SQL standard, oĂč il est assez facile de parler d'efficacitĂ© («essayez d'utiliser des colonnes indexĂ©es dans les prĂ©dicats», «n'en faites pas trop avec les jointures dans une requĂȘte», etc.), je dois faire face Ă  une couche boueuse supplĂ©mentaire, qui masque la requĂȘte SQL d'origine. À la fin, vous vous retrouverez avec des classes de donnĂ©es gonflĂ©es de niveau supĂ©rieur, au lieu de traiter avec des structures de base de donnĂ©es faciles Ă  comprendre et Ă  traiter.


Sans oublier qu'il y a environ cinq mille ORM, donc au lieu d'apprendre le SQL, une fois que je dois apprendre 34 ORM différents. Cela ne signifie pas que les gens apprennent l'ORM, cela signifie qu'ils n'apprennent tout simplement pas le SQL.


Et tous ces produits SaaS. Je viens d'en choisir quelques-uns dans la pile de ma société:



Quoi de pire qu'un vidage de donnĂ©es? Un vidage de donnĂ©es qui invente son propre langage de requĂȘte.


En toute honnĂȘtetĂ©, il faut dire que certaines de ces requĂȘtes sont toujours de type SQL, ou du moins revendiquent ce rĂŽle, mais avec leurs propres bizarreries qui me font ignorer tout ce que je savais sur SQL auparavant. Parfois Ă  tel point que ce sont ces connaissances passĂ©es qui peuvent s'avĂ©rer pratiquement sans valeur.


De plus, chaque base de donnĂ©es essaie Ă©galement de rĂ©inventer le langage de requĂȘte. Mongo a son propre langage de requĂȘte terrible , que je n'ai jamais compris, Lucene a le sien , etc.


Qu'est-ce que je demande? Pas vraiment beaucoup:


  1. Chaque produit SaaS devrait permettre de copier toutes les donnĂ©es dans ma propre base de donnĂ©es SQL (dans mon cas Postgresql / Redshift). Je ne veux pas utiliser leur DSL. L'Union europĂ©enne pourra peut-ĂȘtre en faire une nouvelle exigence aprĂšs l'adoption de la directive sur les services bancaires ouverts PSD2 .
  2. Un moratoire de 30 ans sur l’invention de nouveaux langages de requĂȘte est nĂ©cessaire.
  3. Nous devons dissiper le mythe selon lequel les ORM rendent le code plus propre. Passez au SQL pur et vous obtiendrez une interaction beaucoup plus simple et plus transparente avec votre base de données.

C’est tout. Je comprends que je suis comme un vieux grognon, mais je prends ce risque pour moi.


PS


Ce poste a reçu un nombre suffisant de vues, il devrait donc susciter un vif intĂ©rĂȘt auprĂšs du public. Suivez la discussion sur Hacker News et les commentaires sur Reddit r / programmation .

Source: https://habr.com/ru/post/fr422667/


All Articles