Als SAP die In-Memory-Datenbank HANA entwickelte, entdeckten sie, dass ihre eigenen Anwendungen die schlimmsten Feinde der neuen In-Memory-Datenbank waren. SAP erkannte, dass ihre Anwendungen optimiert werden mussten, um von HANA zu profitieren. Doch während SAP nur an HANA dachte, können funktionsreiche Datenbanken wie Oracle dieselben Optimierungen unterstützen und davon profitieren.
SAP betrachtete eine Datenbank als einen „dummen“ Datenspeicher. Wann immer ein Benutzer etwas Nützliches mit den Daten tun will, müssen sie übertragen werden, denn die Intelligenz sitzt im SAP Application Server.
Die Nachteile dieses Ansatzes liegen auf der Hand: Wenn die Summe von 1 Million Werten berechnet werden muss und diese Werte Geld in verschiedenen Währungen darstellen, werden 1 Million Einzelwerte vom Datenbankserver zum Anwendungsserver übertragen – nur um nach der Berechnung gelöscht zu werden. Der Netzwerkverkehr, der durch diesen Ansatz verursacht wird, ist für die schlechte Performance verantwortlich.
Als Reaktion auf diese Erkenntnis entwickelte SAP die „Push-Down“-Strategie: Push-Down-Code, der datenintensive Berechnungen erfordert, von der Anwendungsschicht auf die Datenbankschicht. Sie entwickelten ein völlig neues Programmiermodell, das es ABAP-Code ermöglicht, in der Datenbank gespeicherte Prozeduren (implizit oder explizit) aufzurufen. Außerdem haben sie eine Bibliothek mit Standardprozeduren definiert, die als SAP NetWeaver Core Data Services (CDS) bezeichnet wird.
20 Jahre zuvor hatte Oracle bereits dieselbe Idee und die gleiche Entscheidung getroffen. Seit Version 7 können Entwickler mit Oracle Database Prozeduren und Funktionen erstellen, die in der Datenbank gespeichert und ausgeführt werden können. Dadurch konnte CDS auch für Oracle Database verfügbar gemacht werden und steht heute SAP-Anwendungsentwicklern zur Verfügung.
Die Datenmodelle von SAP (die Tabellen, die eine Anwendung verwendet, und die Beziehungen zwischen ihnen) wurden vor 15 oder 20 Jahren definiert und für datenträgerorientierte Datenbanken optimiert. Doch was im Zeitalter des plattenbasierten Computings eine Optimierung war, erweist sich im Zeitalter des In-Memory-Computings als Hindernis.
Das wohl bekannteste Beispiel ist die interne Struktur eines SAP BW Würfels. Was aus Unternehmens- oder Benutzerperspektive wie ein einziger "Würfel" aussieht, ist in Wirklichkeit ein Komplex von mehreren Tabellen, und die Beziehungen zwischen ihnen können als mehrstufige Hierarchie beschrieben werden (Stern- oder Schneeflockenschema). Diese komplexe Struktur, die viele Joins erfordert, wenn eine Abfrage oder ein Bericht ausgeführt wird, verlangsamt die In-Memory-Datenbanken erheblich. Daher hat SAP ein neues, einfacheres Datenmodell für SAP BW auf HANA entworfen und es konsequenterweise HANA-Optimized InfoCubes genannt. Dieses neue Datenmodell ist jedoch nicht nur für HANA optimiert. Es ist für In-Memory-Computing im Allgemeinen optimiert. Daher können SAP-on-Oracle-Benutzer, die Oracle Database In-Memory aktiviert haben, es ebenfalls implementieren. Der einzige Unterschied besteht im Namen (Flat InfoCubes oder einfach Flat Cubes).
Eine weniger bekannte und dennoch wichtige Optimierung ist Table Declustering. Eine Clustertabelle speichert einen vollständigen (logischen) Datensatz in einer einzelnen (physischen) Tabellenspalte. Ein solcher komplexer Wert kann vom SAP Application Server interpretiert werden, aber nicht von einem Datenbankserver – was bedeutet, dass ein Code-Pushdown nicht möglich ist, wenn eine Clustertabelle beteiligt ist. Aus diesem Grund unterstützt SAP jetzt Table Declustering, für HANA sowie für die Oracle Database.
Die Vorteile des soeben beschriebenen CDS-Frameworks sind keineswegs auf SAP-Anwendungen beschränkt (d.h. von SAP-Entwicklern erstellte Standardanwendungen). Für Kunden sind selbst entwickelte Anwendungen ein wesentlicher Bestandteil ihrer SAP-Landschaft. Viele dieser Anwendungen könnten erheblich von der Verwendung von CDS-Funktionen profitieren.
CDS-Ansichten können über OData angezeigt werden. Basierend auf der OData-Exposition von CDS ist es dann ziemlich einfach, SAP Fiori-Anwendungen mit dem Entwicklungsframework SAP WEB IDE zu erstellen. Einzelheiten finden Sie im Bericht ABAP Core Data Services auf anyDB.