In-Memory Computing mit SAP HANA – Big Data

Motivation

Die Menge an angesammelten Daten wird immer größer. Es ist für Unternehmen schwierig, sich die notwendigen Informationen aus den strukturierten, unstrukturierten und semi-strukturierten Daten zu extrahieren.

Deshalb treffen ungefähr 33 % der Führungskräfte Entscheidungen ohne eine fundierte Informationsgrundlage. 83 % der CIOs erkennen Business Intelligence und Datenanalysen als Bestandteile zur Steigerung der Wettbewerbsfähigkeit. Die Menschen generieren täglich 2,5 * 1018 Byte Daten. Mehr als 90 % dieser Datenmenge wurde in den letzten zwei Jahren erzeugt. Der Bedarf an Analyse-Lösungen wird immer größer(vgl. S. 30, 35 Berg2013).

Deshalb wächst die In-Memory-Technologie aus einer Nischenexistenz zu einer dringend benötigten Lösung für Echtzeitdaten, um schnell auf Veränderungen reagieren zu können und den Gewinn von Unternehmen zu steigern(vgl. Newswire2017). SAP HANA gilt als Wegbereiter für Big-Data-Lösungen und als Möglichkeit, diese Anforderungen umzusetzen.

Zalando SE ist Europas führender Online-Modehändler und wächst stetig seit der Gründung im Jahre 2008. 2016 musste das Unternehmen in Echtzeit 660 Millionen Dokumente verwalten(vgl. SAP2017)und 69,2 Millionen Bestellungen entgegen nehmen. Heutzutage muss die Online-Plattform mit mehr als 200 Millionen Benutzer im Monat zurecht kommen. Aufgrund der riesigen zu bewältigenden Datenmengen hat sich der Online-Modehändler im Jahr 2016 dazu entschieden, SAP HANA als Kern der Smart-Data-Strategie einzusetzen.

Durch diesen Wechsel wurde der Mahnprozess um das 40-fache beschleunigt. Pro Rechnungsbearbeitung konnte man eine Zeitersparnis um 25 % erzielen(vgl. Zalando2016, Zalando2017). Durch diese Umstellungen wurde unter anderem die Verarbeitungskapazität gesteigert, die Monatsabschlüsse schneller abgearbeitet, Laufzeitprobleme beseitigt und Kunden- und Mitarbeiterzufriedenheit gesteigert(vgl.SAP2017).

Im März 2016 veröffentlichte die Société Générale ihren Bericht über die Positionierung des Unternehmens SAP SE in dem strategischen Datenbankmarkt. Die In-Memory Datenbank SAP HANA ist für das Unternehmen von großer Bedeutung, da man damit den Markt dominieren kann. SAP SE betrachtet SAP HANA als ihr bisher wertvollstes Produkt. Der Unternehmenserfolg hängt stark von dem Erfolg des Produktes ab(vgl. S. 1 Preuss2017).

Außerdem liefert Google Trends bei dem Suchbegriff SAP HANA die Erkenntnis, dass diese Technologie stetig an Beliebtheit gewonnen hat. Dabei wurden die beiden In-Memory-Datenbanken SAP HANA und Oracle 12C verglichen. Der rote Verlauf stellt die Suchanfragen für SAP HANA dar und der blaue Verlauf zeigt die Suchanfragen für Oracle 12C. Dabei fällt auf, dass beide Technologien ähnlichen Schwankungen ausgesetzt sind und SAP HANA über den gesamten Zeitraum hinweg öfters in Google gesucht wurde.

Die Abbildung belegt diesen Sachverhalt und demonstriert eindrucksvoll, dass SAP HANA derzeit sehr im Trend ist.

Google Trends als Vergleich von SAP HANA und Oracle 12C
Google Trend SAP HANA (blau) und Oracle 12c (rot) – 01.01.2010 – 19.08.2020

Dieser umfangreiche Artikel bietet dem Leser einen allgemeinen Überblick über die In-Memory Datenbank SAP HANA.

Dazu werden dem Leser zunächst in Kapitel Theoretische Grundlagen die wichtigsten Grundlagen über moderne relationale Datenbankmanagementsysteme, die Funktionsweise von SAP HANA, die In-Memory Technologie und typische Einsatzmöglichkeiten der Datenbank erläutert. Daraufhin folgt die Beschreibung einer praktischen Java-EE-Anwendung, welche anhand von zahlreichen Screenshots belegt wird. Zudem wird die Datenbankprogrammierung auf der SAP HANA Datenbank kurz erläutert. Abschließend wird der Artikel kurz zusammengefasst und die Funktionsweise und Bedienungsfreundlichkeit von SAP HANA anhand der eigenen Erfahrungen bewertet.

Theoretische Grundlagen

Grundlagen moderner RDBMS

Die Besonderheit bei modernen relationalen Datenbanksystemen (RDBMS) liegt in der Art, Daten physisch zu speichern. Traditionelle RDMBS versuchen, alle Attribute eines Tupels nah beieinander auf einer Seite der Festplatte unterzubringen und greifen häufig auf jedes Detail und somit jede Zeile einer Tabelle zu, um Transaktionen durchzuführen. Diese gespeicherte Beziehung wird als zeilenorientierte Organisation bezeichnet, da die Tupel nahe beieinander liegen. Analytische Systeme benötigen in der Regel nicht alle Attribute eines einzelnen Tupels, sondern nur einzelne.

Die Analyse von Daten, die über mehrere Seiten verteilt sind nimmt mehr Zeit in Anspruch, da das RDBMS auf alle diese Seiten zugreifen muss. Deshalb gehen analytische RDBMS einen ganz anderen Weg, um Rechenzeit zu sparen. Sie speichern die Attribute eines Tupels nicht auf einer einzigen Seite. Stattdessen werden die Daten eines Attributs neben oder sehr nahe zueinander physisch gespeichert. Diese Methode wird als spaltenorientierte Organisation bezeichnet. Spaltenbasierte Beziehungen können auch komprimiert werden, um Speicherplatz zu sparen.

Die benachbarte Speicherung von Daten aus einer einzigen Tabellenzeile ermöglicht die Optimierung der Speichernutzung durch verschiedene Kompressionsalgorithmen. Der Vorteil dieser Organisation liegt in der schnelleren Analyse- und Ausleserate. Im Gegenzug ist das Schreiben von Werten rechenintensiver(vgl. S. 22f. Newswire2017).

Das Hasso-Plattner-Institut hat in Untersuchungen festgestellt, dass nur 40 % der Spalten genutzt werden. Des Weiteren dominieren in vielen Spalten NULL beziehungsweise Default-Werte. Außerdem ist in diesem Bericht beschrieben, dass nur 20 % der Interaktionen Einfüge-, Änderungs- oder Löschbefehle auf den Datenbanken ausgeführt werden. 80 % der Interaktionen hat das Ziel, Daten aus der Datenbank auszulesen und dem Benutzer anzeigen zu lassen. Diese Kennzahlen sprechen für die Verwendung der spaltenorientierten Organisation anstatt der zeilenorientierten Organisation.

Die beiden Arten der Speicherung werden in Kapitel Beispiel Spaltenorientierung beispielhaft erläutert.

Anwendungen in relationalen Datenbankmanagementsystemen sind in verschiedenen Systemen eines Unternehmens vertreten. Beispielsweise unterstützen ERP-Systeme und andere Systeme, die mit transaktionalen Geschäftsmodellen zusammenhängen, die operativen Prozesse in den wesentlichen Funktionsbereichen eines Unternehmens.

Sie sind nach wie vor die bevorzugte Methode wegen ihrer bewährten Stabilität und Fehlertoleranz im Vergleich zu NoSQL und nicht-relationalen DBMS. 

Zudem ist die Abfrage relationaler Daten über SQL im Vergleich zu anderen Schnittstellen relativ flexibel, da nahezu alle Arten von Abfragen unabhängig von der Persistenzschicht möglich sind.

Beispiel Spaltenorientierung

Im Folgenden werden die spalten- und zeilenorientierten Speicherungen in einem Beispiel näher erläutert. Beispielsweise haben wir eine Relation mit drei Spalten und acht Tupeln, welche Informationen zu Personen speichern.

IDNameAlter
1Maier22
2Schmitt18
3Müller56
4Schmidt42
5Winter78
6Maier53
7Mayr27
8Maier19
Zeilenorientierte Speicherung

Die Tabelle stellt die Daten zeilenorientiert dar und gibt es beispielsweise einen Eintrag für die Person mit der ID 1, dem Namen Maier und dem Alter 22. Der Datensatz lässt sich kaum noch reduzieren. Betrachtet man den gleichen Datensatz aus der spaltenorientierten Organisation, kann man eine Datenredundanz erkennen.

Die doppelt vorkommenden Daten können also komprimiert werden. Beispielsweise kommt der Name Maier drei mal vor. Außerdem werden bei Analysen der Datensätze weniger physische Datenblöcke benötigt. Möchte man beispielsweise das Durchschnittsalter der Personen ermitteln, so muss man lediglich den Block mit den Altersangaben analysieren, anstatt wie bei der zeilenorientierten Organisation alle acht Blöcke. 

12345678
MaierSchmittMüllerSchmidtWinterMaierMayrMaier
2218564278532719
Spaltenorientierte Speicherung

In-Memory Computing

Die Menge an gespeicherten und verarbeiteten Daten steigt stetig an. Deshalb steigen die Anforderungen an traditionelle relationale Datenbank-Managementsysteme. 

Nicht selten werden die Leistungsgrenzen erreicht. Aufgrund dieser Anforderung wurden Entwicklungen vorangetrieben, die komplexe Abfragen, Analysen und Aggregationen von sehr großen Datenmengen deutlich skalierbarer und schneller erledigen.

Das Ergebnis dieser Entwicklungen ist die In-Memory-Technologie. Dabei werden Daten im Hauptspeicher, im sogenannten Dynamic Random Access Memory (DRAM), anstatt auf elektromagnetischen Festplatten gehalten und gespeichert. 

Das positive Resultat sind schnellere Antwortzeiten und Auswertungen durch den Prozessor. Durch den Wegfall des Festplattenzugriffs verkürzt sich die Datenzugriffszeit bis auf das 100.000te(vgl. S. 63ff. Preuss2017). Diese Begründung wird in der folgenden Tabelle näher dargestellt.

Speicherkomponenten in der SystemarchitekturZugriffszeit
Zugriff auf CPU L1-/L2-/l3 Cache0,5 / 7,0 / 15 ns
Zugriff auf Hauptarbeitsspeicher100 ns
Zugriff auf Solid-State-Festplatte (SSD)150.000 ns
Festplattenzugriff10.000.000 ns
Zugriffszeiten der Speicherkomponenten, Quelle: Hallenbeck2013

Der Hauptspeicher in SAP HANA ist flüchtig. Das bedeutet, dass bei einem Neustart oder Stromausfall alle darin enthaltene Daten verloren gehen. Um dies entgegen zu wirken, gibt es eine Persistenzschicht, die die Daten periodisch in sogenannte Savepoints dauerhaft sichert. Die Standardfrequenz dieser Savepoints ist auf fünf Minuten eingestellt und kann je nach Anforderung geändert werden.

Daten und Protokolle eines Systems werden in Log-Volumes gespeichert. Data-Volumes speichern SQL-Daten, Undo-Log-Informationen und SAP-HANA-Informationsmodellierungsdaten. Bei einem Systemneustart oder Stromausfall können Daten des letzten erfolgreich gespeicherten Savepoints gelesen und durch  Redo-Log-Einträge  rekonstruiert werden. Dieses Vorgehen nennt man Desaster Recovery, also die Fähigkeit eines Systems, sich in einer extremen Situation, wie beispielsweise einem Stromausfall, eigenständig zu rekonstruieren(vgl. S. 26f. Berg2013).

Die Idee der In-Memory-Technologie ist jedoch nicht neu. Bereits 1984 hatte man die Vorstellung, Daten im Hauptspeicher zu halten. Seitdem wurde die In-Memory-Technologie stetig weiterentwickelt. Bedingt durch die sinkenden Preise für Hauptspeicher und weitere notwendige Hardware-Komponenten, wie beispielsweise der CPU, ist diese Option realistisch geworden(vgl. S. 4ff. DeWitt1984).

SAP HANA

SAP HANA ist ein Begriff, welcher sowohl für eine In-Memory Datenbank als auch für eine Entwicklungsplattform verwendet wird. Meistens verwendet man den Begriff SAP HANA synonym für diese beiden Technologien. Um diese Verwirrung zu beseitigen, wurde die Entwicklungsplattform 2017 von SAP HANA Cloud Platform auf SAP Cloud Platform unbenannt(vgl. Buchholz2017).

Die SAP Cloud Platform ist eine platform-as-a-service (PaaS), die In-Memory-Funktionen, zentrale Plattform-Services und  Business-Services für den Aufbau und die Erweiterung personalisierter, kollaborativer und mobiler Cloud-Anwendungen zur Verfügung stellt. Die SAP Cloud Platform bietet dem Kunden bereits eine nutzbare Infrastruktur, um beispielsweise Java- oder SAPUI5 Anwendungen zu entwickeln. Darunter werden eine Entwicklungsumgebung, skalierbare SAP HANA Datenbanken oder Sicherheitsmechanismen zur Verfügung gestellt, die der Kunde nutzen kann. Basierend auf offenen Standards bietet die SAP Cloud Platform  Flexibilität und Kontrolle über die Auswahl an Clouds, Frameworks und Anwendungen(vgl. SAP2018).

Überblick SAP Cloud Platform
Überblick SAP Cloud Platform

Diese Abbildung zeigt die Benutzeroberfläche der Neo Trial Funktionalitäten in dem angemeldeten Account. Die Neo Trial wird von der Cloud Foundry langfristig abgelöst.

Der Fokus dieses Artikels wird auf die SAP HANA Datenbank gesetzt. Dabei wird der Arbeitsspeicher als Datenspeicher genutzt und ermöglicht hohe Transaktionsraten. Es können bis zu 500 Milliarden Datensätze innerhalb von einer Sekunde durchsucht werden. 

Diese Performance ist von großer Bedeutung, um die heutzutage anfallenden Massen an Daten bewältigen zu können(vgl. S. 74 Konstantinidis2012).

Außerdem unterstützt SAP HANA die Entwicklung von SAP und Nicht-SAP Anwendungen. Deshalb wird in der Literatur oft erwähnt, dass SAP HANA eine Anwendungsplattform enthält. Dabei kommt die Technologie SAP HANA Extended Application Services, Advanced Model oder auch SAP HANA XSA genannt zum Einsatz. Dabei wird im SAP HANA-System ein leichtgewichtiger Anwendungsserver mit ausgeliefert, welcher die Verknüpfung zwischen der Anwendung und den Daten erleichtert. Dabei werden die Programmiersprachen Node.js, Java und C++ unter anderem unterstützt(vgl. S. 107f. Berg2017)

Die Veröffentlichung von SAP HANA fand im Jahr 2013 statt(vgl. S. 2 Preuss2017). Die Abkürzung HANA steht dabei für High Performance Analytic Appliance. Das bedeutet übersetzt Hochleistungsanalyseanwendung, also eine  Analyseanwendung, die mit hoher Performance arbeitet. 

In diesem Zusammenhang bedeutet Appliance, dass SAP HANA aus einer Kombination aus Software und Hardware besteht. SAP HANA ist in verschiedensten Bereichen und Branchen einsetzbar. So wird SAP HANA zum Beispiel in den Branchen Handel, in der Telekommunikation, aber auch zur Betrugsbekämpfung eingesetzt. In diesem Zusammenhang modelliert SAP HANA Prognosen im Betrugsmanagement. Durch gezielte Analysen können somit gesetzwidrige Verstöße erkannt werden(vgl. S. 134] Preuss2017). Die Einsatzmöglichkeiten mit technischen Erläuterungen sind in Kapitel Einsatzmöglichkeiten zu finden.

SAP HANA unterstützt Online-Transaction-Processing (OLTP), durch die SQL- und ACID-Kompatibilität, und Online Analytical Processing (OLAP), durch die Nutzung der In-Memory-Technologie und die spaltenorientierte Organisation. 

Der Anwender kann den Speichertyp der Tabelle je nach Verwendungszweck angeben. 

SAP HANA nutzt moderne Prozessoren. Durch Befehlssätze wie Streaming-SIMD (Single Instruction Multiple Data), Multi-Core-CPUs und Multi-Threaded-CPU-Cores wird die Rechengeschwindigkeit erhöht. Dadurch werden Berechnungen parallel durchgeführt. Um die Nutzung von mehreren Benutzern gleichzeitig zu gewährleisten, wird eine MVCC-Technologie eingesetzt. Das ist eine nicht blockierende Form der Gleichzeitigkeitskontrolle. Normalerweise lösen mehrere Benutzer mehrere Transaktionen zeitgleich aus. Damit die Konsistenz gemäß dem ACID-Standard erfüllt wird, muss das Ergebnis der ausgeführten Transaktionen dem gleichen Ergebnis entsprechen, als ob sie in einer seriellen Reihenfolge, also hintereinander, ausgeführt werden(vgl. S. 22f. Preuss2017).

SAP HANA deckt nicht nur den SQL-Standard ab, sondern bietet auch eigene Erweiterungen über den Standard hinaus, wie SQLScript, Multidimensional Expressions (MDX) und virtuelle analytische Ansichten. Die eingebaute Predictive Analysis Library (PAL) bietet Algorithmen für Predictive Analytics und ermöglicht es, Zusammenhänge in historischen Daten zu finden, erweiterte Prognosen zu erstellen oder Trends zu identifizieren. Die notwendigen analytischen Abfragen erfolgen direkt in SAP HANA.

Anstatt die Daten über einen ETL-Prozess (Extract, Transform, Load) in ein analytisches Data Warehouse zu exportieren, kann nun eine komplexe Analyse in Echtzeit direkt in SAP HANA durchgeführt werden. Das ermöglicht eine Einsparung der Kosten für den Betrieb eines zusätzlichen Data Warehouses(vgl. S. 22 Preuss2017). Beispiele der internen Analysen durch SAP HANA werden im Kapitel Praktische Implementierung aufgezeigt.

Potentielle Käufer wählen zwischen zwei Betriebsmodellen. Die eine Variante stellt das SAP HANA als on-premise dar. Bei diesem Modell wird SAP HANA vom Unternehmen komplett selbst betrieben und administrativ verwaltet. Als zweite Möglichkeit bietet sich dem Käufer die Cloud Plattform. Sie wird extern betrieben und gewartet. Das bedeutet, dass das Unternehmen die Infrastruktur nicht selbstständig einrichten und verwalten muss, sondern erhält direkten Zugriff auf die Cloud. Dadurch werden SAP HANA sowie entsprechende Anwendungen über das Internet genutzt.

Komponenten von SAP HANA

In-Memory-Computing-Engine

Die Datenspeicherung und der Datenzugriff wird von der In-Memory-Computing-Engine verwaltet, welche aus mehreren Komponenten besteht. Diese werden als ein internes Bündel zusammengestellt, um die Installation und Verwaltung von SAP HANA zu erleichtern.

Komponenten SAP HANA
Komponenten SAP HANA

Um mit der SAP-HANA-Datenbank arbeiten zu können, muss der Benutzer eine Anwendung seiner Wahl verwenden. Der Session Manager erstellt und verwaltet diese Sitzungen für die Datenbank-Clients. SQL-Anweisungen werden zur Kommunikation mit der HANA-Datenbank verwendet.

Datensicherheit ist ein kritischer Aspekt in jedem Unternehmen. Nur entsprechend berechtigte Mitarbeiter sollten in der Lage sein, Zugriff auf vertrauliche Daten zu bekommen. Außerdem sollen unbefugte Personen, Metadaten oder Daten in der SAP HANA Datenbank nicht hinzufügen oder ändern können.

Der Autorisierungsmanager stellt sicher, dass diese Datensicherheit auf der Grundlage der Benutzerrollen und Berechtigungen durchgesetzt wird.

Der Begriff Metadaten steht für Daten über Daten. Dazu gehören unter anderem Informationen über Tabellenstrukturen, Viewstrukturen, Datentypen oder Feldbeschreibungen. Alle diese Metadaten werden vom Metadaten-Manager gespeichert und gepflegt.

Der Replikationsserver ist für die Replikation der Tabellendaten und Metadaten (Struktur) aus dem Quellsystem verantwortlich.

Der Transaktionsmanager verwaltet Datenbanktransaktionen und verfolgt laufende und abgeschlossene Transaktionen. Er koordiniert mit den anderen Engines auf Datenbank-Commits und ROLLBACKs. Dadurch werden gemäß dem ACID Ansatz Daten konsistent gespeichert, geändert oder gelöscht.

Die Auftragsbearbeitung und Ausführungssteuerung ist ein wichtiger Block von Komponenten, der die Anfrage von Anwendungen und Clients entgegennimmt und an den richtigen Unterblock zur weiteren Verarbeitung weiterleitet. Im Folgenden werden die Unterblöcke beschrieben.

SQL-Anfragen werden vom SQL Parser verarbeitet. 

Jede Art von Dateneingabe, -aktualisierung und -löschung wird von diesem Prozessor durchgeführt.

SQLScript symbolisiert die interne Sprache der SAP HANA Datenbank und optimiert so den Betrieb durch parallele Verarbeitung von Queries. Zusätzlich können individuelle Geschäftsregeln in Form der Geschäftslogik direkt in die Datenbank programmiert werden.

MDX-Sprache wird verwendet, um mehrdimensionale OLAP-Würfel zu manipulieren und abzufragen. Die mehrdimensionalen Ausdrücke erlauben es, Funktionalitäten zu nutzen, die über den zweidimensionalen Ansatz hinausgehen.

Für die Visualisierung und damit den Zugriff der Daten in Frontend-Werkzeugen stehen vier Komponenten zu Verfügung. Nach der Erstverarbeitung aus SQLScript, MDX und Planning Engine werden die Datenmodelle in Berechnungsmodelle konvertiert, die einen optimalen, parallelverarbeitungsfähigen logischen Ausführungsplan erstellen. Diese Berechnungen werden von der Kalkulations-Engine durchgeführt. Diese Eigenschaft kann positiv bei der Anwendungsentwicklung genutzt werden. 

Während bei klassischen Datenbanken die Entwicklung und die Berechnung von rechenintensiven Kalkulationen in der Applikationsschicht durchgeführt wurden, können diese Kalkulationen bei SAP HANA in die Datenbankschicht verlagert werden. Dieser sogenannte “Code Pushdown” reduziert somit die Geschwindigkeitseinbußen, die bei klassischen Datenbanken für die Übertragung großer Datenmengen zwischen Datenbank und Applikationsserver in Kauf genommen werden müssen.

Die relationale Engine besteht aus einem zeilenbasierten Speicher und einem spaltenbasierten Speicher. Wie bereits in Grundlagen moderner RDBMS beschrieben ist die spaltenbasierte Organisation exklusiv für In-Memory-Datenbanken für schnellere Abfragen von Daten. Die zeilenorientierte Speicherung von Daten ist eine serielle Art, Daten zu organisieren.

Die Spaltenorganisation wird sowohl von dem zu implementierenden Inhalt als auch von dem verwendeten System bestimmt. Alle Systeme verwenden meistens eine Kombination aus den beiden Speicherorganisationen. Der Benutzer kann die Speicherorganisation selber wählen, wenn er den Datensatz selbstständig erstellt.

Außerdem sorgen gespeicherte Savepoints auf einem nicht-flüchtigem Speicher und Log-Einträge für eine Rekonstruktion der Daten bei einem Systemneustart oder Stromausfall. Näheres dazu ist in Abschnitt In-Memory Computing beschrieben.

Softwarespezifikationen

Zum Zeitpunkt vom Januar 2018 gibt es drei verschiedene Editionen von SAP HANA:

  • Standard Edtition
  • Enterprise Edition
  • Express Edition

Die SAP HANA Standard Edition umfasst die Kerndatenbank, Integrations- und Anwendungsservices, Seriendaten sowie eine Reihe von Komponenten, die eine zusätzliche Installation erfordern. Einige Komponenten erfordern den Einsatz des SAP HANA Database Lifecycle Management Tools hdblcm (Platform Lifecycle Management). Andere Tools sind bei der Installation von SAP HANA mit dabei. Für Details zu den einzelnen Tools wird auf die zitierte Quelle verwiesen, da die Erläuterungen sonst den Rahmen dieses Artikels übersteigen(vgl. Kempen2018).

Die SAP HANA Enterprise Edition enthält die in der Standard Edition enthaltenen Komponenten sowie zusätzlich folgende Tools zu folgenden Themen:

  • Graphen
  • Datensicherheit
  • Textanalyse

Dadurch ist es unter anderem möglich, durch eine Benutzeroberfläche Zusammenhänge in Form von Graphen darzustellen und deren Beziehungen zu analysieren. Außerdem kann man durch eine Bibliothek Datenbankabfragen nutzen, um Muster in einem Text  zu analysieren. 

Für Details zu den einzelnen Tools wird erneut auf die zitierte Quelle verwiesen(vgl. Kempen2018).

Die SAP HANA Express Edition ist eine Einsteigerversion von SAP HANA, die auf Laptops und anderen ressourcenbeschränkten Hosts wie beispielsweise einer virtuellen Maschine mit Cloud-Hosting ausgeführt werden kann und bis zu 32 GB an  Speicherplatz einspart. Diese optimierte Version von SAP HANA kann heruntergeladen werden und entweder als binäres Installationspaket für unterstützte

Linux Intel-Systeme oder als virtuelle Maschine auf einem beliebigen Betriebssystem eingerichtet werden. Die meisten Funktionalitäten, welche in der Standardversion enthalten sind, können genutzt werden(vgl. SAP2016, SAP2017_2).

Einsatzmöglichkeiten

Die drei wichtigsten Implementierungsoptionen von SAP HANA sind:

  • SAP S/4HANA
  • SAP Vora
  • SAP BW/4HANA

Von einer Statistik von RAAD Research im Jahr 2011 wurde berichtet, dass ungefähr 67 % der SAP-Plattformen in der Persistenzschicht eine Oracle Datenbank verwenden. Die Datenbanken DB2, MS-SQLServer und MaxDB kommen auf einen Anteil von jeweils ungefähr 12 %(vgl. RAAD2011).

Durch die Entwicklung der eigenen Datenbank SAP HANA hat sich diese Statistik deutlich geändert. Die Peristenzschicht von allen SAP-Plattformen wurde durch die SAP HANA Datenbank umgesetzt. Vor allem die on-premise S/4HANA Business Suite ist nur noch mit der SAP HANA einsatzfähig. Das schafft für das Unternehmen SAP SE Unabhängigkeit und einen höheren Umsatz(vgl. Silvey2016).

SAP S/4HANA

SAP S/4HANA ist die Business Suite, welche auf der technologischen Basis von SAP ERP aufsetzt. Die Persistenzschicht wird durch SAP HANA implementiert. Eine Suite ist eine integrierte Geschäftssoftware deren Komponenten die betrieblichen Leistungsprozesse eines ERP-Kernsystems und die Kommunikation und Koordination unterstützt. Es deckt nicht nur die internen Prozesse ab sondern auch die Prozesse zu den Kunden und Lieferanten(vgl. S. 16 – 20 Schneider2017).

Dabei gibt es die Möglichkeit für einen on-premise-Einsatz, einer Version für die Nutzung in der Cloud oder einer hybriden  Lösung als Kombination aus beiden Möglichkeiten. Generell funktioniert die Bedienung über die UI-Technologie SAP Fiori. Dabei unterstützt S/4 HANA im Standard zehn Geschäftsfeldern und 25 Branchen.

Die wichtigsten Geschäftsfelder sind unter anderem: 

  • SAP S/4HANA Finance
  • SAP S/4HANA Human Recources
  • SAP S/4HANA Sourcing and Procurement
  • SAP S/4HANA Supply Chain
  • SAP S/4HANA Manufacturing
  • SAP S/4HANA Research and Development (R&D)
  • SAP S/4HANA Asset Management
  • SAP S/4HANA Sales
  • SAP S/4HANA Marketing and Commerce
  • SAP S/4HANA Customer Service

Damit deckt der Funktionsumfang von SAP S/4HANA die wichtigsten Kernbereiche eines Unternehmens ab und unterstützt in den wichtigsten operativen Prozessen(vgl. SAP2016_2).

SAP Vora

SAP Vora ist eine In-Memory, verteilte, abfrageverarbeitende Engine. Sie wurde als Big Data-Lösung entwickelt und erweitert das Apache Spark-Framework, um eine erweiterte interaktive Analyse der in Hadoop gespeicherten Daten zu ermöglichen. SAP Vora bietet einen Drill-Down-Einblick in die Rohdaten, mit dem Unternehmens- und Hadoop-Daten für Echtzeit-Business-Anwendungen und -Analysen genutzt werden können.

Außerdem können eingehende Daten von Kunden, Partnern und intelligenten Geräten in Unternehmensprozesse integriert werden, indem Geschäftsdaten mit externen Datenquellen kombiniert werden, um bessere Entscheidungen durch einen größeren Kontext zu treffen.

Als Quelle für dieses Kapitel werden die Informationen aus dem openSAP Kurs “Big Data with SAP Vora – Engines and Tools” verwendet(vgl. Hinsperger2016). Um die theoretischen Hintergründe zu testen, wurde eine on-premise Installation in einer eingerichteten virtuellen Maschine vorgenommen, worauf der Server von SAP Vora arbeitet. Die Anmeldemaske kann in folgender Abbildung erkannt werden.

SAP Vora VM
SAP Vora VM

Zugang zum SAP Vora Server erhält man durch einen HTTP-Zugang. Im Folgenden werden Abbildungen aufgezeigt, die die wichtigen Tools von SAP Vora aufzeigen:

  • Data Browser
  • Modeler
  • SQL Editor

Mit Hilfe des SQL Editors kann man die gewünschten SQL-Anweisungen eingeben und ausführen lassen. Dabei kann man beispielsweise Tabellen erstellen, diese mit Daten füllen, verändern, analysieren oder löschen.

SAP Vora SQL Editor
SAP Vora SQL Editor

Anstatt die Analyse mit SQL-Anweisungen durchzuführen, kann man den Modeler benutzen. Dieser ist eine webbasierte Datenmodellierungsumgebung, die zur Modellierung von Daten auf Hadoop verwendet wird.

Mit Hilfe des Data Browsers kann man die gespeicherten Informationen in der Benutzeroberfläche anzeigen lassen und nach einzelnen Spalten auf- oder absteigend sortieren.

Unter anderem wird eine native Datenanalyse in Hadoop ermöglicht und vier Engines unterstützt. Auf technischer Ebene bietet Vora die Möglichkeit, Hierarchieabfragen zu erstellen, Datenkonvertierungen und viele andere SQL-Funktionen für Hadoop-Daten durchführen.

Es stellt spezialisierte Analyse-Engines zur Verfügung, um hochperformante Zugriffe auf spezifische Funktionen zu schreiben.

Insgesamt werden vier Analyse-Engines angeboten:

  • Graphenanalyse-Engine
  • Zeitreihenanalyse-Engine
  • Dokumentenanalyse-Engine
  • Relationale Engine

Die Graphenanalyse-Engine bettet eine speicherinterne Graphen-Datenbank für Echtzeit-Graphen ein. Das Hauptaugenmerk der Graphen-Engine liegt auf komplexen, schreibgeschützten analytischen Abfragen von sehr große Graphen.

Die Zeitreihenanalyse-Engine bietet eine effiziente Kompressionsanalyse für die Zeitreihen

Daten. Damit können als Beispiel Wetterdaten ausgewertet werden. Die Dokumentenanalyse-Engine  unterstützt die Abfrage von semi-strukturierten Daten im JSON-Format. Die relationale Engine bietet die Möglichkeit, spaltenorientierte Daten zu analysen. Sogenannte Daten-Mashups können dazu genutzt werden,  Daten aus verschiedenen Quellen zusammenzuführen und auszuwerten. Somit ist es beispielsweise möglich, Daten aus Spark und SAP HANA zusammen für eine Analyse zu nutzen.

Damit die Daten sicher vor potentiellen Angreifern geschützt sind, werden zahlreiche IT-sicherheitsrelevante Technologien unterstützt.

Es bietet volle Unterstützung für Kerberos-fähige Hadoop-Landschaften, unterstützt das Lesen von verschlüsselten HDFS-Zonen (Hadoop Distributed File System) und unterstützt die Verwendung von Access Control Lists (ACL) auf HDFS.

Vora Cluster Management Komponenten unterstützen auch Transport Layer Security (TLS) für eine verschlüsselte Kommunikation zwischen den verschiedenen Diensten im Vora-Cluster.

Zusätzlich bieten die Vora-Komponenten einen passwortgesteuerten Zugriff, um unbefugten Zugriff zu verhindern.

Die folgende Abbildung zeigt im Überblick die Architektur von SAP Vora und die Verbindung zwischen Spark und der SAP HANA Datenbank. 

Architektur SAP Vora mit SAP HANA, Quelle:Hinsperger2016
Architektur SAP Vora, Quelle: Hinsperger2016

Es gibt insgesamt zwei Möglichkeiten, SAP HANA mit Hadoop zu verbinden.

Einerseits kann man den Spark-Controller über die native Spark-Konnektivität nutzen. Andererseits gibt es ebenfalls die Möglichkeit, den Vora-Adapter zu verwenden, welcher direkt mit dem Vora-Transaktionskoordinator verbunden ist, der die verteilten Abfrageverarbeitungsfunktionen bereitstellt. Dadurch entstehen Performancevorteile.

Durch die Verknüpfung können die Daten virtuell über die beiden Ebenen hinweg übertragen und im Hadoop Cluster verarbeitet werden. Es erfolgt eine Referenzierung der Datenbank-Tabellen in SAP HANA in den Spark-Session-Katalog. Im Wesentlichen werden die Metadaten der Tabelle zwischen den Katalogen kopiert. Um eine SAP HANA-Tabelle in diesem Spark-Session-Katalog abzubilden, werden SQL-Anweisungen benutzt(vgl. Hinsperger2016)

SDA steht für Smart Data Access und ist eine Methode von SAP HANA für den Zugriff auf die in entfernten Datenquellen gespeicherten Daten. Mit Hilfe von SDA kann SAP HANA ein sogenanntes Virtual-Table-Mapping nutzen,  somit Tabellen in entfernten Datenquellen erstellen und direkt auf die Daten zugreifen. Die virtuelle Tabelle kann von SAP HANA wie eine normale Tabelle manipuliert werden. Das bedeutet, dass die Operationen wie beispielsweise Lesen, Aktualisieren, Einfügen und Löschen für die virtuelle Tabelle zur Verfügung stehen(vgl. Hu2014).

SAP BW/4HANA

Viele Unternehmen betreiben unterschiedliche operative Informationssysteme und müssen die darin enthaltenen Informationen abrufen, zusammenführen und entsprechend aufbereiten. Meistens ist diese einheitliche Aufbereitung sehr kostenintensiv und aufwendig. Lösung zu diesem Problem ist ein Data-Warehouse. Es stellt eine zentrale Datenbank dar, die Informationen aus heterogenen Datenquellen zusammenführt und in eine Zieldatenbank überführt(vgl. S. 280 – 284 Hansen2015).

Überblick SAP BW/4HANA, Quelle:Christ2016
Überblick SAP BW/4HANA, Quelle:Christ2016

SAP Business Warehouse (BW) ist ein Data-Warehouse, das auf SAP HANA aufsetzt. Dadurch ist es möglich, Daten aus einem SAP-System oder aus einem Nicht-SAP-System zu extrahieren und daraufhin zu analysieren. SAP BW/4HANA kann dabei on-premise, in der Cloud oder hybrid installiert und eingerichtet werden. 

Die Modellierung findet im Data-Warehouse statt. Rechenintensive Abfragen werden an die SAP HANA Datenbank delegiert und dort ausgeführt. Dieses Verfahren wird als Code Pushdown bezeichnet. Unter anderem werden die Planung der Datenverwaltung, OLAP sowie die Datenintegration und -transformation in der leistungsstarken In-Memory-Datenbank durchgeführt(vgl. Christ2016)

Praktische Implementierung

In den folgenden Kapiteln werden jeweils praktische Anwendungsszenarien für die SAP HANA Datenbank vorgestellt. Damit diese umgesetzt werden können, ist es notwendig, auf eine SAP HANA Datenbank zuzugreifen.

Hierfür stellt die SAP SE eine kostenfreie Version der SAP Cloud Platform, speziell die Neo Trial, zur Verfügung, mit der unbegrenzt einzelne Funktionalitäten der SAP Cloud Platform benutzt werden können. Unter dem Menüpunkt Databases & Schemas wurde die Datenbank bigdatahana angelegt.

Da es sich um eine kostenfreie Nutzung handelt, wurde die SAP HANA Datenbank als sogenannte HANA MDC Datenbank angelegt. MDC steht für Multitenant Database Architecture. Dabei werden mehrere SAP HANA Datenbanken auf einer physischen Infrastruktur erstellt und agieren dabei gleichzeitig parallel. Damit es zu keinem unerlaubten Datenzugriff kommt, werden die Datenbanken logisch voneinander isoliert(vgl. Somuncu2016).

Die praktischen Implementierungen werden mit Hilfe von SAP HANA Studio umgesetzt. SAP HANA Studio ist eine auf Eclipse-basierte, integrierte Entwicklungsumgebung. Es ermöglicht dem Benutzer, die Verwaltung von SAP HANA Datenbanken, das Anlegen und Verwalten von Benutzerberechtigungen, das Anlegen neuer oder das Ändern bestehender Datenmodelle. Vor allem wird es als Tool genutzt, um auf lokale oder entfernte SAP HANA-Systeme zuzugreifen(vgl. S. 271 – 277 Berg2013).

Es muss eine Verbindung zwischen Eclipse und dem Account der SAP Cloud Platform hergestellt werden, indem man das Cloud System in der SAP HANA Development Perspektive hinzufügt wird. Zuvor müssen die notwendigen Tools über die Installationsfunktion von Eclipse über diesen Link installiert werden. Nachdem die Datenbank bigdatahana erfolgreich eingebunden wurde, sind einzelne System-Objekte sichtbar. 

SAP HANA gruppiert die Tabellen in sogenannten Schemas. Wichtig ist bei der Installation die SAP HANA Installationspakete von Eclipse Neon zu installieren, da sonst die Funktion Add Cloud System in der SAP HANA Development Perspektive nicht zur Verfügung steht. Unter anderem ist es nun möglich, einen Benutzer anzulegen, Beispieldaten in die Datenbank zu importieren oder eine Analytic View zu erstellen.

Java-Anwendung

Es gibt zwei Möglichkeiten, eine Java-Anwendung auf der SAP Cloud Platform zu entwickeln. Entweder entwickelt man direkt auf der Plattform, indem man den zur Verfügung stehenden Service WEB IDE nutzt. Dabei handelt es sich um eine Entwicklungsumgebung, welche über den Browser bedient werden kann.

Die zweite Möglichkeit ist die Entwicklung auf einer Entwicklungsumgebung auf dem lokalen Rechner, wie beispielsweise über HANA Studio. Um die Dienste der SAP Cloud Platform zu benutzten, wird die Anwendung auf die SAP Cloud Platform veröffentlicht. Für das praktische Beispiel wurde die zweite Variation ausgewählt.

Es wird eine Java-EE-Anwendung entwickelt, welche zeigt, wie schwer oder leicht es ist, eine Anwendung aufbauend auf der SAP HANA Datenbank zu entwickeln. Die Anwendung ist so aufgebaut, dass verschiedene, zufällige Datensätze generiert werden, diese in die SAP HANA Datenbank gespeichert oder aktualisiert werden und anschließend dem Benutzer auf der Benutzeroberfläche angezeigt werden. Darunter wurden einzelne Aggregationsfunktionen genutzt. 

Klassendiagramm Java-Anwendung
Klassendiagramm Java-Anwendung

Die Anwendung besteht aus insgesamt vier Klassen. Die BigData-Klasse ist eine POJO-Klasse. Also eine einfache Klasse mit nur Gettern und Settern. Sie soll den Aufbau der Datenbanktabelle als Java-Klasse abbilden.

Die BigDataServlet-Klasse bildet den Einstiegspunkt der Applikation. Sie erbt von der HttpServlet-Klasse und nimmt deswegen Anfragen von Clients entgegen und beantwortet diese. Gemäß dem Lebenszyklus einer Servlet-Klasse wird zuerst die init-Methode aufgerufen. Darin wird die Verbindung zur SAP HANA Datenbank erzeugt. Das Coding ist in folgendem Listing zu sehen.

    /**
     * Manage resources that are needed for the life of the servlet.
     * Set the connection between the SAP HANA database
     */
    @Override
    public void init() throws ServletException {
        try {
            InitialContext ctx = new InitialContext();
            DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/DefaultDB");
            bigDataDAO = new BigDataDAO(ds);
        } catch (SQLException e) {
            throw new ServletException(e);
        } catch (NamingException e) {
            throw new ServletException(e);
        }
    }

Die Spezifikation der SAP HANA Datenbank wird über das Java Naming und Directory Interface (JNDI) geregelt. Hierbei handelt es sich um eine Programmierschnittstelle für Namen- und Verzeichnisdienste. Mit Hilfe der lookup-Methode werden die benannten Objekte ermittelt. Hier wird in der web.xml Datei nach dem XML-Namen jdbc/DefaultDB gesucht und der Eintrag im XML-Tag res-type ermittelt.

Es wird dabei empfohlen, die XML-Einträge zur Datenbank nach dem servlet-Element einzufügen. Damit dieser Eintrag in der web.xml Datei funktioniert und damit die Verbindung zwischen der Applikation und der SAP HANA Datenbank möglich ist, muss man ein Data Source Binding in der Datenbank einrichten. Dabei verbindet man die Applikation mit der SAP HANA Instanz über den technischen Datenbankbenutzer System(vgl. SAP2018_2).

Durch die Angabe der Data Source kann man mehrere Datenquellen näher beschreiben. Es wird in der Literatur empfohlen, diese als <default> einzustellen. In dem Dropdown Java Application wählt man die eingerichteten Java-Anwendungen aus. Dadurch wird auf diese Anwendung das Binding erzeugt. Um die Rechte der Verbindung einzugrenzen, wird außerdem ein technischer Datenbankbenutzer eingetragen.

Data Source Binding auf der SAP Cloud Platform für SAP HANA Anwendung
Data Source Binding SAP Cloud Platform

Die zentrale Datenbanktabelle ist die BIG DATA-Tabelle. Sie besteht aus fünf Attributen, wobei die ID-Spalte als Primärschlüssel definiert wird. USER NAME und TEXT sind Attribute, um Zeichenketten darzustellen. Mit “REATED AT werden Datumswerte gespeichert und NUMBER ermöglicht die Speicherung von Zahlenwerten.

Nachdem die Verbindung zur SAP HANA Instanz eingerichtet ist, wird eine Instanz von der BigDataDAO-Klasse erzeugt. Die BigDataDAO Klasse ermöglicht JDBC zwischen der Anwendung und der SAP HANA Datenbank. Sie führt die notwendigen SQL-Befehle aus.

Beim Konstruktoraufruf wird geprüft, ob die notwendige Datenbanktabelle BIG DATA bereits vorhanden ist. Sofern sie noch nicht existiert wird sie mit einem DDL-Befehl erzeugt. Anschließend wird gemäß dem Lebenszyklus der Servlet-Klasse die HTTP-GET-Methode durch die doGet-Methode verarbeitet. Dadurch wird die Benutzeroberfläche um eine Überschrift, einen Button, analysierte Daten und alle Datensätze in der Datenbank erweitert. In der Implementierung werden 1000 Datensätze erzeugt.

/**
	 * Handle  HTTP GET requests
	 * Add the title, button and table as HTML to the user interface
	 */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().println("<h1 align='center'>Big Data with SAP HANA!</h1>");
        try {
        	addButtonToHTML(response);
            addDataToHTML(response);
            
        } catch (Exception e) {
            response.getWriter().println("Persistence operation failed with reason: " + e.getMessage());
            LOGGER.error("Persistence operation failed", e);
        }
    }

Unter den analysierten Daten versteht man drei Zahlenwerte und ein Datumswert. Dadurch wird die durchschnittliche Länge der Werte in der Spalte USER NAME ermittelt. Außerdem wird das Datum, welches am häufigsten vorkommt gezeigt. Des Weiteren wird ermittelt, wie oft der Buchstabe e in der Spalte TEXT vorkommt und wie der Durchschnitt aus der Spalte NUMBER ist. Als Beispiel wird die analyzeText-Methode aus der BigDataDAO-Klasse in folgendem Listing gezeigt.

  /**
     * 
     * @return the number of letter 'e' used in the column
     * 			TEXT of the table 'BIG_DATA'
     * @throws SQLException
     */
    public int analyzeText() throws SQLException {
    	String sqlQuery = "SELECT SUM(LENGTH(TEXT) - LENGTH(REPLACE(TEXT, 'e', ''))) FROM BIG_DATA";
    	return this.executeSQLQueryInt(sqlQuery);
    }

Der Button dient dabei der Interaktion zwischen dem Benutzer und der Anwendung.

Sollte der Benutzer den Button drücken, so wird die doPost-Methode der BigDataServlet-Klasse aufgerufen. Die doPost-Methode ist in folgendem Listing zu erkennen.

  /**
     * Handle HTTP POST requests
     * Generate a random data set and save it to the database
     * Refresh the user interface with the current data
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
            IOException {
        try {
        	generateData(1000);
            doGet(request, response);
        } catch (Exception e) {
            response.getWriter().println("Persistence operation failed with reason: " + e.getMessage());
            LOGGER.error("Persistence operation failed", e);
        }
    }

Mit Hilfe der Util-Klasse werden zufällig verschiedene Datensätze generiert. Als zufälligen Zahlenwert wird ein Zahl zwischen 0 und 231 – 1 generiert. 231 – 1 ist der Maximalwert, welche der primitive Datentyp int annehmen kann. Eine zufällige Zeichenkette wird aus Groß-, Kleinbuchstaben und Ziffern gebildet und ein zufälliges Datum kann Werte zwischen 01-01-1000 bis 28-12-5000 annehmen. Dabei ist die maximale Länge eines zufälligen Wertes für die Spalte USER NAME 50 und für die Spalte TEXT 280. Als Beispiel ist das Coding der createRandomText-Methode in folgendem Listing dargestellt.

/**
	 * 
	 * @param maxLengthWord
	 * @return a random String which can contain upper, lower letters and digits
	 */
	private String createRandomText(int maxLengthWord) {
			
		String charactersAndDigits = "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 1234567890";
        StringBuilder randomString = new StringBuilder();
        int randomLenghtWord = (int) (Math.random() * maxLengthWord);
        while (randomString.length() < randomLenghtWord) {
            int index = (int) (Math.random() * charactersAndDigits.length());
            randomString.append(charactersAndDigits.charAt(index));
        }
        String saltStr = randomString.toString();
        return saltStr;
		}

Um den Primary Key Constraint nicht zu verletzen, wird geprüft, ob die Datenbanktabelle leer ist. Sollte das der Fall sein, so werden die generierten Daten über einen DML-Befehl eingefügt. Andernfalls werden die vorhandenen Daten durch die erstellten Daten aktualisiert. Daraufhin wird erneut die doGet-Methode aufgerufen, wodurch die Benutzeroberfläche um die neuen Datensätze aktualisiert wird.

Dieser Zustand wurde erreicht, in dem sowohl die Datenbank als auch die Anwendung in der SAP Cloud Platform gestartet wurden und der Benutzer mindestens einmal den Button Create & Analyze Big Data ausgelöst hat.

Datenbankabfragen/-programmierung

SAP HANA gruppiert alle Artefakte, wie beispielsweise Tabellen, Views oder Trigger in Schemata. Um die einzelnen SQLScript Befehle zu zeigen und zu erläutern, wird zuerst ein entsprechendes Schema, wie in folgendem Listing zu sehen, zur Gruppierung der Artefakte angelegt. Dieses Schema wird dem Datenbank-Benutzer SYSTEM zugeordnet mit dem ebenfalls eine Verbindung zwischen der SAP Cloud Platform und Eclipse erzeugt wurde. Dadurch werden in dem System-Fenster alle dem System-Benutzer zugeordneten Artefakte angezeigt.

CREATE SCHEMA BIG_DATA OWNED BY SYSTEM;

Anschließend wurden drei Datenbanktabellen mit einzelnen Spalten erzeugt. Dabei ist die Professor-Tabelle zeilenorientiert, die Student- und Customer-Tabelle spaltenorientiert. 

CREATE COLUMN TABLE "BIG_DATA"."CUSTOMER" (customer_id integer Primary key,
	 customer_name nvarchar(60),
	 customer_job nvarchar(60),
	 customer_education nvarchar(60),
	 customer_email nvarchar(60),
	 customer_city nvarchar(60) );
	 
CREATE COLUMN TABLE "BIG_DATA"."STUDENT"(matr_nr INTEGER PRIMARY KEY,
	 first_name varchar(50),
	 last_name varchar(50),
	 semester INTEGER);
	 
 CREATE ROW TABLE "BIG_DATA"."PROFESSOR"(prof_nr INTEGER PRIMARY KEY,
	 first_name varchar(50),
	 last_name varchar(50),
	 speziealgebiet varchar(50),
	 raum INTEGER,
	 gehalt double);

Nachdem die Tabellen erzeugt wurden, werden sie in Eclipse in dem entsprechenden Schema angezeigt. Durch das zugeordnete Symbol zur Tabelle kann man bereits erkennen, um was es sich für eine Art von Tabelle handelt. Bei horizontalen Linien im Symbol handelt es sich um eine zeilenorientierte Tabelle und bei vertikalen Linien um eine spaltenorientierte Tabelle.

Außerdem bietet Eclipse die Möglichkeit, über das Kontextmenü Tabellen anzulegen, zu verändern oder zu löschen. Durch Rechtsklick auf den Tabellen-Ordner kann man eine neue Tabelle anlegen. Dabei gibt man den gewünschten Namen, das Schema, die Art der Tabelle und die einzelnen Spalten an.

SAP HANA Tabellen über das Kontextmenü erstellen
SAP HANA Tabellen über das Kontextmenü erstellen

SAP HANA unterstützt Unicode, um die Verwendung aller Sprachen im Unicode Standard und 7 Bit ASCII ohne Einschränkungen zu ermöglichen(vgl. S. 26 SAP2016_3). Um SQL Abfragen auf die SAP HANA Datenbank auszuführen, benutzt man den SQL Editor. Vorab muss eine Verbindung mit der SAP Cloud Platform erzeugt werden.

Die Beispieldaten wurden unter diesen Link heruntergeladen. Die Daten in der csv-Datei wurden mit der Funktion Import Data from Local File importiert. Dabei wurden lediglich die Spalten in der Datei mit den Attributen der Datenbanktabelle gemappt, welche notwendig waren.

SAP HANA - Mapping - Import Data From Local File
SAP HANA – Mapping – Import Data From Local File

Als Beispiel einer Abfrage werden vier Attribute angezeigt und die Tupel mit Hilfe einer Fuzzy-Suche selektiert. Ziel einer Fuzzy-Suche ist eine schnelle und fehlertolerante Suche, wenn beispielsweise ein Suchbegriff fehlt oder ein zusätzliches Zeichen benötigt wird. In der Abfrage sollen ähnliche Begriffe zu ‘Wiliam’ gesucht werden. Somit können Schreibfehler toleriert werden und somit als Beispiel ‘William’ gefunden werden. Als Gegenstand der Suche werden folgende Datentypen unterstützt:

  • Zeichenketten: (n)varchar, shorttext
  • Datum: Date
  • Zahlen: numerische Datentypen
  • Große Objekte: Text, Bintext, Blob, Cblob

Im Beispiel wurde der Zusatz ‘similarCalculationMode=search’ verwendet. Das ist eine Möglichkeit, die Fuzzy-Suche einzustellen. Dadurch wird bei der Suche vor allem ein Fokus auf falsche und zusätzlich benötigte Buchstaben gelegt. Deshalb reicht mit diesem Zusatz ein Wert von 0.9 aus, um trotz der Suche nach ‘Wiliam’ das Wort ‘William’ zu finden. Ohne den Zusatz, müsste man die Suche auf mindestens 0.5 erweitern.

SELECT
	 CUSTOMER_NAME,
	 CUSTOMER_JOB,
	 CUSTOMER_EDUCATION,
	 CUSTOMER_EMAIL 
FROM "BIG_DATA"."CUSTOMER" 
WHERE CONTAINS("CUSTOMER_NAME",
	 'Wiliam',
	 FUZZY(0.9,
	 'similarCalculationMode=search'))

Die folgende Tabelle zeigt weiter zusätzliche Parametern und deren Auswirkung auf die Suche:

similarCalculationModeFalscher BuchstabeZusätzlich notwendiger Buchstabe
compare (Standard)ModeratHoch
searchHochHoch
searchCompareModerat – HochHoch
substringSearchHochHoch
symmetricSearchHochModerat
typeAheadHochSehr Hoch
Parameter bei einer Fuzzy-Suche, Quelle: vgl. S. 58 – 61 SAP2016_3

Die SAP HANA Datenbank unterstützt außerdem SQLScript. Das ist eine Menge von SQL-Erweiterungen für die SAP HANA Datenbank, die es dem Entwickler erlaubt, komplexe und meist rechenintensive Anwendungslogik direkt auf der Datenbank auszuführen. Dabei können benutzerdefinierte Funktionen oder Prozeduren erstellt werden. Dadurch wird die Performance verbessert, da nicht mehr zwischen der Anwendungs- und der Persistenzschicht kommuniziert werden muss.

Meistens ist die Datenbank rechenoptimierter als der Anwendungsserver, da die SAP HANA Datenbank gemäß Spaltenoperationen und Parallelverarbeitung agiert. Somit müssen nicht mehr große Mengen an Daten von der Datenbank zur Anwendung übertragen werden.

Die Verwendung von SQL-Scripten anstelle einzelner SQL-Abfragen ermöglicht es, mehrere Parameter an Funktionen zu übergeben. Außerdem können komplexe SQL-Funktionen in kleinere Funktionen zerlegt werden. Es gibt insgesamt zwei verschiedene Logik-Container:

  • Prozedur
  • Benutzerdefinierte Funktion

Damit der Entwickler auf der SAP Cloud Platform Funktionen oder Prozeduren erstellen kann muss man das Schema, in welches man die Artefakte erstellen möchte, dem Benutzer SYS REPO zuordnen. Diese Berechtigung ist notwendig, da sonst die Aktivierung nicht möglich ist.

Eine Prozedur ermöglicht die Beschreibung einer Folge von Datentransformationen auf Daten, die als Eingabe- und Datenbanktabellen übergeben werden. Durch das Schlüsselwort PROCEDURE wird eine Prozedur definiert.

Anschließend folgt in Anführungsstrichen der Name der Prozedur und davor das Schema, in welches die Prozedur zugeordnet ist. In den Klammern werden die Inputparameter durch das Schlüsselwort in, gefolgt von dem Namen und dem Datentyp und die Output-Parameter durch das Schlüsselwort out, gefolgt von dem Namen und dem Datentyp angegeben.

Der Output-Parameter ist eine Tabelle mit vier Attributen und wird in der Variable ex customer definiert. Das Schlüsselwort LANGUAGE informiert das HANA-System über die Sprache, in der diese Logik kodiert wird. Normalerweise ist dies SQLSCRIPT. Optional kann dies auch in der Sprache R geschrieben werden. Es gibt zwei Sicherheitsmodi:

  • Invoker
  • Definer

Bei Invoker wird die Funktion mit den Rechten des Aufrufers der Prozedur ausgeführt. In dem Definer-Modus wird die Funktion mit den Privilegien des Erstellers der Prozedur ausgeführt. Es ist sicherheitstechnisch besser, es als INVOKER zu belassen, so dass diese Funktion basierend auf den Privilegien des aufrufenden Benutzers ausgeführt wird.

READS SQL DATA teilt dem HANA-System mit, dass dieses Verfahren nur dazu gedacht ist, Daten aus Tabellen zu lesen und keine anderen Aktionen wie das Löschen oder Einfügen von Daten durchzuführen. Das Schlüsselwort AS markiert den Anfang des BEGIN-END-Blocks. Der BEGIN-END-Block markiert den Bereich, innerhalb dessen die Prozedurlogik geschrieben wird(vgl. SAPHanaTutorial2016).

Dabei werden alle Daten aus der Datenbanktabelle Customer aus dem Schema BIG DATA gelesen und das erste Tupel verändert. Daraufhin werden in der Spalte CUSTOMER EDUCATION alle Werte durch BIG DATA ersetzt, sofern diese mit Bachelor gefüllt sind.

PROCEDURE "BIG_DATA"."public::insert_update_delete" (
    out ex_customer table (CUSTOMER_NAME nvarchar(60),
                            CUSTOMER_JOB nvarchar(60),
                            CUSTOMER_EDUCATION nvarchar(60),
                            CUSTOMER_EMAIL nvarchar(60) ))
   LANGUAGE SQLSCRIPT
   SQL SECURITY INVOKER
   READS SQL DATA AS
BEGIN
    declare lv_index int := 0;
    
    ex_customer = select CUSTOMER_NAME, CUSTOMER_JOB, 
                    CUSTOMER_EDUCATION, CUSTOMER_EMAIL from "BIG_DATA"."CUSTOMER";
                    
    ex_customer.CUSTOMER_NAME[1] = 'Name';
    ex_customer.CUSTOMER_JOB[1] = 'Job';
    ex_customer.CUSTOMER_EDUCATION[1] = 'Education';
    ex_customer.CUSTOMER_EMAIL[1] = 'EMAIL';
    
    for lv_index in 1..100 do
        if :ex_customer.CUSTOMER_EDUCATION[lv_index]  = 'Bachelor' THEN
            ex_customer.CUSTOMER_EDUCATION[lv_index] = 'BIG_DATA';
        end if;
    end for;
END;

Solange die Daten nicht verändert werden, wird der Aufruf stets das gleiche Ergebnis anzeigen, da durch die Prozedur die Daten nicht in der Datenbank verändert werden, sondern lediglich ausgegeben werden.

Ergebnis des Prozeduraufrufs unter SAP HANA
Ergebnis des Prozeduraufrufs unter SAP HANA

Benutzerdefinierte Funktionen erlauben mehrere Eingabeparameter und geben genau einen Einzelwert zurück. Diese Funktionen ermöglichen es dem Entwickler, komplexe Algorithmen in überschaubaren, wiederverwendbaren Code zu kapseln, der dann innerhalb der Feldliste einer SELECT-Anweisung verschachtelt werden kann. Syntaktisch ähnelt die Erstellung einer benutzerdefinierten Funktion sehr der Erstellung einer Prozedur. Das Schlüsselwort PROCEDURE wird durch FUNCTION ersetzt und der Rückgabetyp wird angegeben(vgl. Heilman2013). Ein Beispiel ist in folgendem Listing zu sehen.

CREATE FUNCTION "BIG_DATA"."get_customer_by_name" (nameFilter nvarchar(60)) RETURNS table (CUSTOMER_NAME nvarchar(60),
	 CUSTOMER_JOB nvarchar(60),
	 CUSTOMER_EDUCATION nvarchar(60),
	 CUSTOMER_EMAIL nvarchar(60) ) LANGUAGE SQLSCRIPT SQL SECURITY INVOKER AS 
BEGIN RETURN select
	 CUSTOMER_NAME,
	 CUSTOMER_JOB,
	 CUSTOMER_EDUCATION,
	 CUSTOMER_EMAIL 
from "BIG_DATA"."CUSTOMER" 
where contains("CUSTOMER_NAME",
	 :nameFilter,
	 Fuzzy(0.9,
	 'similarCalculationMode=search')) 
;
END 
;

Die folgende Abbildung zeigt den Aufruf der benutzerdefinierten Funktion und das Ergebnis. 

Ergebnis des Funktionsaufrufs unter SAP HANA
Ergebnis des Funktionsaufrufs unter SAP HANA

Fazit

Eigene Bewertung

openSAP Kurse

Insgesamt wurden zur Recherche und Implementierung der praktischen Beispiele an folgenden Kursen auf openSAP teilgenommen:

  • Software Development on SAP HANA (Update Q4/2017), Link
  • Big Data with SAP Vora – Engines and Tools, Link 
  • SAP BW/4HANA in a Nutshell, Link

Die Teilnahme an den Kursen ist kostenlos und nach erfolgreichem Bestehen erhält man ein Zertifikat. Trotz des Aufwandes sind die Online-Kurse sehr empfehlenswert. Sie geben einen guten Überblick über SAP HANA. Man muss jedoch darauf aufpassen, ob der Kurs noch auf dem aktuellen Stand ist.

Gerade beim Kurs Software Development on SAP HANA ist aufgefallen, dass die genannten Beispiele zu Prozeduren in SQLScript nicht ausgeführt werden können, da die Syntax in der Zwischenzeit verändert wurde. Trotzdem werden oft praktische Übungen zur Verfügung gestellt, die freiwillig gelöst werden können, wodurch die Theorie gefestigt werden kann.

Meistens erhält man dabei einen kostenlosen Zugang zu sonst kostenpflichtigen Systemen wie einer on-premise SAP HANA Instanz oder einer on-premise SAP S/4HANA.

Außerdem kann man sowohl zeitlich als auch örtlich flexibel diese Kurse absolvieren und somit wichtige Inhalte vermittelt bekommen.

Dokumentation von SAP HANA

Bei der Recherche im Internet ist aufgefallen, dass die Syntax von SQLScript des Öfteren verändert wurde. Es existieren auf verschiedenen Internetseiten unterschiedliche Methodiken zur Entwicklung von Codefragmenten, die nicht alle funktionieren, sobald man diese ausführen möchte.

Deshalb ist es wichtig, sich auf die aktuelle Dokumentation von SAP HANA zu stützen und die erläuterten Inhalte zu verwenden. Es gibt keinen leichten Einstieg in die Implementierung und Verwendung der SAP HANA Datenbank. Die openSAP Kurse haben ein wichtiges Grundwissen und Grundverständnis vermittelt, dass so nicht in der Dokumentation enthalten ist. 

Die SAP Cloud Platform bietet in der kostenfreien Version nur begrenzten Zugang zu den Ressourcen und Services. Dadurch ist es leider nicht möglich, die SAP HANA Datenbank in vollem Umfang zu testen. Der zur Verfügung stehende Leistungsumfang wird als Quota bezeichnet. Dennoch ist es in der Neo Trial Version durchaus möglich, einen guten Einblick in die SAP HANA Datenbank zu bekommen und für das Verständnis wichtige Befehle in dem SQLEditor auszuführen.

Zusammenfassung

SAP HANA ist eine In-Memory-Datenbank, die durch die parallele Datenverarbeitung und die Spaltenorientierung Performancevorteile bietet und gerade durch den Bedarf der Analyse sehr großer Datenmengen als Wegbereiter für Big-Data-Lösungen gilt. Dabei werden die Daten hauptsächlich im Arbeitsspeicher gehalten und ermöglichen dadurch sehr hohe Transaktionsraten.

Um die Daten durch die flüchtige Speicherung bei beispielsweise einem Systemneustart oder einem Stromausfall nicht zu verlieren, gibt es Sicherungsmechanismen. Es gibt eine Persistenzschicht, die die Daten periodisch in Savepoints dauerhaft sichert. Außerdem werden die Protokolle eines Systems in Log-Volumes gespeichert. Bei einem Systemneustart oder Stromausfall werden die Daten aus den Savepoints geladen und durch Redo-Log-Einträge rekonstruiert. 

Unter SAP HANA versteht man heutzutage oft auch die Entwicklungsplattform. Dabei handelt es sich um eine platform-as-a-service und wird heute als SAP Cloud Platform bezeichnet. 

SAP HANA kann sowohl on-premise als auch in der Cloud genutzt werden. Die In-Memory-Computing-Engine ist eine Bündelung von mehreren technischen Tools, die für die Benutzung von SAP HANA notwendig sind. Diese werden als Bundle mit ausgeliefert, um die Installation und Verwaltung zu erleichtern.

SAP HANA kann in einer von drei Softwarespezifikationen genutzt werden:

  • Standard Edition
  • Enterprise Edition
  • Express Edition

Die wichtigsten Einsatzmöglichkeiten von SAP HANA sind folgende:

  • SAP S/4HANA
  • SAP Vora
  • SAP BW/4HANA

Außerdem wurde im Laufe dieses Artikels am Beispiel einer Java-EE-Anwendung JDBC mit der SAP HANA Datenbank näher erläutert. Die Applikation wurde in Neo Trial auf der SAP Cloud Platform geladen und greift von dort aus auf eine MDC SAP HANA Datenbank zu. Ziel der Applikation ist es, zufällig generierte Daten in die Datenbank zu laden und diese zu analysieren.

Außerdem wurden an zahlreichen praktischen Beispielen einzelne Datenbankabfragen und -programmierungen näher erläutert. Vor allem SQLScript bietet viele Anwendungsfälle und fördert eine erhöhte Performance von Anwendungen. Es ist dadurch nicht mehr nötig, große Datenmengen zwischen der Datenbank und der Anwendung zu verschieben. Teile der Applikationslogik können direkt auf der Datenbank entwickelt werden.

Abkürzungsverzeichnis

ACID Atomicity Consistency Isolation Durability
ACL Access Control List
ASCII American Standard Code for Information Interchange
BPMN Business Process Model and Notation
BW Business Warehouse
CEO Chief Executive Ofcer
CIO Chief Information Ofcer
CPU Central Process Unit
DDL Data Defnition Language
DML Data Manipulation Language
DRAM Dynamic Random Access Memory
ERP Enterprise Resource Planning
ETL Extract Transform Load
GB Gigabyte
HANA High Performance Analytic Appliance
HDFS Hadoop Distributed File System
HTTP Hypertext Transfer Protocol
Java EE Java Enterprise Edition
JDBC Java Database Connectivity
JSON JavaScript Object Notation
MDC Multitenant Database Architecture
MDX Multidimensional Expressions
MVCC Multi-generational concurrency control
NoSQL Not only SQL
OLAP Online Analytical Processing
OLTP Online transaction Processing
PaaS Platform as a Service
PAL Predictive Analysis Library
POJO Plain old Java Object
RDBMS Relational Database Management System
SE Societas Europaea
SIMD Single Instruction Multiple Data
SQL Structured Query Language
SSD Solid-State-Drive
TLS Transport Layer Security
UI User Interface
XML Extensible Markup Language
XSA Extended Application Services Advanced Model

Literaturverzeichnis

[1] Bjarne Berg und Penny Silvia. Einführung in SAP HANA -. 2. Auflage. Bonn: Rheinwerk, 2013.
[2] Bjarne Berg, Penny Silvia und Rob Frye. SAP HANA – Die neue Einführung In-Memory-Technologie, Werkzeuge, Datenbeschaffung und Datenmodellierung. 3. Auflage. Bonn: Rheinwerk Verlag GmbH, 2017.
[3] Ulrich Christ. SAP BW/4HANA in a Nutshell. Link
[4] Chris Hallenbeck und Christof Bornhoevd. SAP HANA – Real Time Computing. Link
[5] Hans Robert Hansen, Jan Mendling und Gustaf Neumann. Wirtschaftsinformatik. 11. Auflage. Berlin: Walter de Gruyter GmbH & Co KG, 2015.
[6] Rich Heilman. Scalar User Defned Functions in SAP HANA.
[7] Jason Hinsperger und Puntis Jifroodian. Big Data with SAP Vora – Engines and Tools. Link
[8] Leo Hu. SAP HANA Smart Data Access(1): A brief introduction to SDA. Link.
[9] David J. DeWitt und Katz. „Implementation Techniques for Main Memory Database Systems“. In: Sigmod Record. Bd. 14. Juni 1984, S. 1–8.
[10] Denys van Kempen. SAP HANA 2.0 editions (2018) – by the SAP HANA Academy. Link.
[11] Christos Konstantinidis und Harald Kienegger. SAP Business ByDesign – Anpassung und Integration. 1. Auflage. Bonn: Galileo Press, 2012.
[12] PR Newswire Association LLC. In-Memory Database Market by Application, Data Type, Processing Type, Deployment Model, Organization Size, Vertical, and Region – Global Forecast to 2021.
[13] PR Newswire Association LLC. In-Memory Database Market by Application, Data Type, Processing Type, Deployment Model, Organization Size, Vertical, and Region – Global Forecast to 2021.
[14] Peter Preuss. In-Memory-Datenbank SAP HANA -. Berlin Heidelberg New York: Springer-Verlag, 2017.
[15] RAAD Research. Oracle dominiert: Datenbankeinsatz im SAP-Umfeld – com
puterwoche.de. Link.
[16] SAPHanaTutorial.com. SQLScript – A New Avatar of SQL in HANA.
[17] Kristof Schneider. „SAP Business ByDesign – SAP’s integrated cloud suite“.
Präsentationsfolien SAP Business ByDesign. 2017-11-07.
[18] SAP SE. Feature Scope Description for SAP HANA, express edition 2.0 SPS 02. Techn. Ber. SAP SE, 2017-12-14.
[19] SAP SE. Frequently Asked Questions About SAP HANA®, Express Edition. Techn. Ber. SAP SE, 2016.
[20] SAP SE. SAP Cloud Platform, SAP ASE.
[21] SAP Deutschland SE. Neuerungen in SAP S/4HANA 1610. Link.[22] SAP Deutschland SE. Overview | SAP Cloud Platform. Link.
[23] SAP Deutschland SE. SAP HANA SQL and System Views Reference. 30. Nov. 2016.
[24] SAP Deutschland SE. Zalando: Geschäftsmodelle erfolgreich transformieren
– mithilfe von SAP HANA. Link.
[25] Zalando SE. ZALANDO IN ZAHLEN. Link.
[26] Zalando SE. ZALANDO SE | Geschäftsbericht 2016: Zahlen, Daten und Fakten. Link.
[27] Andy Silvey. Does SAP S/4HANA run on Oracle ? Link.
[28] Alper Somuncu. SAP HANA Multitenant Database Architecture. Link.

Über den Autor

Andreas Geiger

Schön, dass Du Dich für SAP ERP interessierst.

Mein Name ist Andreas Geiger und ich bin der Gründer von ERP-UP.de. Mein Ziel ist es, so viel nützliches Wissen wie möglich über das SAP ERP-System zu vermitteln. Ich möchte Dir damit einen Mehrwert bieten. Es freut mich, wenn ich Dir damit helfen kann.

Mehr zu ERP UP

2 Gedanken zu „In-Memory Computing mit SAP HANA – Big Data“

  1. Heya i’m for the first time here. I came across this board and I in finding It truly helpful
    & it helped me out a lot. I hope to present one thing
    back and aid others such as you aided me.

    Antworten

Schreibe einen Kommentar