Ich habe in letzter Zeit viel gehört, dass SQL eine schreckliche Sprache ist, und es scheint, dass jedes Framework unter der Sonne mit einer Datenbankabstraktionsschicht vorinstalliert ist.
Beachten Sie, dass diese Ebenen nur ihre eigenen Inhalte in konvertieren SQL
. Für die meisten Datenbankanbieter SQL
ist dies die einzige Möglichkeit, mit der Engine zu kommunizieren.
Nach meiner Erfahrung ist SQL jedoch häufig die viel einfachere, vielseitigere und programmiererfreundlichere Methode zur Verwaltung der Dateneingabe und -ausgabe. Jede Abstraktionsschicht, die ich verwendet habe, scheint ein ausgesprochen begrenzter Ansatz ohne wirklichen Nutzen zu sein.
… Grund, aus dem ich gerade oben beschrieben habe.
Die Datenbankebenen fügen nichts hinzu, sie beschränken Sie nur. Sie machen die Abfragen umstritten einfacher, aber niemals effizienter.
Per Definition gibt es in den Datenbankebenen nichts, was nicht vorhanden ist SQL
.
Was macht SQL
so schrecklich und warum sind Datenbankabstraktionsschichten wertvoll?
SQL
ist eine schöne Sprache, aber es braucht ein wenig Gehirnarbeit, um damit zu arbeiten.
Theoretisch SQL
ist deklarativ, das heißt, Sie deklarieren, was Sie erhalten möchten, und der Motor liefert es auf die schnellstmögliche Weise.
In der Praxis gibt es viele Möglichkeiten, eine korrekte Abfrage zu formulieren (dh die Abfrage, die korrekte Ergebnisse zurückgibt).
Die Optimierer können aus einigen vordefinierten Algorithmen ein Lego-Schloss bauen (ja, sie sind mehrere), aber sie können einfach keine neuen Algorithmen erstellen. Es braucht immer noch einen SQL
Entwickler, um sie zu unterstützen.
Einige Leute erwarten jedoch, dass der Optimierer "den bestmöglichen Plan" erstellt, nicht "den besten verfügbaren Plan für diese Abfrage bei gegebener Implementierung der SQL
Engine".
Und wie wir alle wissen, wird das Computerprogramm beschuldigt, wenn das Computerprogramm nicht den Erwartungen der Menschen entspricht, nicht die Erwartungen.
In den meisten Fällen kann die Neuformulierung einer Abfrage jedoch tatsächlich zu einem bestmöglichen Plan führen. Es gibt Aufgaben, bei denen es unmöglich ist, aber die neuen und wachsenden Verbesserungen SQL
dieser Fälle werden immer weniger.
Es wäre jedoch schön, wenn die Anbieter einen einfachen Zugriff auf Funktionen wie "Indexbereich abrufen", "Zeile nach rowid
" abrufen "usw. bereitstellen würden, z. B. C
Compiler, mit denen Sie die Assembly direkt in die Sprache einbetten können.
Ich habe kürzlich einen Artikel dazu in meinem Blog geschrieben: