Hello HANA!

SAP-HANA – In wenigen Schritten zur ersten Anwendung [Teil 1]
Kommentare

Auf Basis eines kostenfreien SAP-HANA-Entwickleraccounts in der Cloud, werden in dieser zweiteiligen Artikelserie die grundlegenden Schritte zur Umsetzung einer nativen SAP-HANA-Anwendung vorgestellt.

Denkt man über die Entwicklung von Anwendungen auf Basis von SAP HANA nach, stellt sich zunächst die Frage nach den Möglichkeiten der Technologie: Welche Lösungen lassen sich damit bauen? Die zentrale Komponente von SAP HANA ist eine In-Memory-Datenbank zur Verarbeitung strukturierter, unstrukturierter, graphenorganisierter und geografischer Daten. Zusätzlich zu der Datenverwaltung bietet die Plattform weitere Funktionskomponenten, die bei der Entwicklung von Anwendungen genutzt werden. So ist die Rechenleistung und Geschwindigkeit von SAP HANA ein Mittel, das die Entwicklung von komplett neuartigen Lösungen auf Basis der zusätzlichen Funktionskomponenten ermöglicht.

Anwendungsszenarien

Ein Vorteil von SAP HANA ist die Konsolidierung von analytischen und transaktionalen Anwendungsszenarien auf einer gemeinsamen Datenbasis. Durch die Rechenleistung der In-Memory-Datenbank werden die transaktional und normalisiert anfallenden Massendaten direkt analytisch ausgewertet, ohne dass die Daten extrahiert, transformiert und in ein anderes Datenmodell überführt werden. Somit erfolgt bei SAP HANA die Datenanalyse im laufenden Betrieb der Transaktionen auf aktuellsten Daten.

Dies vereinfacht nicht nur die Lösungsarchitektur, sondern erlaubt gleichzeitig die Umsetzung neuartiger Anwendungen. SAP HANA ermöglicht Anwendungen, die einerseits Massendaten verarbeiten, und gleichzeitig Auswertungen auf den Massendaten in voller Detailschärfe realisieren. Auch eine Echtzeitplanung und Simulation von „was-wäre-wenn“-Fragen ist möglich.

Szenarien lassen sich im Umfeld von Industrie 4.0 oder allgemein bei der Erfassung und Auswertung von Sensordaten finden. So z. B. „sense-and-respond“-Anwendungen in den Bereichen Fraud Detection oder Cyber Security, die zeitkritische Reaktionen auf Basis der Echtzeitanalysen und Simulationsergebnisse auslösen.

Beispiel: F1 McLaren Race Analytics
Während eines Formel1-Rennens werden ca. achtzig Leute für den Betrieb des Rennautos benötigt. Daten spielen dabei eine wichtige Rolle, da kleine Änderungen in den Fahrzeugeigenschaften einen großen Unterschied ausmachen. Dazu wertet die Race-Analytics-Anwendung des F1-McLaren-Teams auf Basis von SAP HANA Informationen aus (Abb. 1), die von 120 Fahrzeugsensoren kontinuierlich geliefert und in der In-Memory-Datenbank verarbeitet werden. Die Daten geben Auskunft über den Zustand des Fahrzeugs und zentrale Komponenten wie z. B. Motor, Bremsen und Fahrerbiometrie. In einer Runde werden ca. 2 GB Daten generiert, was pro Rennen ca. 3 TB Daten bedeutet. Mit SAP HANA werden die Daten nicht mehr innerhalb einer Woche, sondern in Echtzeit ausgewertet und sind die Grundlage für strategische Rennentscheidungen. Ebenso rechnet die Anwendung auf Basis von zehn Jahren Renndaten mit Vorhersagemodellen, um so fundierte Entscheidungen zu treffen.
Abb. 1: Der britische Formel-1-Rennstall McLaren wertet Renndaten mithilfe von SAP HANA aus (© LAT Photographic)

Abb. 1: Der britische Formel-1-Rennstall McLaren wertet Renndaten mithilfe von SAP HANA aus (© LAT Photographic)

Um die Auswertung der transaktionalen Massendaten nicht nur auf reine Kennzahlen und Attribute zu beschränken, bietet SAP HANA über dreißig Data-Mining-/Predictive-Analysis-Algorithmen, die gebündelt in der Predictive Analysis Library (PAL) für die eigene Programmierung bereitstehen. Zur weiteren Wertschöpfung der Daten können mit den PAL Clustering Algorithms (z. B. K-Means), Classification Algorithms (z. B. C4.5 Decision Tree, KNN), Regression Algorithms (z. B. Polynomial), Association Algorithms (z. B. Apriori), Time Series Algorithms (z. B. ARIMA), Statistics Algorithms (z. B. Multivariate) und Social Network Analysis Algorithms (z. B. Link Prediction) genutzt werden. Für ergänzende statistische Betrachtungen wird die Programmiersprache R eingebunden.

Zur Verarbeitung unstrukturierter Daten, wie z. B. Texte aus sozialen Medien, Arztbriefe oder wissenschaftliche Artikel, nutzt SAP HANA neben linguistischen Analysen eine Entity-Extraktion zur Erkennung von z. B. Orten, Personen, Medikamenten, Krankheiten und auch positiven oder negativen Stimmungen. Die Textanalyse basiert auf Wörterbüchern, die für eigene Anwendungsfälle erweiterbar sind. Damit öffnen sich weitere Use Cases für Anwendungen im Bereich Predictive Analysis (von z. B. Maschinen und deren Komponenten) und Knowledge-Management, zur wissenschaftlichen Recherche oder medizinischen Auswertung.

Auch Anwendungsfälle im Umfeld von Big Data werden erschlossen, indem sich Daten aus externen, relationalen Datenbanksystemen (SAP ASE, SAP IQ, SAP HANA, Oracle, IBM DB2, MS SQLServer, Netezza, Teradata) und auch Hadoop in SAP HANA lesend und schreibend über so genannte virtuelle Tabellen einbinden lassen (Smart Data Access). Bei der Modellierung des Datenmodells werden die virtuellen Tabellen genau wie physische Tabellen verwendet. Einerseits lassen sich damit Multi-Temperature-Datenhaltungskonzepte realisieren, aber auch Big-Data-Analytic-Szenarien (wie z. B. Click-Stream-Analysen) mittels Map/Reduce umsetzen.

Zwei Arten von SAP-HANA-Anwendungen

Um die Möglichkeiten der SAP-HANA-Plattform im Rahmen einer eigenen Anwendung zu nutzen, bestehen prinzipiell zwei Möglichkeiten, die Anwendungsarchitektur zu gestalten. Einerseits kann die Lösung in einer klassischen Drei-Schichten-Architektur gebaut werden. SAP HANA wird dabei über Standardmechanismen an einen Anwendungsserver angebunden und per SQL, JPA oder ADO.NET angesprochen.

Andererseits kann die eigene Anwendung direkt auf SAP HANA laufen, in dem die SAP HANA Extended Application Services (XS) genutzt werden. Dies entspricht einer Zwei-Schichten-Architektur. Teil der SAP HANA Extended Application Services ist ein Web- und Applikationsserver zur Entwicklung mit JavaScript und HTML5, so wie der Nutzung der SAP-HANA-In-Memory-Features. Native Anwendungen werden über das integrierte Content Repository verwaltet und deployt (Abb. 2). Eine Strukturierung der nativen SAP-HANA-Anwendung erfolgt über Packages, die sich in der Struktur des Content Repositories wiederfinden.

Egal für welche der beiden Varianten zur Umsetzung einer Anwendung man sich entscheidet, bietet die SAP HANA Cloud Platform (HCP) als PaaS alle notwendigen Dienste, um mit der Programmierung zu starten.

Abb. 2: Übersicht der SAP-HANA-Funktionskomponenten und deren Anbindung; es können native SAP-HANA-Anwendungen direkt auf der Plattform mit den Extended Application Services programmiert oder im Kontext eines Anwendungsservers über Standardschnittstellen auf die Funktionskomponenten zugegriffen werden.

Abb. 2: Übersicht der SAP-HANA-Funktionskomponenten und deren Anbindung; es können native SAP-HANA-Anwendungen direkt auf der Plattform mit den Extended Application Services programmiert oder im Kontext eines Anwendungsservers über Standardschnittstellen auf die Funktionskomponenten zugegriffen werden.

Warum Anwendungen auf Basis von SAP HANA programmieren?
Die Möglichkeit, OLTP und OLAP auf einem gemeinsamen Datenmodell durchzuführen, ist die Grundlage für Echtzeitanalysen der Daten. Weitere In-Memory-optimierte Features, wie z. B. Predictive Analysis, Textanalyse und Simulation, stehen bei der Informationsgewinnung zur Verfügung. Die In-Memory-Datenbank arbeitet neben strukturierten und unstrukturierten Daten auch mit Graphenmodellen und lokationsbasierten Informationen. Über Extended Application Services können mit JavaScript eigene Anwendungen direkt auf SAP HANA entwickelt und deployt werden. Mit diesen Möglichkeiten vereinfacht sich die Lösungsarchitektur einer Anwendung. Anwendungsszenarien liegen in den Bereichen Big Data, Industrie 4.0, Internet of Things oder allgemein in der Verarbeitung von Massendaten bei gleichzeitiger Auswertung in voller Detailschärfe.

Onboarding in die SAP HANA Cloud Platform

Die SAP HANA Cloud Platform (HCP) erlaubt über einen kostenfreien Trial-Account, erste Erfahrungen mit der Entwicklung von SAP-HANA-Anwendungen zu sammeln. Der Trial-Account ist ohne zeitliche Beschränkung nutzbar, hat allerdings keinen Anspruch auf SLAs und Verfügbarkeit der SAP-HANA-Plattform. Die Größe der SAP-HANA-Datenbank ist auf 1 GB beschränkt und teilt sich die Hardwareressourcen und Rechenleistung mit anderen Nutzern der HCP.

Als PaaS bietet die HCP neben der In-Memory Datenbank einen Document Service für CM Repositories sowie einen J2EE-Server. Auch das SAP-HANA-Cloud-Portal und die SAP Mobile Platform sind nutzbar. Nach erfolgreicher Registrierung und Anmeldung sind alle PaaS-Dienste aus dem SAP HANA Cloud Cockpit konfigurierbar. Automatisch wird eine SAP-HANA-Datenbankinstanz mit dem Namen dev und ein entsprechendes Package im Content Repository angelegt (Abb. 3).

Abb. 3: SAP HANA Cloud Cockpit erlaubt die Konfiguration und Nutzung der HCP-PaaS-Dienste, wie z. B. die automatisch angelegte HANA-In-Memory-Datenbankinstanz

Abb. 3: SAP HANA Cloud Cockpit erlaubt die Konfiguration und Nutzung der HCP-PaaS-Dienste, wie z. B. die automatisch angelegte HANA-In-Memory-Datenbankinstanz

Um mit der Entwicklung einer SAP-HANA-Anwendung zu beginnen, wird aus der Eclipse-IDE zunächst eine Verbindung zur Datenbankinstanz aufgebaut. Anschließend wird ein Entwicklungsprojekt für die native Anwendung (XS-Projekt) angelegt, und mit dem SAP HANA Content Repository zwecks Deployment und Ausführung verknüpft. Im Kontext des Entwicklungsprojekts unterstützen diverse Wizards bei der Entwicklung einer nativen Anwendung.

Die Entwicklungsumgebung

Die Verbindung zu der In-Memory-Datenbankinstanz in der HCP sowie die Entwicklung von SAP-HANA-Anwendungen wird durch Eclipse-Plug-ins unterstützt, die über ein öffentliches Repository nachinstalliert werden. Aktuell werden die SAP-HANA-Development-Plug-ins für das Kepler-Release (4.3.x) angeboten. Notwendig für die Entwicklung von SAP-HANA-Anwendungen sind folgende zwei Plug-ins:

  • SAP HANA Cloud Platform Tools werden zur Interaktion mit den PaaS-Diensten in der HCP, wie z. B. den Verbindungsaufbau zu der SAP-HANA-Datenbankinstanz, benötigt.
  • SAP HANA Tools liefern Editoren, Views und Wizards zur Programmierung von SAP-HANA-Anwendungen.

Die anderen Erweiterungen aus dem Eclipse Repository sind optional.

Abb. 4: Verbinden der Cloud-basierten In-Memory-Datenbankinstanz in Eclipse

Abb. 4: Verbinden der Cloud-basierten In-Memory-Datenbankinstanz in Eclipse

Nach der Installation der Plug-ins steht im Eclipse die SAP-HANA-Development-Perspektive zur Verfügung, aus der alle Aufgaben zur Entwicklung einer Anwendung umgesetzt werden. In einem ersten Schritt wird die Verbindung zu der SAP-HANA-Instanz aufgebaut, indem über die rechte Maustaste im Systems Tab der Menüeintrag Add Cloud System… ausgewählt wird (Abb. 4). Der nachfolgende Wizard erfordert die Eingabe der HCP-Accountinformationen. Wichtig ist die Anpassung des Landscape-host-Parameters auf den Wert hanatrial.ondemand.com, um die kostenfreie Testlandschaft zu nutzen.

Nach Eingabe des Accountnamens (z. B. p123trial), wie auch im Cloud Cockpit angezeigt, und des HCP-Nutzernamens und Passworts (mit dem die Anmeldung am Cloud Cockpit erfolgt), wird die SAP-HANA-Instanz dev ausgewählt. Ist die Verbindung zu der Datenbankinstanz erfolgreich, sind alle Informationen und Interaktionen mit der Datenbank im Systems-Tab möglich. Gruppiert in unterschiedliche Datenbankschemata, werden Datenbankobjekte wie z. B. Tabellen im Catalog Ordner aufgelistet. Beispieldaten stehen im Schema EPMSAMPLEDATA bereit. Der Content Ordner zeigt den Inhalt des SAP HANA Repositories mit den jeweiligen Paketstrukturen. Im Kontext der SAP-HANA-Cloud-Platform-Trial-Landschaft ist das Datenbankschema mit dem Präfix NEO_ für die Definition eigener Objekte wie Tabellen, gespeicherte Prozeduren etc. vorgesehen (Abb. 5).

Abb. 5: Im Systems Tab erfolgt die Interaktion mit der SAP-HANA-In-Memory-Datenbank. Neben den Datenbankschemata kann mit dem Content Repository gearbeitet werden

Abb. 5: Im Systems Tab erfolgt die Interaktion mit der SAP-HANA-In-Memory-Datenbank. Neben den Datenbankschemata kann mit dem Content Repository gearbeitet werden

Hilfe mit SAP HANA Answers
Das SAP-HANA-Answers-Tool liefert Tipps und Hilfestellung bei der Programmierung von SAP-HANA-Anwendungen. Es kann als Webapplikation und Eclipse-Plug-in verwendet werden. Zur Beantwortung einer Frage wird nicht nur die offizielle SAP-HANA-Dokumentation durchsucht, sondern auch Foren und Communities aus dem SAP Community Network (SCN), der HANA Academy und SAPHANA.com. Das Eclipse-Plug-in bietet darüber hinaus den Vorteil einer kontextsensitiven Hilfe.

Auf Basis der Verbindung zu der SAP-HANA-Datenbankinstanz wird mit der Programmierung einer nativen SAP-HANA-Anwendung begonnen.

Grundgerüst einer nativen SAP-HANA-Anwendung

Um mit der Entwicklung einer nativen SAP-HANA-Anwendung zu starten, wird ein neues XS-Projekt hellohana unter dem Menüpunkt File | New Project | XS Project in Eclipse angelegt. Das Projekt wird im Projects Tab der SAP-HANA-Development-Eclipse-Perspektive angezeigt, und verwaltet alle Artefakte der Anwendung, wie z. B. JavaScript, HTML5, gespeicherte Prozeduren, Images oder die Definition des relationalen SAP-HANA-Datenbankmodells.

Beim Anlegen eines neuen XS-Projekts wird nach einem SAP HANA Content Repository gefragt, in dem der Quellcode der Anwendung verwaltet, versioniert und deployt wird (Abb. 6). Hier wird auf das Repository der zuvor verbundenen SAP-HANA-Instanz verwiesen, welches zunächst als neues Workspace Repository definiert wird. Bei der Verwendung der HCP-Trial-Landschaft ist es aus Gründen der Berechtigung wichtig, im Repository das unterste Repository Package mit dem Namen dev für die Verwaltung der eigenen Anwendung auszuwählen. Nach Anlegen des Repository Workspace werden die Inhalte auch im Repository Tab der SAP-HANA-Development-Eclipse-Perspektive angezeigt.

Zur Ausführung der Anwendung auf der SAP HANA XS Engine sind mindestens zwei Metadateien im Projekt erforderlich, die von der Laufzeitumgebung vorausgesetzt werden. Bei dem Application Descriptor (.xsapp-Datei) handelt es sich um eine leere Datei, die den Einstiegspunkt einer nativen SAP-HANA-Anwendung definiert. Die Application-Access-Datei (.xsaccess) definiert Zugriffsberechtigungen und die Art der Authentication. Der Inhalt der .xsaccess-Datei wird in der JavaScript Object Notation (JSON) formuliert. Die definierten Regeln gelten für das Package, in dem die .xsaccess-Datei liegt, sowie alle Sub-Packages innerhalb der Package-Hierarchie. Beide Dateien werden über einen entsprechenden Wizard (New | Other… | XS Application Access File und New | Other… | XS Application Descriptor) angelegt. Im Gegensatz zum Application Descriptor (.xsapp) ist die .xsaccess-Datei nicht leer:

{
  "exposed" : true
}

Diese minimale Konfiguration erlaubt einen Zugriff auf die Anwendung via HTTPS. Obwohl keine explizite Authentication-Methode definiert ist, werden alle nativen SAP-HANA-Anwendungen in der HCP über SAML authentifiziert.

Abb. 6: Anlegen eines SAP-HANA-XS-Projekts und Verknüpfung mit dem SAP HANA Repository zur Versionierung und zum Deployment der Anwendung

Abb. 6: Anlegen eines SAP-HANA-XS-Projekts und Verknüpfung mit dem SAP HANA Repository zur Versionierung und zum Deployment der Anwendung

Zur Ausführung müssen beide Descriptor-Dateien über den Eintrag Team |Activate aus dem Kontextmenü der Dateien im Content Repository deployt werden. Neben der Zugriffkontrolle auf die Anwendung über die .xsaccess-Datei ist ebenfalls der Zugriff auf die Daten in der Datenbank zu definieren, was bei SAP HANA auf einem Rollen- und Privilegienkonzept basiert. Die Anwendung soll lesend auf Beispieldaten zugreifen, die in der Tabelle SNWD_BPA_CONTACT des Schemas EPMSAMPLEDATA gespeichert sind.

Über den Menüeintrag New | Other… und die Auswahl des SAP HANA Role Wizards im Ordner SAP HANA/Database Development wird eine neue Rollendefinition mit dem Namen dataaccess.hdbrole im XS-Projekt hellohana erstellt. Die Rolle dataaccess definiert den lesenden Zugriff auf die Tabelle wie folgt:

role p123trial.dev.hellohana::dataaccess {
  catalog sql object "EPMSAMPLEDATA"."SNWD_BPA_CONTACT": SELECT;
}

Wichtig ist die Anpassung des Accountnamens (hier im Beispiel: p123trial) und die Beachtung des Rollennamens, der dem vollqualifizierten Pfad der Datei im Content Repository entsprechen muss (hier im Beispiel: p123trial.dev.hellohana). Nach erfolgreicher Aktivierung der Rollendefinition muss die Rolle dem HCP-Account per SQL-Befehl zugewiesen werden. Aus dem Kontextmenü der Instanz im Systems-Tab wird eine SQL-Konsole geöffnet und folgender Befehl ausgeführt:

call 
"HCP"."HCP_GRANT_ROLE_TO_USER"('p123trial.dev.hellohana::dataaccess','p123')

Dieses Grundgerüst einer nativen SAP-HANA-Anwendung wird so ausgebaut, dass SAP HANA Features wie z. B. die Predictive Analysis, Text Analysis oder die Echtzeitanalyse transaktionaler Daten verwendet werden, um die Ergebnisse in einer HTML5-basierten, geräteunabhängigen Oberfläche zu präsentieren. Eine wesentliche Rolle bei der Programmierung der Anwendung spielt dabei serverseitiges JavaScript.

JavaScript

JavaScript übernimmt bei der Programmierung nativer SAP-HANA-Anwendungen die Rolle des Dirigenten. Mittels serverseitigem JavaScript (Dateien mit der Endung .xsjs) werden SAP-HANA-JavaScript-APIs genutzt, um Daten zu ändern, einzufügen oder an autorisierte HTTP-Clients wie z. B. einen Webbrowser weiterzugeben.

Allgemein erlauben die APIs eine direkte Interaktion mit der SAP-HANA-XS-Laufzeitumgebung, mit den Datenbankfunktionen (inklusive Dat-Mining, Textanalyse etc.) und externen HTTP-Services wie z. B. des Twitter REST API. Wie alle anderen Artefakte einer nativen SAP-HANA-Anwendung auch, werden JavaScript-Programme im Content Repository gespeichert und darüber für die Ausführung aktiviert.

Listing 1 zeigt die Datei hello.xsjs, die über das Datenbank-API auf eine Tabelle SNWD_BPA_CONTACT im Schema EPMSAMPLEDATA zugreift, und die ersten zehn Namen als Resultat im Browser anzeigt.

Listing 1

$.response.contentType = "text/html";
var output = "Hello, " + $.session.getUsername() + "<br>"br>";
var conn = $.db.getConnection();
var pstmt = conn.prepareStatement( "SELECT TOP 10 LAST_NAME FROM EPMSAMPLEDATA.SNWD_BPA_CONTACT");
var rs = pstmt.executeQuery();
if (!rs.next()) {
  $.response.setBody( "Failed to retrieve data" );
  $.response.status = $.net.http.INTERNAL_SERVER_ERROR;
}
else { 
  output = output + "This is the response from your SQL statement:<br>";
  while(rs.next()) {
    output = output + rs.getString(1) + "<br>";
  }
}
rs.close();
pstmt.close();
conn.close();
$.response.setBody(output);

Mit erfolgreicher Aktivierung der Datei hello.xsjs kann diese per Rechtklick aus dem Kontextmenü über Run As | XS Service direkt auf HANA ausgeführt werden. Nach der Authentifizierung mit dem HCP-Nutzer wird das Ergebnis des xsjs-Skripts angezeigt. Damit ist eine erste native SAP-HANA-Anwendung fertiggestellt, die im zweiten Teil der Artikelserie mit weiteren In-Memory-Features der Plattform ergänzt wird.

Fazit

Neben der Rechenleistung von SAP HANA, die eine direkte analytische Auswertung von transaktionalen Daten in Echtzeit erlaubt, machen die integrierten Features eine Entwicklung von Anwendungen auf Basis der In-Memory-Plattform interessant. Dabei stellen die SAP HANA Extended Application Services eine Entwicklungs- und Laufzeitumgebung für Anwendungen bereit, die direkt auf SAP HANA ausgeführt werden.

Durch die Bereitstellung von Eclipse-Plug-ins und der Nutzungsmöglichkeit eines kostenfreien Trial-Accounts in der Cloud kann in wenigen Schritten eine Umgebung zum Sammeln erster Erfahrungen mit der Programmierung für SAP HANA aufgebaut werden.

Im nächsten Teil der Artikelserie (erscheint morgen auf entwickler.de) wird das vorgestellte Grundgerüst der nativen SAP-HANA-Anwendung weiter ausgebaut. Neben der analytischen Modellierung für Echtzeitauswertungen wird die Verwendung einiger Funktionskomponenten und deren Anbindung über RESTful Services vorgestellt.

Lesen Sie weiter: Teil 2 von SAP-HANA – In wenigen Schritten zur ersten Anwendung

Aufmacherbild: Four smiley fingers on a blackboard saying hello in English, French, Chinese and Spanish. von Shutterstock / Urheberrecht: Lemon Tree Images

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -