Was sind die Hauptgründe ( abgesehen von der "Datenbankunabhängigkeit" ), dass die meisten IT-Projekte heutzutage die Fülle an Funktionen zu ignorieren scheinen, die in modernen Datenbank-Engines wie Oracle 11g und SQL Server 2008 vorhanden sind?
Oder aus dem Blog der Helsinki-Erklärung zu leihen, in dem es so heißt:
In den letzten zwanzig Jahren haben wir festgestellt, dass die Funktionalität (Features), die uns im DBMS zur Verfügung steht, exponentiell gewachsen ist. Mit diesen Funktionen konnten wir Datenbankanwendungen erstellen. Und genau das haben wir alle in den boomenden Neunzigern begonnen.
Aber dann, zu Beginn des neuen Jahrtausends, passierte etwas. Und dass etwas auf mysteriöse Weise dazu führte, dass die Rolle des DBMS in einem Datenbankanwendungsprojekt unbedeutend wurde. (...) Ab dem neuen Jahrtausend verschieben wir die gesamte Anwendungslogik aus dem DBMS auf Server der mittleren Ebene. Die Funktionalität von Dingen, die außerhalb des DBMS implementiert sind, ist explodiert, und das funktionsreiche DBMS wird kaum für etwas anderes als Zeilenspeicherung verwendet.
Wir reden über Sachen wie
- Gespeicherte Prozeduren, die als Daten-APIs verwendet werden (zur Sicherheit und zur Vermeidung übermäßigen Netzwerkverkehrs)
- Materialisierte Ansichten
- Statt-Auslöser
- Hierarchische Abfragen (verbinden durch)
- Geographie (räumliche Datentypen)
- Analytics (Lead, Lag, Rollup, Cube usw.)
- Virtuelle private Datenbank (VPD)
- Prüfung auf Datenbankebene
- Rückblende-Abfragen
- XML-Generierung und XSL-Transformation in der Datenbank
- HTTP-Callouts aus der Datenbank
- Hintergrund Job Scheduler
Warum werden diese Funktionen nicht verwendet? Warum halten die meisten Java-, .NET- und PHP-Entwickler am Ansatz "SELECT * FROM mytable" fest?