Mehr Datenbank-Performance durch In-Memory

Data & StorageStorage
(Bild: Exasol)

Mit den immensen Mengen an Daten, die dank Digitalisierung in nahezu allen Unternehmensbereichen anfallen und ausgewertet werden sollen, kommt der Performance der Datenbank-Systeme eine wachsende Bedeutung zu. In-Memory-Datenbanken (IMDBs) nutzen den Hauptspeicher für die schnellere Verarbeitung und sind damit performanter als klassische diskbasierte Datenbanken. IMDB ist jedoch nicht gleich IMDB.

Im Hauptspeicher eines Servers werden Daten schnell verarbeitet. Klassische disk-basierte Datenbanken laden die für die entsprechende Anfrage notwendigen Daten vom Sekundärspeicher, wie etwa lokalen Festplatten, einem SAN-Speicher oder Ähnlichem.

Die verarbeitenden Algorithmen und Datenstrukturen sind dabei darauf ausgelegt, auch mit wenig Hauptspeicher auszukommen. Dies wird dadurch erreicht, dass die Algorithmen stets Teilergebnisse berechnen, persistieren und in mehreren Iterationen zusammenfügen können. Zusätzlich können teils mehrere Cache-Ebenen genutzt werden, die die Anzahl der Festplattenzugriffe reduzieren. Deshalb ist die Verarbeitung innerhalb einer disk-basierten Datenbank sehr komplex und besteht aus vielen Schritten.

Dr. Jens Graupmann, der Autor dieses Gastbeitrags, ist VP Product Management, Exasol AG (Bild: Exasol)
Dr. Jens Graupmann, der Autor dieses Gastbeitrags, ist VP Product Management, Exasol AG (Bild: Exasol)

In-Memory Datenbanken hingegen verwenden hocheffiziente Algorithmen und Datenstrukturen, die so konzipiert sind, dass möglichst wenige Verarbeitungsschritte durchzuführen sind. Auf diese Weise können Datensätze im Hauptspeicher durch direkte Speicherzugriffe adressiert werden. Die reduzierte Anzahl von CPU-Operationen in Kombination mit vereinfachten Zugriffs-Algorithmen und der überlegenen Geschwindigkeit des Hauptspeichers im Verhältnis zu Sekundärspeichern ermöglichen IMDBs eine deutlich höhere Performance.

In-Memory-Performance mit weniger Hauptspeicher

Grundsätzlich erfordern IMDBs einen Hauptspeicher, der ausreichend dimensioniert ist, um all die Daten zu fassen, die für die Ausführung einer Anfrage benötigt werden. Viele IMDBs verallgemeinern dies und halten stets alle Daten im Hauptspeicher. Trotz moderater RAM-Preise kann dies durchaus ein Kostentreiber sein. Zusätzlich ist es aber auch ein betriebsseitiges Problem: Wenn nämlich die Daten nicht mehr in den Hauptspeicher passen, kommt es zu Einschränkungen, da entweder die neuesten Daten nicht analysiert werden können oder auch ältere Daten früher als geplant gelöscht werden müssen. Erst durch eine Erweiterung des Hauptspeichers und möglicherweise auch der Datenbank-Lizenz kann dieser Engpass behoben werden. Falls der Server allerdings schon maximal mit Hauptspeicher bestückt und nicht durch zusätzliche Server skalierbar ist, werden umfangreichere Infrastruktur-Maßnahmen erforderlich.

Um die „Alles im RAM“-Strategie, wie sie beispielsweise bei SAP Hana zum Einsatz kommt, zu umgehen, ergänzt der Anbieter Exasol seine IMDB um weitere Ansätze aus dem High Performance Computing. Dabei ist In-Memory weniger eine einzelne, beschleunigende Technologie, sondern vielmehr Teil eines Gesamtkonzeptes. Dieses beruht zunächst auf der Tatsache, dass es zu keinem Zeitpunkt wirklich notwendig ist, alle permanenten und temporären Daten im Cache bereit zu halten. In der Praxis sind nur etwa ein Drittel der Gesamt-Datenmenge sogenannte „heiße Daten“, also solche, über die gerade Query, Joins oder Ähnliches laufen, häufig sogar noch deutlich weniger. Das wirkt sich auf die Dimensionierung des Hauptspeichers aus. Viel wichtiger ist jedoch die algorithmische Logik, die hinter der Bereitstellung der Daten steckt: Es kommt darauf an, dass die benötigten Daten im richtigen Moment im RAM zur Verfügung stehen, um mit voller Performance verarbeitet werden zu können.

(Bild: Exasol)

Damit dies funktioniert, setzt Exasol eine Reihe von Maßnahmen darauf auf. So minimieren Datenkompressions-Algorithmen beispielsweise die Anzahl der benötigten Zugriffe auf die diskbasierten Systeme und die notwendige Hauptspeicher-Größe. Mit automatischen Replikationsmechanismen sorgt das Datenbanksystem dafür, dass bestimmte Datenmengen (etwa die kleinere von zwei durch einen Join zusammenzuführende Tabellen) zugleich auf alle Maschinen eines Clusters repliziert werden. Dies beschleunigt Abfragen zum Teil erheblich. Außerdem nutzt das System Algorithmen, um den künftigen Data Access vorherzusagen. Dies muss über den gesamten Cluster hinweg funktionieren, damit die benötigten Daten sich genau dann bereits im Cache befinden, wenn die Verarbeitung starten soll. Nur im Zusammenspiel dieser Maßnahmen gelingt es, die Performance-Vorteile der In-Memory-Technologie zu nutzen, ohne Hauptspeicher für die gesamte Datenmenge vorhalten zu müssen. Das System ermittelt dabei im laufenden Betrieb durchgehend, ob es über ausreichend Hauptspeicher für eine optimale Performance verfügt. Ist das nicht so, wird es graduell langsamer, bleibt aber stets voll nutzbar. Basierend auf den Empfehlungen des Systems kann der Nutzer in Ruhe den Hauptspeicher aufrüsten oder es um zusätzliche Server erweitern.

In-Memory-Funktion per Knopfdruck zuschalten?

Die beiden beschriebenen Beispiele SAP Hana und Exasol sind Datenbanksysteme, die von vornherein als IMDBs entwickelt und mit den entsprechenden Algorithmen optimiert wurden. Wegen ihrer Performance-Vorteile gegenüber disk-basierten Datenbanken bieten inzwischen die meisten Hersteller klassischer Systeme In-Memory-Add-on-Optionen an. Oracle ergänzt dafür beispielsweise das herkömmliche Zeilenspeicherformat durch das für analytische Datenbanken typische Spaltenspeicherformat. Der Oracle SQL Optimizer nutzt bei analytischen Anfragen automatisch dieses Spalten- und bei OLTP-Anfragen das Zeilenformat.

Microsoft bietet für seinen SQL Server sowie das entsprechende Azure-Derivat eine In-Memory-OLTP-Funktion und verschiedene Columnstore-Indizes, die die möglichen Transaktionen pro Sekunde erhöhen und die Latenz bei der Verarbeitung sowie den Speicherplatzbedarf senken. Wer dies bei seiner vorhandenen Datenbank zuschalten möchte, muss allerdings genau hinsehen: Zum einen ist die Option nicht zwingend in jeder Version verfügbar. So weist Microsoft beispielsweise ausdrücklich darauf hin, dass In-Memory-OLTP in den Tarifen „Universell“, „Standard“ und „Basic“ nicht unterstützt wird. Zum anderen sollte am konkreten Anwendungsfall in einem Proof-of-Concept geprüft werden, ob sich mit einer Add-on-Option tatsächlich ein grundsätzlicher signifikanter Performance-Gewinn erzielen lässt. Zwar laufen eine ganze Reihe Anfragen mit In-Memory Add-on schneller, aber gleichzeitig reduziert sich die Einfüge-Performance häufig deutlich, so dass sich der Performance-Gewinn ganzheitlich betrachtet relativiert.

Denn das Add-on ändert die gesamte Arbeitsweise des Datenbanksystems nicht grundlegend. Und eben weil sie ein Add-on ist, konkurriert die In-Memory-Funktion mit der eigentlichen Datenbank um den Hauptspeicher. Dennoch muss die bestehende Datenbank nicht zwingend ersetzt werden, um in den Genuss der In-Memory-Vorteile zu kommen: In vielen Anwendungsfällen erweist sich die Ergänzung durch eine zusätzliche native IMDB als sinnvoll.

Noch mehr Performance durch MPP

Gerade wenn es um die Verarbeitung von großen Datenmengen mit hoher Performance geht, kommt immer häufiger Massive Parallel Processing (MPP) ins Spiel. Dabei werden Anfragen auf mehreren Servern parallel verarbeitet. IMDBs profitieren von dieser Technologie, da sich durch das Zusammenschalten mehrerer Server und Cluster die Menge an Hauptspeicher schnell multiplizieren lässt. Dahinter steht üblicherweise eine Shared-Nothing-Architektur – jeder Knoten arbeitet unabhängig mit seinen eigenen Kapazitäten, die Kommunikation erfolgt über das Netzwerk. Unterstützt eine Datenbank das SPMD-Prinzip (Single Program, Multiple Data) heißt das konkret, dass dasselbe Programm zur gleichen Zeit auf mehreren Servern ausgeführt wird, jeder Server aber verschiedene Daten verarbeitet. Anfragen mit großen Datenmengen werden so verteilt und alle Teilrechnungen gleichzeitig ausgeführt. Zusätzlich parallelisieren moderne Multi-Core-Shared-Memory-Architekturen auf Server- bzw. CPU-Ebene, was zu einer maximalen Ausnutzung der Hardware führt.

Fazit

Eine hohe Performance bei der Verarbeitung von riesigen Datenmengen bildet die Grundlage für die Datenanalyse. Denn Geschäftsentscheidungen sind zunehmend datengetrieben. Analysen, Prognosen und Berechnungen sollen auf Knopfdruck zur Verfügung stehen, top-aktuell und umfassend. Es geht dabei nicht nur darum, den Überblick über das Geschäft zu behalten. Vielmehr lassen sich Prozesse so in Echtzeit steuern und Marktdynamiken unmittelbar einbeziehen. Auch ist Performance für viele Use-Cases, beispielsweise im Bereich IoT oder vielen dynamischen KI-Szenarien unabdingbar.
In-Memory-Datenbanken sind eine hoch-performante Ergänzung oder Alternative zu klassischen diskbasierten Datenbanken. Anbieter von IMDBs setzen dabei nicht nur auf den schnellen Hauptspeicher, sondern ergänzen ihre Konzepte durch performance-optimierende Algorithmen.

Autor
Erfahren Sie mehr 
VP Product Management
Exasol AG
Erfahren Sie mehr