Leider hatte ich bis jetzt nicht die Gelegenheit in einem Projekt mitzuwirken, in dem die neue SAP HANA Datenbank zum Einsatz kam – was noch nicht ist, kann ja noch werden. Aber durch Fachbeiträge und eine Vertriebspräsentation der SAP konnte ich einiges zum Thema erfahren. Vor allem während der Präsentation sind mir 2 Punkte hängen geblieben, die kennzeichnend für die SAP HANA DB sind:
#1 SAP HANA basiert auf In-Memory-Technologie
#2 HANA verwaltet / speichert die Daten spaltenbasiert
Der Vorteil des ersten Punktes ist schnell erklärt: Seit dem ich meinen ersten Computer mit 12 Jahren bekommen hatte (Commodore 64) konnte ich am eigenen Leib erfahren, dass der Arbeitsspeicher eines Rechners viel schneller arbeitet, als die Festplatte – damals die ratternde Datasette. Und genau diesen Geschwindigkeitsvorteil nutzt die SAP HANA DB und hält die Daten nicht mehr auf der Festplatte, sondern alle Daten liegen direkt im Arbeitsspeicher – BIG SPEEDY BRAIN! Damit ist HANA in Bezug auf Geschwindigkeit unschlagbar verglichen mit konventionellen DBs, die die Daten auf der Festplatte speichern. Aber dieser Vorteil wird mit höheren Kosten erkauft, denn auch dies ist Allgemeinwissen: Arbeitsspeicher ist teuer als Festplattenspeicher.
Das zweite Charakteristikum der SAP HANA DB ist, dass die Daten spaltenorientiert verwaltet bzw. gespeichert werden. „… Und was bedeutet das?“ Während des Vertriebsvortrags durch die SAP-Mitarbeiter stellte ich genau diese Frage, doch ich bekam damals keine zufriedenstellende Antwort. Also habe ich zu diesem Thema etwas recherchiert und die Antworten, die ich fand und im Folgenden mit euch teilen will, waren wirklich interessant.
# Was bedeutet spaltenorientiert Datenverwaltung / -speicherung?
Im oberen Bild ist eine kleine Tabelle mit 5 Autos dargestellt, die anhand 6 unterschiedlicher Kriterien beschrieben sind:
# Nr.
# Hersteller
# Modell
# Leistung in PS
# Verbrauch
# Einheit Verbrauch
Normalerweise, also bei der zeilenorientierten DB, wird die Tabelle wie folgt gespeichert:
1,Audi,A3, 140,6.7,l/100km;
2,Audi,A4, 140,6.9,l/100km;
3,VW,Polo,90,5.5,l/100km;
4,VW,Golf,110,5.7,l/100km;
5,Mazda,CX-3,110,7.2,l/100km;
Wenn man sich vorstellt, wie die Daten tatsächlich physisch gespeichert werden, sieht es ungefähr so aus:
1,Audi,A3,140,6.7,l/100km;2,Audi,A4,140,6.9,l/100km;3,VW,Polo,90,5.5,l/100km;4,VW,Golf,110,5.7,l/100km;5,Mazda,CX-3,110,7.2,l/100km;
Wenn die Daten aber – wie bei der SAP HANA DB – spaltenorientiert gespeichert werden, sieht das so aus, d.h. jeder Satz ist ein Spalte, Spalte-Nr., Spalte-Hersteller, …:
1,2,3,4,5;
Audi,Audi,VW,VW,Mazda;
A3,A4,Polo,Golf,CX-3;
140,140,90,110,110
6.7,6.9,5.4,5.7,7.2;
l/100km, l/100km, l/100km, l/100km, l/100km;
Vor- und Nachteile einer Spaltenorientierten DB
Das spaltenorientierte Speichern und Verwalten von Daten sieht zunächst gewöhnungsbedürftig aus, hat aber auch seine Vorteile. Im Folgenden will ich anhand von drei Fragenstellungen die Vorzüge der SAP HANA DB darstellen:
Wie viel VW-Fahrzeuge sind in der Liste?
Bei der zeilenorientierten DB müsste mal alle Zeilen auslesen und hieraus selektieren, welche Sätze Hersteller = VW sind; d.h. man muss zwingend alle Sätze durchgehen. Im Gegensatz dazu würde HANA „nur“ in den einen Satz für die Hersteller-Spalte schauen und die VW-Fahrzeuge aus diesem einen Satz ermitteln, d.h. statt 5 Zugriffe ein einziger Zugriff.
Wie viele Autos gibt es mit über 120 PS?
Auch hier müsste man nur in den Satz für „Leistung in PS“ schauen, und die Anzahl der Werte mit größer 120 ermitteln.
Wie viel verbrauchen die Fahrzeuge im Schnitt?
Wieder müsste man nur den Satz für die Spalte „Verbrauch“ lesen und den Mittelwert ermitteln. Im Gegensatz dazu müssten bei einer konventionellen DB alle Sätze gelesen werden.
Also wenn es um Analyse von Daten geht, ist HANA durch das Design unschlagbar gegenüber konventioneller DBs. Natürlich hat das HANA-Design nicht nur Vorteile. Stell dir vor, du willst in die Tabelle ein neues Fahrzeug aufnehmen. Dann muss jeder Satz aktualisiert werden, d.h. der Satz für die erste Spalte, die zweite Spalte, die dritte Spalte … muss aktualisiert werden. Auch bei Änderung oder Anzeige eines Fahrzeugs müssten, statt eines Satz, viele sogar alle Sätze gelesen werden.
So bis jetzt kann man also fest halten:
# Wenn Daten analysiert werden sollen, dann ist HANA durch das zusammenhängende Speichern von Kennzahlen (Spalten) in einem Satz unschlagbar schnell.
# Doch wenn Daten erfasst, geändert und angezeigt werden sollen, ist HANA nicht die optimale Lösung, da hier unter Umständen auf unterschiedliche Sätze zugegriffen werden muss.
Doch das spaltenbasierte Design der SAP HANA DB bietet einen zusätzlichen Vorteil, der Im-Memory-Technologie in die Hände spielt. Wenn man sich die Fahrzeugdaten in der HANA-Version nochmal genauer anschaut, fällt vor allem in der letzten Zeile, die Spalte, die „Einheit Verbrauch“ darstellt, etwas Wichtiges auf:
1,2,3,4,5;
Audi,Audi,VW,VW,Mazda;
A3,A4,Polo,Golf,CX-3;
140,140,90,110,110
6.7,6.9,5.4,5.7,7.2;
l/100km, l/100km, l/100km, l/100km, l/100km;
Habt ihr erkannt, was auffällig ist? Ja genau, die Werte wiederholen sich. Diesen Umstand nutzt HANA, um die Daten zu komprimieren, d.h. sich wiederholende Werte innerhalb eines Satzes werden einfach zusammengefasst. Das sieht dann etwa so aus:
1,2,3,4,5;
2:Audi,2:VW,Mazda;
A3,A4,Polo,Golf,CX-3;
2:140,90,2:110
6.7,6.9,5.4,5.7,7.2;
5:l/100km;
Die Komprimierung ist in Grunde sehr einfach: Wenn sich innerhalb einer Zeile ein Wert wiederholt, wird die Anzahl der Wiederholungen mit einem Doppelpunkt vor dem Wert dargestellt. Damit sind alle Daten immer noch verfügbar, aber der Speicherbedarf der DB ist viel kleiner. Hier habe ich mal von einem Faktor von 4-10 gelesen, den die Komprimierung einspart. D.h. für die In-Memory-Technologie von SAP HANA werden bspw. statt 10 TB nur 1 – 2,5 TB benötigt. Und das ist ein zusätzlicher Boost für die In-Memory-Technologie bezogen auf den Preis und die Geschwindigkeit.
Hoffe, ich konnte euch essentielle Aspekte der SAP HANA DB nahe bringen … wie immer wäre es toll, wenn du ein kleines Feedback hinterlassen könntest, Isa.
Hallo Isa,
wie geht HANA vor, wenn die Frage heisst, welcher Hersteller hat ein Auto mit 90PS? Hier würde mich die schrittweise Abarbeitung interessieren. (also da baut doch HANA so pro Spalte einen Dictionary auf, sortiert diesen und vergibt einen laufenden Index …richtig? oder doch nicht?)
Super erklärt, ich bin begeistert.
Bereite gerade mein refresh vor, ich habe meine Berater Ausbildungen SD MM 2010 bis 2013 Zertifiziert bekommen. **bitte mehr davon**! ich habe noch meine alten Unterlagen von SAP01/und SCM Bücher / PDF alle noch, sowie ADM 940 etc. Kann ich die für Hana S/4 noch für den refresh 2019 gebrauchen oder sind die auch alle neu bei Hana S/4 ?
Ich bin geflasht von deiner Erklärung!
Den Tag heute kreise ich mir in den Kalender ein!
Das ist das erste Mal, dass ich den Unterschied zeile vs. spalte verstanden habe!
Super einfach erklärt und ganz verdaulich noch „nice to know“ Inhalte verpackt!
Ich bin dein FAN !
Danke.
Hi Jessica,
freut mich wirklich sehr, wenn ich helfen konnte und vielen Dank für deine Lob.
cu, Isa.
Hi Isa,
Super! einfach genial, sehr gute erklärung…
weiter so!
Danke und Viele Grüße,
Hi Anwar,
freut mich, dass dir der Beitrag gefällt …
cu, Isa