What are the top reasons (apart from "database independence") that most IT projects today seem to ignore the wealth of features that exist in modern database engines such as Oracle 11g and SQL Server 2008?
Or, to borrow from the Helsinki Declaration blog which puts it this way:
In the past twenty years we observe that the functionality (features) that is available to us inside the DBMS, has exponentially grown. These features enabled us to build database applications. Which is what we all started doing in the booming nineties.
But then at the dawn of the new millennium, something happened. And that something mysteriously made the role of the DBMS inside a database application project diminish to insignificant. (...) As of the new millennium we are pushing all application logic out of the DBMS into middle tier servers. The functionality of stuff implemented outside the DBMS has exploded, and the feature rich DBMS is hardly used for anything but row-storage.
We are talking about stuff like
- Stored procedures used as data APIs (for security and to avoid excessive network traffic)
- Materialized views
- Instead-Of triggers
- Hierarchical queries (connect by)
- Geography (spatial data types)
- Analytics (lead, lag, rollup, cube, etc.)
- Virtual Private Database (VPD)
- Database-level Auditing
- Flashback queries
- XML generation and XSL transformation in database
- HTTP callouts from database
- Background job scheduler
Why are these features not being used? Why are most Java, .NET and PHP developers sticking with the "SELECT * FROM mytable" approach?