SAP HANA als Entwicklungsplattform

Mehr als eine Datenbank
Kommentare

Eine der vielleicht ersten Assoziationen mit SAP HANA ist die einer hardwareoptimierten, relationalen In-Memory-Datenbank für SAP-Anwendungen. Bei einem zweiten Blick fällt auf, dass SAP HANA mehr als eine Datenbank ist, und für Anwendungsentwickler sowohl innerhalb als auch außerhalb des SAP-Lösungsportfolios einige interessante Funktionen zur Implementierung von Echtzeitanwendungen bietet.

SAP HANA liefert als Lösungsplattform neben einer hybriden (d. h. spalten- und zeilenorientierten) In-Memory-Datenbank weitere funktionale Komponenten, deren Algorithmen ebenfalls für eine In-Memory-Verarbeitung optimiert und eng an die Datenbank gekoppelt sind. Die SAP-Anwendungen nutzen diese Funktionen, um nicht nur bisherige Geschäftsprozesse zu beschleunigen und zu vereinfachen, sondern auch neue Ideen umzusetzen, die beispielsweise durch Ad-hoc-Planungs- und Simulationsläufe oder ein direktes Reporting auf operativen Daten möglich werden. Gerade dieser Aspekt neuer Ideen und Ansätze, die bisher durch Batch-Läufe ausgebremst bzw. in der bisherigen Informationsarchitektur schwer umsetzbar waren, macht SAP HANA als Entwicklungsplattform interessant.
Über Standardschnittstellen stehen die Möglichkeiten der Plattform auch für die Entwicklung eigener Anwendungen zur Verfügung, die entweder das SAP-Lösungsportfolio ergänzen (siehe auch SAP HANA Marketplace) oder komplett eigene Ideen außerhalb einer SAP-Landschaft umsetzen. Durch einen integrierten Anwendungs- und Webserver, eine Entwicklungsumgebung sowie die Unterstützung gängiger APIs ist der Einstieg in die SAP-HANA-Anwendungsentwicklung überschaubar.
Generell ermöglicht es SAP HANA, datenintensive Berechnungen direkt in der Datenbank bzw. nahe der Persistenzschicht auszuführen, um einen unnötigen Transport von Daten in die Anwendungsschicht zu vermeiden. Dazu stehen sog. Application Function Libraries (AFL) zur Verfügung, die, wie die Datenbank, optimiert für eine In-Memory-Verarbeitung unter Nutzung der Hardwaremöglichkeiten der x86-Plattform implementiert sind.
Beispielsweise können über 50 Funktionen aus dem finanzmathematischen Bereich (Business Function Library, BFL), über 25 Data-Mining- und Predictive-Algorithmen (Predictive Analysis Library, PAL) und über 3 000 statistische Algorithmen (über Project R) für die eigene Anwendungsentwicklung genutzt werden. Ebenfalls kann auf Geo-Spatial-Datentypen und -Berechnungen zurückgegriffen werden (momentan als Beta-Programm).
Auch eine Volltextsuche mit Möglichkeiten zur Analyse von unstrukturierten Daten (Entity Extraktion für z. B. Orte oder Personen, Sentimentanalyse, Spracherkennung, Fuzzy etc.) stehen neben einer Business Rules Engine, der Anbindung von Apache Hadoop, Event Stream Processing und einem integrierten Anwendungs- und Webserver für eine HTML5-basierte Cliententwicklung zur Verfügung.
Mit SAP-HANA-basierten Anwendungen ist es ebenfalls möglich, Analysen direkt auf den transaktionalen Daten durchzuführen –und zwar ohne vorherige Aggregats- oder MQT-Bildung. Über Views werden relationale und Analyseoperationen (z. B. Join, Union, Berechnungen, Filterung, Parameter) definiert, die direkt beim Aufruf der Datenbanksicht auf den aktuellen, operativen Daten ausgeführt werden.
Damit bietet SAP HANA eine Plattform zur Umsetzung von Echtzeitanwendungen, die sowohl transaktionale (OLTP) als auch analytische (OLAP) Anforderungen umsetzen. Allgemein können SAP-HANA-Anwendungen auf folgende zwei Arten implementiert werden:

  1. Klassische Clientanwendungen, die über Standardschnittstellen wie ODBC, ODBO, JDBC oder ADBC per SQL auf Datenbankobjekte (z. B. Tabellen, analytische Views, SQLScript-Prozeduren etc.) zugreifen.
  2. Webanwendungen, die Funktionen der sog. Extended Application Services nutzen, und über die Standardschnittstellen OData (Open Data Protocol) oder XMLA (XML for Analysis) auf die Datenbank zugreifen.

Ausgehend von einer MVC-Architektur erlaubt die zweite Anwendungskategorie sowohl das „Model“ als auch den „Controller“ in SAP HANA zu realisieren, indem auf die Extended Application Services zurückgegriffen wird.

Aufmacherbild: Database and networking concept: connected metal hard disk von Shutterstock / Urheberrecht: Oleksiy Mark

SAP HANA Extended Application Services

Mit den Extended Application Services (XS) bietet SAP HANA einen Anwendungs- und Webserver, sowie eine komplette Entwicklungsumgebung (z. B. Eclipse-basierte und Browser-basierte IDE, Code-Repository, Versionierung, Teamentwicklung, Lifecycle Management), die in der SAP-HANA-Lösung integriert ist und eng mit den anderen Plattformfunktionen (z. B. Datenbank, AFL, Textsuche und -analyse) zusammenarbeitet. Die Idee ist, einen Anwendungsserver für HTTP-basierte Zugriffe auf SAP HANA bereitzustellen, der die Vorteile der In-Memory-Plattform durch eine volle Integration ausschöpft.

Stellen Sie Ihre Fragen zu diesen oder anderen Themen unseren entwickler.de-Lesern oder beantworten Sie Fragen der anderen Leser.


Ohne die Möglichkeiten der Extended Application Services wird ein separater Anwendungsserver benötigt, um z. B. eine Webseite oder REST Services auf Basis von SAP-HANA-Daten oder -Logik bereitzustellen. So könnte der SAP-NetWeaver-ABAP- oder SAP-NetWeaver-Java-Anwendungsserver verwendet werden, um via ADBC oder JDBC per SQL-Anweisungen mit SAP HANA zu kommunizieren. Ebenfalls kann über ODBC aus beispielsweise .NET-Anwendungen auf SAP HANA zugegriffen werden.
Selbstverständlich sind diese Szenarien trotz Extended Application Services immer noch relevant, gerade wenn bestehende Anwendungen mit SAP-HANA-Funktionen erweitert werden, und mit überschaubarem Aufwand SAP HANA in bestehende Anwendungsarchitekturen integriert wird.
Startet man mit der Umsetzung einer neuen Idee, können die Extended Application Services eine sinnvolle Option sein. Die Anwendung kann komplett mit Plattformfunktionen gebaut werden und erlaubt durch die Nähe zur Datenbank ein gutes Laufzeitverhalten, nicht nur bei der Verarbeitung und Analyse von Daten.
SAP-HANA-Anwendungen sollten so entworfen werden, dass so viel Anwendungslogik wie möglich direkt in der Plattform ausgeführt wird. Dazu kann datenintensive Logik mit SQL- und SQLScript-Prozeduren unter Nutzung der AFLs implementiert, und SAP HANA Views zur Analyse transaktionaler Daten genutzt werden.
Dadurch werden sowohl die Vorteile der spalten- und zeilenorientierten In-Memory-Datenbank, sowie die massiv parallele Abarbeitung der AFLs durch Verwendung der zur Verfügung stehenden Cores genutzt.
Im Weiteren steht für die Implementierung der Benutzeroberfläche mit SAPUI5 ein HTML5-SDK zur Verfügung, das ebenfalls im Rahmen der Extended Application Services eingebunden werden kann (Kasten: „UI Development Toolkit für HTML5 (SAPUI5)“).

SAP HANA Studio – die Werkbank für Anwendungsentwickler

Um Entwickler bei der Umsetzung von SAP-HANA-XS-Anwendungen zu unterstützen, wurde das Eclipse-basierte SAP HANA Studio mit entsprechenden Funktionen erweitert. So zum Beispiel durch ein Team-Provider-Plug-in, mit dem SAP HANA als Repository zur Sourcecode- und Teamentwicklung verwendet werden kann. Dabei werden Funktionen zur Konflikterkennung, Merge von Ressourcen, Check-in/-out, Commit etc. sowie ein Konzept inaktiver Artefakte unterstützt, das beim Check-in erlaubt, zwischen einer Aktivierung für die Laufzeit oder einer reinen Codeverwaltung zu unterscheiden.
Damit kann der Lebenszyklus aller Artefakte (z. B. SAP HANA Views, SQLScript-Prozeduren, Rollen, HTML, JavaScript) einer XS-Anwendung aus dem Studio und der SAP-HANA-Plattform realisiert werden.
In der „Entwicklerperspektive“ des Studios sind alle notwendigen Werkzeuge zur Entwicklung einer Extended-Application-Services-Anwendung zusammengefasst. Neben Standardansichten wie z. B. die Navigatoransicht oder dem Project Explorer finden sich hier Erweiterungen speziell für die Entwicklung von nativen SAP-HANA-Anwendungen: Ein JavaScript-Editor für serverseitige Logik, der Repository-Browser oder das SAPUI5-Entwicklungs-Toolkit.
Gemäß Eclipse-Tradition stehen ebenfalls diverse Wizards zur Erstellung von Artefakten, Code Completion und Syntax-Highlighting, sowie integrierte Debugger für SQLScript und JavaScript zur Verfügung.
Auch für die Erstellung eines Informationsmodells zur Analyse von Daten werden Wizards bereitgestellt, die über den „Quick Launch“ der „Modeler Perspektive“ aufgerufen werden können (Abb. 1).

Abb. 1: Quick Launch der „Modeler Perspektive“ im SAP HANA Studio

UI Development Toolkit für HTML5 (SAPUI5)

Das UI Development Toolkit für HTML5 (SAPUI5) ist eine clientseitige HTML5-Rendering-Bibliothek, die eine Palette von Standard-UI-Komponenten für Desktop- und mobile Anwendungen sowie ein Programmiermodell zur Verfügung stellt. Die Standardkomponenten können dabei erweitert werden, um z. B. eigene Controls zu entwickeln. Zur Umsetzung von SAPUI5-basierten Anwendungen steht ebenfalls ein Eclipse-Plug-in zur Verfügung.

Definition des Informationsmodells

Wenn es um die Echtzeitverarbeitung von Daten geht, greifen SAP-HANA-Anwendungen auf ein Informationsmodell zurück. Kernelemente des Informationsmodells sind ein oder mehrere Sichten auf transaktionale Daten. Unterschieden werden dabei „Attribute“, „Analytical“ und „Calculation Views“, die im Wesentlichen aus Attributen und Kennzahlen bestehen.
Basierend auf den Attributen mehrerer Quelltabellen, werden „Attribute Views“ zur Modellierung von Dimensionen bzw. Themenbereichen verwendet. Beispiele sind Zeit, Produkt oder Konto.
„Analytic Views“ sind mehrdimensionale Datenbanksichten, die zur Analyse von Werten aus einer Faktentabelle genutzt werden. Die Faktentabelle ist dabei über Attribute mit anderen Quelltabellen oder „Attribute-Views“ verbunden. Der Verkauf eines Produkts in einer bestimmten Zeitspanne ist ein Beispiel für eine „Analytic View“.
Mithilfe von „Calculation Views“ lassen sich komplexere Berechnungen modellieren. Dabei können bereits angelegte „Attribute“ und „Analytical Views“ oder auch andere Quelltabellen verwendet werden. Der Vergleich eines Produktverkaufs in einer bestimmten Region über die letzten zwei Jahre könnte durch eine „Calculation View“ modelliert werden.
Aus der Anwendung kann über unterschiedliche Mechanismen mit dem SAP-HANA-Informationsmodell interagiert werden. Eine Möglichkeit ist das Open Data Protocol (OData).

Zugriff auf SAP HANA via OData

Die Erstellung eines OData REST Services für eine bestehende SAP-HANA-Tabelle oder -Sicht ist nicht sehr aufwändig. Die Extended Application Services beinhalten ein Werkzeug für die Erstellung von OData Services, sodass kein serverseitiges Coding notwendig ist. Um einen OData Service für eine bestehende SAP-HANA-Tabelle oder -View anzulegen, ist es erforderlich, eine XSOData-Service-Definitionsdatei zu erstellen: Im Kontext eines SAP-HANA-XS-Entwicklungsprojekts wird die  XSOData-Service-Definitionsdatei mit der Endung .xsodata angelegt. Innerhalb der .xsodata-Datei wird auf die SAP-HANA-Tabelle oder -View verwiesen und der Name der OData-Entität vergeben.
Im folgenden Beispiel wird ein OData Service für eine SAP-HANA-Tabelle mit Informationen zu Geschäftspartnern erstellt. In der businessPartners.xsodata-Datei wird dazu der Namespace (workshop.services), das Datenbankschema, in dem die Tabelle angelegt ist (SAP_HANA_EPM_DEMO), der Name der bestehenden SAP-HANA-Tabelle (sap.hana.democontent.epm.data::businessPartner) und der Name der OData-Entität (BusinessPartners) definiert:

service namespace "workshop.services" {
  "SAP_HANA_EPM_DEMO"."sap.hana.democontent.epm.data::businessPartner" as "BusinessPartners";
}

Nach der Laufzeitaktivierung der OData-Datei über das SAP HANA Repository ist der Service ausführbar und kann getestet werden (Abb. 2). Dabei werden Standard-OData-Parameter wie $metadata für Introspection, $filter und $orderby etc. von dem erstellten Service unterstützt. Ebenfalls werden Formate wie ATOM/XML und JSON unterstützt (per $format-Paramter; siehe auch Informationen zum OData-Standard).

Abb. 2: Aufruf des in Listing 1 definierten OData Services mit dem „$metadata“-Parameter

Der erstellte OData Service kann auch durch Hinzufügen einer weiteren Tabelle sap.hana.democontent.epm.data::addresses mit dem Entitätsnamen BPAddress erweitert werden. Zur Navigation wird eine 1:1-Assoziation namens Address zwischen der AddressId der businessPartner-Tabelle und der addresses-Tabelle erstellt (Listing 1).

service namespace "workshop.services" {
  "SAP_HANA_EPM_DEMO"."sap.hana.democontent.epm.data::businessPartner" 
      as "BusinessPartners" navigates ("Address" as "BPAddress");
  "SAP_HANA_EPM_DEMO"."sap.hana.democontent.epm.data::addresses" 
      as "BPAddress";
  association "Address" principal "BusinessPartners"("AddressId")
      multiplicity "1" dependent "BPAddress"("AddressId") multiplicity "1";
}

Für die Interaktion mit den SAP HANA OData Services stehen eine Reihe von Möglichkeiten wie z. B. JavaScript, jQuery und auch SAPUI5 als HTML5 SDK zur Verfügung. Letzteres ist Teil der Extended Application Services und bietet eine direkte Möglichkeit, OData Services über UI-Elemente aufzurufen.
So kann mithilfe von SAPUI5 ein OData Model Object für einen zuvor definierten OData Service erstellt werden, und in einem zweiten Schritt ein Table-UI-Element definiert und mit dem Model verknüpft werden (Listing 2).

...
// Erstellung des OData Model Objects für den definierten OData Service
var oModel = new sap.ui.model.odata.ODataModel("/../../services/businessPartners.xsodata/", false); 
// Definition einer SAPUI5-Tabelle als grafisches Ausgabeformat
oTable = new sap.ui.table.Table("demo",{tableId: "tableID", visibleRowCount: 10}); 
oTable.setTitle("Business Partners");
//Zuweisung des OData Model Objects zur Tabelle
oTable.setModel(oModel);
...

Damit wird ein Table-UI-Element angelegt, das direkt Funktionen zum Sortieren und Filtern durch Aufruf der entsprechenden OData Services realisiert – ohne zusätzliches clientseitiges oder serverseitiges Skripting (Abb. 3).

Abb. 3: Darstellung der Daten aus dem OData Service mittels einer SAPUI5-Tabelle

Serverseitiges JavaScript

Mit den XSOData Services können Zugriffe auf bestehende SAP-HANA-Datenbankobjekte schnell umgesetzt werden. Je nach Anforderung kann es aber notwendig sein, mehr Kontrolle über die Logik des Service Handlers zu haben oder auch andere Ausgabeformate zu erstellen. Für diese Szenarien können eigene Service Handler mithilfe von serverseitigem JavaScript entwickelt werden.
Bei der Entwicklung von serverseitigen SAP-HANA-Anwendungen kann auf Kernfunktionen der SAP HANA Extended Application Services über JavaScript zugegriffen werden, wie z. B. auf HTTP-Request- und Response-Objekte und auf Datenbankobjekte per SQL- und SQLScript-Prozeduren.
Ein Beispiel, wie auf SAP-HANA-Datenbankobjekte zugegriffen und gleichzeitig die Ergebnismenge weiterverarbeitet werden kann, zeigt Listing 3. Mittels serverseitigem JavaScript wird eine Ausgabedatei erstellt, die sich in MS Excel öffnen lässt.

//Funktion zum Download von Daten im MS-Excel-Format
function downloadExcel() {
  var body = '';
  //Definition und Ausführung des SQL-Ausdrucks
  var query = 'SELECT TOP 25000 "PurchaseOrderId", "PartnerId",' +
              '"CompanyName", "CreatedByLoginName", "CreatedAt",' + 
              '"GrossAmount" '
              + 'FROM "sap.hana.democontent.epm.data::purchaseOrderHeaderExt" '
              + 'ORDER BY "PurchaseOrderId"';
  var conn = $.db.getConnection();
  var pstmt = conn.prepareStatement(query);
  var rs = pstmt.executeQuery();
  //Definition der Spaltenbezeichner
  body = "Purchase Order Id tPartner Id tCompany Name" + 
         "tEmployee Responsible tCreated At tGross Amount n";
  //Erstellung der TAB-Delimited-Werte aus dem ResultSet
  while (rs.next()) {
    body += rs.getNString(1) + "t" + rs.getNString(2) + "t"
          + rs.getNString(3) + "t" + rs.getNString(4) + "t"
          + rs.getDate(5) + "t" + rs.getDecimal(6) + "n";
  }
  // Rückgabe der Werte in Form einer MS-Excel-Datei
  $.response.setBody(body);
  $.response.contentType = 'application/vnd.ms-excel; charset=utf-16le';
  $.response.headers.set('Content-Disposition','attachment; filename=Excel.xls');
  $.response.headers.set('access-control-allow-origin', '*');
  $.response.status = $.net.http.OK;
}

JavaScript-basierte Services können, wie OData-basierte Services, ebenfalls aus der Benutzeroberfläche mittels SAPUI5 konsumiert werden.

Nächste Schritte

Die ersten Schritte einer SAP-HANA-Anwendungsentwicklung können mithilfe eines 30-tägigen, kostenlosen Zugangs auf eine SAP HANA Developer Edition gemacht werden, die auf CloudShare gehostet wird. Neben dem SAP HANA Server (4 vCore Maschine mit 20 GB RAM) wird ein Windows Remote Desktop mit dem SAP HANA Studio und dem Datenbankclient bereitgestellt. Optional können das Studio und der Client auch auf dem lokalen Rechner installiert werden. Der Zugriff auf die 30-tägige Testversion kann über das SAP HANA Developer Center beantragt werden.
Alternativ kann auf ein SAP-HANA-Entwicklungssystem (SAP HANA One) auch über Amazon Web Services (AWS) zugegriffen werden, wobei eine nutzungsabhängige Berechnung erfolgt.
Für eine umfassende Einführung in die SAP-HANA-Anwendungsentwicklung mittels Extended Application Services ist ebenfalls der kostenfreie Kurs „Introduction to Software Development on SAP HANA“ von openSAP zu empfehlen. Neben vielen Beispielen und Übungen wird dabei auch auf die Erstellung des Informationsmodells sowie SQLScript-Grundlagen zur Entwicklung gespeicherter Prozeduren eingegangen.

SAP HANA Interactive Education (SHINE)

SAP HANA Interactive Education ist eine Demoanwendung, mit der die Entwicklung von SAP-HANA-Anwendungen erlernt werden kann. Ab SAP HANA SPS6 wird die Anwendung in Form einer einspielbaren Delivery Unit bereitgestellt und liefert neben Beispieldaten auch Design-Time-Entwicklungsobjekte für Datenbanktabellen, Sichten, gespeicherte Prozeduren, OData Services und UIs.

Fazit

Mit SAP HANA als In-Memory-Datenplattform besteht die Möglichkeit, mit Standardmitteln Anwendungen zu entwickeln, die ihre Geschäfts- und Kontrolllogik in der Datenbankschicht integrieren, und damit ein sehr gutes Laufzeitverhalten bei der Verarbeitung und Analyse strukturierter und unstrukturierter Daten erzielen. Die Leistungssteigerung kommt nicht nur durch die In-Memory-Datenbank zustande, die die Möglichkeiten aktueller Hardware ausnutzt, sondern auch durch die In-Memory-optimierten Services für Anwendungsentwickler, die in der SAP-HANA-Plattform bereitgestellt werden. Dazu zählt neben einer Reihe von funktionalen Komponenten zur Informationsverarbeitung ebenfalls eine integrierte Entwicklungsumgebung, die SAP HANA als Code-Repository zur Entwicklung in Teams nutzbar macht.

Entwickler Magazin

Entwickler Magazin abonnierenDieser Artikel ist im Entwickler Magazin erschienen.

Natürlich können Sie das Entwickler Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist das Entwickler Magazin ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -