Jakie są główne powody ( oprócz „niezależności bazy danych” ), dla których większość dzisiejszych projektów informatycznych wydaje się ignorować bogactwo funkcji dostępnych w nowoczesnych silnikach baz danych, takich jak Oracle 11g i SQL Server 2008?
Lub, zapożyczając z bloga Deklaracji Helsińskiej, który przedstawia to w ten sposób:
W ciągu ostatnich dwudziestu lat obserwujemy, że funkcjonalność (cechy), które są dostępne dla nas w DBMS, gwałtownie wzrosła. Te funkcje umożliwiły nam tworzenie aplikacji bazodanowych. I to właśnie zaczęliśmy wszyscy w rozkwitających latach dziewięćdziesiątych.
Ale potem, u zarania nowego tysiąclecia, coś się wydarzyło. I to w tajemniczy sposób sprawiło, że rola DBMS w projekcie aplikacji bazodanowej stała się nieistotna. (...) Od nowego tysiąclecia wypychamy całą logikę aplikacji z DBMS na serwery średniej warstwy. Funkcjonalność rzeczy zaimplementowanych poza DBMS eksplodowała, a bogaty w funkcje DBMS jest używany tylko do przechowywania wierszy.
Mówimy o takich rzeczach jak
- Procedury składowane używane jako interfejsy API danych (dla bezpieczeństwa i uniknięcia nadmiernego ruchu sieciowego)
- Zmaterializowane widoki
- Wyzwalacze zamiast
- Zapytania hierarchiczne (połącz przez)
- Geografia (typy danych przestrzennych)
- Analityka (lead, lag, rollup, cube itp.)
- Wirtualna prywatna baza danych (VPD)
- Inspekcja na poziomie bazy danych
- Zapytania flashback
- Generowanie XML i transformacja XSL w bazie danych
- Wywołania HTTP z bazy danych
- Harmonogram zadań w tle
Dlaczego te funkcje nie są używane? Dlaczego większość programistów Java, .NET i PHP trzyma się podejścia „SELECT * FROM mytable”?