Cuando SAP desarrolló la base de datos en memoria HANA, descubrieron que sus propias aplicaciones eran sus peores enemigos. SAP se dio cuenta de que sus aplicaciones tenían que ser optimizadas para beneficiarse de HANA. Pero aunque SAP solo tenía en mente a HANA, las bases de datos ricas en funciones como Oracle pueden soportar las mismas optimizaciones y beneficiarse de ellas.
SAP solía pensar en una base de datos como un almacén de datos tonto. Cuando un usuario desea hacer algo útil con los datos, se debe transferir, porque la inteligencia se encuentra en el servidor de aplicaciones SAP.
Las desventajas de este enfoque son obvias: si es necesario calcular la suma de 1 millón de valores y si esos valores representan dinero en diferentes monedas, se transfieren 1 millón de valores individuales del servidor de base de datos al servidor de aplicaciones, solo para desecharlos después de realizar el cálculo. El tráfico de red causado por este enfoque es responsable del mal rendimiento.
Como respuesta a esta visión, SAP desarrolló la estrategia "Push down": push down code que requiere cálculos intensivos en datos desde la capa de aplicación hasta la capa de base de datos. Desarrollaron un modelo de programación completamente nuevo que permite al código ABAP (implícita o explícitamente) llamar a procedimientos almacenados en la base de datos. Y definieron una biblioteca de procedimientos estándar, denominada SAP NetWeaver Core Data Services (CDS).
20 años antes, Oracle ya tenía la misma idea y tomó la misma decisión. Desde la versión 7, Oracle Database permite a los desarrolladores crear procedimientos y funciones que se pueden almacenar y ejecutar en la base de datos. Por lo tanto, también fue posible hacer que el CDS estuviera disponible para Oracle Database, y hoy en día los desarrolladores de aplicaciones de SAP pueden utilizarlo.
Los modelos de datos de SAP (el conjunto de tablas que utiliza una aplicación y las relaciones entre ellos) se habían definido hace 15 o 20 años y se habían optimizado para bases de datos orientadas al disco. Pero, como resultó, lo que fue una optimización en la era de la computación basada en disco es un obstáculo en la era de la computación en memoria.
El ejemplo más famoso es probablemente la estructura interna de un cubo SAP BW. Lo que desde una perspectiva de negocio o de usuario se parece a un único "cubo", es en realidad un juego de múltiples tablas, y las relaciones entre ellas se pueden describir como una jerarquía multinivel (modelo de "estrella" o "copo de nieve"). Esta estructura compleja, que requiere muchas uniones cuando se ejecuta una consulta o un informe, ralentiza considerablemente las bases de datos en memoria. Por lo tanto, SAP diseñó un nuevo modelo de datos más simple para SAP BW en HANA y, en consecuencia, lo llamó HANA-Optimized InfoCubes. Pero este nuevo modelo de datos no solo está optimizado para HANA. Está optimizado para la computación en memoria en general. Por lo tanto, SAP en los usuarios de Oracle que han activado Oracle Database In-Memory también puede implementarlo, siendo la única diferencia el nombre (Flat InfoCubes o simplemente Flat Cubes).
Una optimización menos famosa pero igualmente importante es Table Declustering. Una tabla de cluster almacena un registro (lógico) completo en una sola columna de tabla (física). Un valor tan complejo puede ser interpretado por el servidor de aplicaciones de SAP, pero no por un servidor de base de datos, lo que significa que la transferencia de código no es posible, si se trata de una tabla de cluster. Por lo tanto, SAP ahora soporta Table Declustering, tanto para HANA como para Oracle Database.
Los beneficios del marco CDS que acabamos de describir no se limitan de ninguna manera a las aplicaciones SAP (es decir, las aplicaciones estándar creadas por los desarrolladores de SAP). Para los clientes, las aplicaciones domésticas son una parte esencial de su entorno SAP. Muchas de estas aplicaciones podrían beneficiarse significativamente del uso de funciones del CDS.
Las vistas del CDS se pueden exponer mediante OData. Basado en la exposición OData del CDS, entonces es bastante sencillo crear aplicaciones SAP Fiori utilizando el marco de desarrollo SAP WEB IDE. Para obtener más información, consulta el informe ABAP Core Data Services on anyDB.