¿Cuáles son las principales razones ( además de la "independencia de la base de datos" ) por las que la mayoría de los proyectos de TI parecen ignorar la gran cantidad de características que existen en los motores de bases de datos modernos como Oracle 11g y SQL Server 2008?
O, tomando prestado del blog de la Declaración de Helsinki, que lo expresa de esta manera:
En los últimos veinte años observamos que la funcionalidad (características) que está disponible para nosotros dentro del DBMS, ha crecido exponencialmente. Estas características nos permitieron crear aplicaciones de bases de datos. Que es lo que todos empezamos a hacer en el auge de los noventa.
Pero luego, en los albores del nuevo milenio, sucedió algo. Y ese algo misteriosamente hizo que el papel del DBMS dentro de un proyecto de aplicación de base de datos se redujera a insignificante. (...) A partir del nuevo milenio, estamos empujando toda la lógica de las aplicaciones del DBMS a servidores de nivel medio. La funcionalidad de cosas implementadas fuera del DBMS se ha disparado, y el DBMS rico en funciones apenas se usa para nada más que para almacenamiento en filas.
Estamos hablando de cosas como
- Procedimientos almacenados utilizados como API de datos (por seguridad y para evitar un tráfico de red excesivo)
- Vistas materializadas
- En lugar de disparadores
- Consultas jerárquicas (conectar por)
- Geografía (tipos de datos espaciales)
- Analítica (lead, lag, rollup, cube, etc.)
- Base de datos privada virtual (VPD)
- Auditoría a nivel de base de datos
- Consultas de flashback
- Generación XML y transformación XSL en base de datos
- Llamadas HTTP de la base de datos
- Programador de trabajos en segundo plano
¿Por qué no se utilizan estas funciones? ¿Por qué la mayoría de los desarrolladores de Java, .NET y PHP siguen con el enfoque "SELECT * FROM mytable"?