Ich werde Ihre Garbage Query Language nicht lernen

Es wird ein wenig scherzhaft sein, aber ich ärgere mich wirklich über Software, mit der Leute versuchen, ihre eigene Abfragesprache zu erfinden. Wir haben bereits eine Billion verschiedener ORMs, eine weitere Billion Datenbanken mit jeweils einer eigenen Abfragesprache und eine weitere Billion SaaS-Produkte, für deren Zugriff Sie einige von ihnen erfundene reguläre DSL beherrschen müssen.


Gib mir mein SQL zurück. Diese Sprache ist für alle verständlich, existiert bereits seit den 70er Jahren und hat sich in dieser Zeit zum Standard entwickelt. Es ist leicht zu lesen und kann von jedem verwendet werden, vom Unternehmen bis zum Ingenieur.


Stattdessen muss ich jedoch eine ganze Reihe verschiedener "Garbage Query Language" lernen, weil die Leute immer noch versuchen, das Rad neu zu erfinden.


Beginnen wir mit ORM. Ihr Hauptmerkmal ist eine Verkürzung der Entwicklungszeit. Aber anstatt verständliches SQL für alle zu schreiben, muss ich die Dokumentation eines bestimmten ORM studieren, um herauszufinden, wie ich meine Abfragen dafür schreibe. Außerdem muss ich einige Zeit mit dem Debuggen verbringen, um herauszufinden, warum dieser ORM meine Abfrage in monströses SQL übersetzt hat, das 17 Tabellen mit ihrem vollständigen Scan verbindet. Anstatt mich an Standard-SQL zu halten, bei dem es einfach genug ist, über Effizienz zu sprechen ("versuchen Sie, indizierte Spalten in Prädikaten zu verwenden", "Übertreiben Sie es nicht mit Verknüpfungen in einer Abfrage" usw.), muss ich mich mit einer zusätzlichen schlammigen Ebene befassen, die verbirgt die ursprüngliche SQL-Abfrage. Am Ende bleiben Ihnen geschwollene Datenklassen auf höherer Ebene übrig, anstatt sich mit Datenbankstrukturen zu befassen, die leicht zu verstehen und zu verarbeiten sind.


Ganz zu schweigen davon, dass es ungefähr fünftausend ORMs gibt. Anstatt SQL zu lernen, muss ich einmal 34 verschiedene ORMs lernen. Dies bedeutet nicht, dass Menschen ORM lernen, sondern dass sie einfach kein SQL lernen.


Und all diese SaaS-Produkte. Ich habe gerade ein paar von meinem Firmenstapel ausgewählt:



Was könnte schlimmer sein als ein Datendump? Ein Datendump, der seine eigene Abfragesprache erfindet.


Fairerweise sollte gesagt werden, dass einige dieser Abfragen immer noch SQL-ähnlich sind oder zumindest diese Rolle beanspruchen, aber mit ihren eigenen Macken, die mich dazu bringen, alles zu verwerfen, was ich vorher über SQL wusste. Manchmal in einem solchen Ausmaß, dass sich dieses Wissen aus der Vergangenheit als praktisch wertlos herausstellen kann.


Darüber hinaus versucht jede Datenbank, die Abfragesprache neu zu erfinden. Mongo hat seine eigene schreckliche Abfragesprache , die ich nie verstanden habe, Lucene hat seine eigene usw.


Was bitte ich? Nicht wirklich viel:


  1. Jedes SaaS-Produkt sollte die Möglichkeit bieten, alle Daten in meine eigene SQL-Datenbank zu kopieren (in meinem Fall Postgresql / Redshift). Ich möchte ihr DSL nicht verwenden. Vielleicht kann die Europäische Union dies als nächste Anforderung nach der Verabschiedung der Richtlinie über offene Bankdienstleistungen PSD2 festlegen .
  2. Ein 30-jähriges Moratorium für die Erfindung neuer Abfragesprachen ist erforderlich.
  3. Wir müssen den Mythos zerstreuen, dass ORMs Code sauberer machen. Wenn Sie zu reinem SQL wechseln, erhalten Sie eine viel einfachere und transparentere Interaktion mit Ihrer Datenbank.

Das ist alles. Ich verstehe, dass ich wie ein alter Nörgler bin, aber ich gehe dieses Risiko auf mich.


PS


Dieser Beitrag hat eine ausreichende Anzahl von Ansichten erhalten, so dass er in der Öffentlichkeit großes Interesse hervorrufen sollte. Folgen Sie der Diskussion in den Hacker News und den Kommentaren zu Reddit r / Programmierung .

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


All Articles