Speicherung in Zeilen Block „100“ Speicherung in Spalten Block „2000“ Block „2001“ Block „2002“ ProductID OrderDate Cost 310 20010701 2‘171.29 ProductID OrderDate Cost 311 20010701 1‘912.15 310 20010701 2‘171.29 312 20010701 2‘171.29 311 20010702 1‘912.15 Block „101“ ProductID OrderDate Cost 313 20010701 4‘171.20 314 20010702 1‘812.25 315 20010702 1‘171.30 313 2‘171.29 314 4‘171.20 315 1‘812.25 312 1‘171.30 Spalte statt Zeile Die spaltenorientierte Ablage von Daten in einer entsprechend organisierten Datenbank erlaubt höhere Kompressionsraten und eine schnellere Abfrage von Daten – vor allem im Hauptspeicher. Quelle: Trivadis In-Memory-Techniken im Vergleich: Alles hängt vom Einsatzszenario ab Lange fristeten In-Memory-Datenbanken ein Nischendasein. Doch neue Techniken und sinkende Speicherpreise machten das Thema wieder populär. Nachdem SAP mit HANA eine eigene In-Memory-Datenbank entwickelt hatte, zogen IBM, Microsoft und Oracle nach und rüsteten ihre Datenbanken mit entsprechenden Funktionen aus. Doch die Ansätze unterscheiden sich. Von Peter Welker, Partner und Berater für Big Data und Data Warehousing bei Trivadis und verantwortlich für Big Data bei der DOAG D er Zugriff auf den Arbeitsspeicher eines Rechners (Random Access Memory = RAM) erfolgt bis zu eine Million Mal schneller als bei herkömmlichen Festplatten. Beim Datendurchsatz liegt der Geschwindigkeitsvorteil immerhin noch knapp um den Faktor 100 höher. Dazu kommt, dass die Preise für Arbeitsspeicher pro Jahr um durchschnittlich 30 Prozent sinken. Gleichzeitig werden die Prozessoren für fast alle Architekturen immer leistungsfähiger. Trotz dieser Entwicklungen im Markt sind die meisten Zugriffsverfahren in Datenbanken auf dem algorithmischen Stand der 80er und 90er Jahre: Sie sind auf ein möglichst effizientes Zusammenspiel von Festplatte und RAM ausgerichtet. Da dies nicht mehr zeitgemäß ist, haben verschiedene Anbieter in den zurückliegenden Jahren ihre Entwicklungsabteilungen auf das Thema angesetzt und neue In-MemoryPlattformen auf den Markt gebracht. SAP HANA Angetreten mit dem Ziel, Altlasten abzuschütteln und den lukrativen Markt der DatenbankManagement-Systeme (DBMS) aufzurollen, präsentierten Entwickler des Hasso-PlattnerInstituts (HPI) und der Universität Stanford 2008 erstmals Beispiele einer relationalen In-Memory-Datenbank für Realtime-Analysen. Zunächst noch ironisch unter dem Titel „Hassos New Architecture“ geführt – eine Anspielung auf SAP-Gründer Hasso Plattner, der die Entwicklungen persönlich massiv vorangetrieben hatte –, entstand daraus zwei Jahre später „SAP HANA“, die „High-Performance Analytic Appliance“. Damit zielte der größte deutsche Softwarekonzern darauf ab, verschiedene Datenbankanforderungen in einer einzigen Plattform, ja sogar in einem einzigen Datenbestand abzubilden – sowohl für den transaktionalen Einsatz 2015 – 13 Technik (Online Transaction Processing = OLTP) als auch für analytische Zwecke (Online Analytical Processing = OLAP). Die Entwickler wollten die bisher harte und aufwendige Trennung zwischen operativen und Business-IntelligenceAufgaben aufheben und damit einen Produktivitätsvorteil für den Einsatz dieser Appliance schaffen. Dennoch kam HANA 2011 zunächst „nur“ für das SAP-Business-Warehouse auf den Markt. Seit Mitte 2013 war es dann auch für operative SAP-Module verfügbar. Heute zeichnet sich ab, dass die In-Memory-Datenbank als Basis unter sämtliche SAP-Software gelegt werden soll. HANA ist konsequent darauf ausgelegt, alle Daten im Hauptspeicher zu halten. Die Datenbank nutzt dafür intensiv CPU-Caches und organisiert die Daten vorwiegend spaltenorientiert – statt, wie bisher in klassischen Relationalen Datenbank-ManagementSystemen (RDBMS) üblich, in Zeilen. Zudem komprimiert HANA die Daten im RAM sowie auf Festplatte und parallelisiert Datenoperationen innerhalb der CPU-Cores bei Multicore-Systemen und sogar über mehrere Rechenknoten hinweg. Mit HANA sorgte SAP für frischen Wind in der weltweiten Datenbankszene. Mit einem Mal wurden bestehende IT-Systeme infrage gestellt: Werden analytische Abfragen jetzt auch eine Million Mal schneller und vielleicht sogar online verfügbar? Sollen wir uns von Data Warehouses und älteren DBMS trennen? Ist der von SAP aufgebaute Vorsprung noch einholbar? Der Druck auf die traditionellen Datenbankanbieter wuchs, und schon bald zogen diese mit eigenen In-Memory-Lösungen nach. Allerdings unterscheiden sich die Ansätze voneinander. IBM DB2 BLU Acceleration Im April 2013 hat IBM das In-Memory-Funktionspaket „BLU Acceleration“ als Teil seiner Advanced Editions der DB2-Datenbank vorge- stellt. Im Prinzip kommen dabei dieselben Techniken wie bei HANA zum Einsatz. Allerdings integriert IBM diese einfach in die eigene Technik und erlaubt damit die Koexistenz herkömmlicher und Memory-optimierter Tabellen innerhalb ein und derselben Datenbank. Diese Tabellen lassen sich zudem von einem Format in das andere umwandeln und sollen nach Angaben von IBM gut optimierbare Abfragen um den Faktor acht bis 40 beschleunigen können. Darüber hinaus würden durch Komprimierung sowohl im RAM als auch auf Festplatte bis zu 90 Prozent Speicherplatz eingespart. Im Gegensatz zu HANA ist BLU Acceleration heute aber noch klar auf analytische Workloads ausgerichtet. Im Produktiveinsatz sollte OLTP also weiterhin auf zeilenorientierten Tabellen betrieben werden. Microsoft SQL Server In-Memory Database Auch Microsoft folgte mit seinem SQL Server dem Trend: Schon mit Release 2012 konnten Anwender für komplexe Abfragen auf Tabellen spezielle spaltenorientierte, komprimierte In-Memory-Indizes erzeugen. Damit wurde es möglich, die Analytik spürbar zu beschleunigen. Die Indizes werden jedoch zusätzlich zur normalen Tabelle aufgebaut und müssen nach jeder Änderung manuell neu erstellt werden. Mit dem neuen SQL Server 2014 sind sie hingegen aktualisierbar. In Version 2014 der Microsoft-Datenbank kam mit „In-Memory OLTP“ eine neue Lösung ausschließlich für die Beschleunigung von Transaktionen auf operativen Systemen wie ERP- und CRM-Anwendungen hinzu. Tabellen dieser Art müssen dabei komplett im Hauptspeicher gehalten werden. Sie ermöglichen für transaktionsintensive Anwendungsfälle deutliche Performance-Zuwächse. Nach Angaben von Microsoft liegen diese je nach Anwendungsfall bei Faktor 100 oder sogar noch höher. Auch hier existieren die In-Memory- neben den herkömmlichen Tabellen in der gleichen Datenbank und können fast In-Memory-Datenbanken – Technik und Lösungen Eine In-Memory-Datenbank (IMDB) lädt sämtliche Daten in den Hauptspeicher des Rechners, vor allem um kürzere Antwortzeiten zu erreichen. Der Arbeitsspeicher eines Rechners bietet wesentlich höhere Zugriffsgeschwindigkeiten als Festplattenlaufwerke, und die Algorithmen für den Zugriff sind einfacher. Allerdings ist RAM ein flüchtiger Speicher. Um die Daten bei einem Systemabsturz gegen Verlust zu sichern und einen möglichst hohen Grad an Persistenz sicherzustellen, müssen die Anbieter von IMDB spezielle Techniken mit Snapshots, Replikation und Failover-Techniken in ihre Systeme einbauen. Grundsätzlich lässt sich eine In-Memory-Lösung wie eine herkömmliche relationale Datenbank ansprechen. Allerdings sind dafür die betreffenden Applikationen an die Funktionen der Datenbank anzupassen. Der bloße Einsatz der In-MemoryTechnik garantiert also noch lange keine zuverlässigen Performance-Vorteile. Neben den Anpassungen ihrer klassischen Datenbanksysteme haben gerade die großen Anbieter dedizierte In-Memory-Lösungen im Portfolio. Oracle hat beispielsweise im Jahr 2005 den Anbieter Times Ten übernommen und dessen gleichnamiges InMemory-System seitdem kontinuierlich weiterentwickelt. IBM hat zwei orignäre In-Memory-Produkte im Softwareprogramm: Das mit dem Cognos-Kauf 2008 übernommene System „TM1“ ist einer der ältesten In-Memory-Ansätze der Industrie. Applix, das 2007 von Cognos geschuckt worden war, hatte die Lösung bereits 1984 entwickelt. Außerdem hatte IBM im Jahr 2007 bereits mit „Solid DB“ eine In-MemoryLösung zugekauft. 27 Fazit Eine Antwort auf die Frage, welcher In-Memory-Ansatz der richtige ist, hängt von den individuellen Einsatzszenarien ab. Unternehmen sollten in jedem Fall alle technischen, organisatorischen und kostenrelevanten Besonderheiten differenziert betrachten – für eine Neuentwicklung wie auch bei einer Anwendungsmigration. Nur wenige Anwendungsfälle profitieren ohne weitere Anpassungen von In-Memory-Technik. Zudem werden Performance-Vorteile nicht bei allen Anwendungen möglich sein, manchmal kommt es sogar zu Leistungseinbußen. In einigen Fällen muss man auch mit funktionalen Einschränkungen leben. Vor der Einführung einer In-Memory-Datenbank sollte also eine gründliche Evaluation stattfinden. Auch im Falle einer vermeintlich einfachen Umstellung auf In-Memory-Technik innerhalb des vertrauten RDBMS ist es ratsam, die jeweils geeigneten Daten zu identifizieren und alle Anwendungsfälle ausführlich zu überprüfen. Fakt ist, dass die Lösungen in bestimmten Anwendungsszenarien sowohl im OLTP- als auch im OLAP-Bereich deutlich schneller und effizienter arbeiten als bisher übliche Techniken. Allerdings lassen sich nur sehr abgegrenzte Prozesse um die oben erwähnten Faktoren beschleunigen. Im Durchschnitt wird der Performance-Gewinn geringer ausfallen. Doch durch die In-MemoryTechnik lassen sich in vielen Fällen Kosten für Hardware und Lizenzen einsparen. Diese Kostensenkungen werden aber erst nach der Umsetzung sichtbar. Denn der Umstieg ist fast immer mit Applikationsanpassungen verbunden –der damit verbundene Aufwand muss in die Gesamtkostenrechnung einfließen. In-Memory-Datenbanken sind eine Bereicherung der Datenbankwelt. Aber sie eignen sich nicht für jeden Anwendungsfall und sollten vor dem Einsatz umfassend geprüft werden. beliebig miteinander kombiniert werden. Damit hat Microsoft zwei getrennte Lösungen für OLTP und Analysen im Programm. Oracle Database In-Memory Option Im Juli 2014 zog auch Oracle nach und stattete seine 12c-Datenbank mit einer kostenpflichtigen In-Memory-Zusatzoption aus. Diese besteht im Wesentlichen aus einem „In-Memory Column-Store“ zur Beschleunigung analytischer Abfragen, ist aber aufgrund der Bauart teilweise auch für OLTP-Anwendungsfälle einsetzbar. Die Oracle-Datenbank funktioniert ähnlich wie IBM BLU Acceleration und soll je nach Anwendungsfall Performance-Steigerungen von Faktor zehn bis 100 erreichen. Anders als andere Lösungen schreibt die Oracle-Datenbank jedoch keinerlei In-Memory-Daten auf Festplatte. Spaltenorientierte Datenhaltung, automatische Indexierung, Kompression – sämtliche Operationen laufen ausschließlich im Hauptspeicher ab. Alle Festplatten-relevanten Operationen werden mit den althergebrachten Mitteln abgewickelt und redundant, aber konsistent für die In-Memory-Strukturen mitgezogen. Daraus ergeben sich einerseits Nachteile wegen redundanter Ressourcenbelastung sowie der fehlenden Kompression auf Festplatte. Andererseits gibt es aber auch einen besonderen Vorteil dieser Vorgehensweise: „In-Memory“ ist bei Oracle lediglich ein Schalter, mit dem sich Tabellen oder auch nur Teile von Tabellen für In-Memory-Verarbeitung optimieren lassen. Es müssen also keine Daten migriert werden, um von den neuen Möglichkeiten zu profitieren. Gemeinsamkeiten und Unterschiede Die Stoßrichtung der klassischen großen Datenbankanbieter ist klar: Der Wechsel auf eine andere, separate In-Memory-Plattform wie SAP HANA soll künftig nicht mehr nötig sein. Im einfachsten Fall braucht der Administrator in bestehenden Datenbanken nur einen Schalter umzulegen, um alle Applikationen mit Hilfe von In-Memory-Funktionen um ein Vielfaches zu beschleunigen. Aber ist das wirklich realistisch? Es fällt schnell auf, dass alle neuen InMemory-Datenbanken ähnliche Mechanismen nutzen. Dazu gehören die spaltenorientierte Datenhaltung, automatisch erzeugte und hauptspeicheroptimierte Datenstrukturen sowie eine intensive Nutzung von CPU-Features und die Komprimierung von Daten im Hauptspeicher und/oder der Festplatte. Es gibt aber auch erkennbare Unterschiede der einzelnen Lösungen. Da ist zunächst die Frage einer Limitierung der Datenbankgröße durch den verfügbaren Hauptspeicher. SAP HANA und die SQL-Server-OLTP-Lösung von Microsoft müssen In-Memory-Daten spätestens bei der ersten Abfrage vollständig in den Hauptspeicher laden, während Oracle und IBM DB2 dies nicht erfordern und somit die Arbeit mit größeren Datenmengen vereinfachen. Hinzu kommt, dass bei Oracle Daten nicht in komprimierter Form auf Storage-Datenträger geschrieben werden. Sie müssen nach einem Restart der Datenbank wieder neu aufgebaut werden. Dieser Ansatz bietet zwar mehr Flexibilität bei der Administration und ein breiteres Einsatzspektrum, spart aber keinen Platz auf Datenträgern und erzeugt Redundanzen in der Verarbeitung. Und dann ist da noch die Art der nutzbaren Applikationsarten: Microsoft offeriert spezielle, OLTP-optimierte Tabellentypen, IBM hingegen Tabellentypen für rein analytischen Work­ load. SAP HANA unterscheidet mitunter nach Bedarf zwischen zeilen- und spaltenorientierter Datenhaltung und unterstützt beide Arten von Workload. Oracle platziert seine Lösung hauptsächlich für den analytischen Bereich, verspricht aber auch Verbesserungen für OLTP-Applikationen, weil weniger Indizes auf Tabellen nötig sind und somit der DataManipulation-Language-(DML-)Durchsatz verbessert werden soll. (ba)