Analytische Datenbanken - Überblick zur Datenbanktechnologie

Was sind analytische Datenbanken, wie arbeiten sie und welche Vorteile und Nachteile bieten sie?

Geodaten, Sensordaten, Social Media etc. – Unternehmen stehen immer mehr Informationen und Daten über Produkte, Märkte und potenzielle Kunden zur Verfügung. Die Verarbeitung, Aufbereitung und Nutzung der gesammelten Daten stellt für viele Unternehmen jedoch ein Problem dar. Sie wissen nicht, wie sie mit der Datenflut angemessen umgehen sollen. Wertvolle Informationen bleiben so verborgen und ungenutzt.

Big Data und Data Mining sind die Zauberwörter, um unbekannten und versteckten Mustern auf die Schliche zu kommen. Aber wie sollen diese Unmengen an Daten verarbeitet werden? Oft stellt sich auch die Frage, ob sich der zeitliche und personelle Aufwand überhaupt lohnen, da mit der Einführung von Big Data oder Data Mining meist eine Neu- oder Weiterentwicklung bestehender Systeme einhergeht. Zudem sind für die Datenauswertung Regeln, Kennzahlen und im Falle von Data Mining Fragen durch den Fachbereich zu entwickeln. Auch die Dauer der Auswertungen nimmt zu. Wer mit Business Intelligence (BI)-Systemen arbeitet weiß, dass mit zunehmender Datenmenge die Geschwindigkeit der Abfragen signifikant abnimmt.

Vor allem mittlere und große Unternehmen setzen bereits auf Data-Warehouse (DWH)-Lösungen. Durch das zunehmende Datenaufkommen und die komplexer werdenden Analysen stoßen diese jedoch an ihre Grenzen. Die Fragen, die sich viele IT-Verantwortliche und IT-Mitarbeiter stellen, sind sicherlich: Welche Soft- und Hardware wird für die zunehmenden analytischen Anforderungen benötigt? Wie könnte man bestehende Datenbanksysteme oder BI-Tools anpassen? Eine Antwort auf diese Fragen könnten analytische Datenbanken sein. Mit deren Einsatz ist es möglich, individuelle Anforderungen an die Datenanalyse umzusetzen. Vor der Umsetzung sollte jedoch eine Evaluierung stattfinden, um ein geeignetes Datenbanksystem zu wählen.

Was ist eine analytische Datenbank?

Zunächst der Hinweis, dass analytische Datenbanken keine Erfindung der Gegenwart sind – es gibt sie schon seit einigen Jahren. Aufgrund der Sicherheit und Zuverlässigkeit von klassischen relationalen Datenbanksystemen konnten sich diese allerdings bisher nicht durchsetzen.

Analytische Datenbanken sind, wie der Name vermuten lässt, für analytische Zwecke optimiert. Sie sind in der Lage, innerhalb kurzer Zeit riesige Datenmengen zu verarbeiten. Sie können auch im Mehrbenutzerbetrieb und unter einer hohen Abfragefrequenz schnell Ergebnisse liefern.

Analytische Datenbanken können, wie herkömmliche Datenbanken auch, in verschiedenartige Anwendungen bzw. Systeme integriert werden. Sie weisen jedoch einige Besonderheiten auf. An dieser Stelle ist die Reduzierung der Festplattenzugriffe, die massiv-parallele Verarbeitung von Daten und die Abstimmung und Optimierung von Algorithmen zu nennen.

Um die analytischen Fähigkeiten einer Datenbank zu verbessern, kommen verschiedene Techniken und Verfahren zur Datenspeicherung zum Einsatz.

Optimierung relationaler Datenbanksysteme

Im Folgenden werden die Erstellung materialisierter Sichten und die physische Datenorganisation kurz beschrieben. Deren Einsatz kann bereits zu einer deutlichen Verbesserung der Abfrage-Performance führen.

Materialisierte Sichten

Werden Daten regelmäßig und kurzfristig für die Erstellung von Berichten benötigt, könnten materialisierte Sichten erzeugt werden. Diese haben den Vorteil, dass sie nicht bei jeder Anfrage neu generiert werden müssen.

Bei materialisierten Sichten, auch MatViews genannt, handelt es sich um spezielle Tabellenstrukturen, die Kopien von Sichten beinhalten, die zu einem bestimmten Zeitpunkt gespeichert wurden. Sie dienen als Cache bei der Abfrage von Daten. Die Selektion der Daten erfolgt hierbei zunächst durch Views, deren Aggregationen, Umschlüsselungen und Umbenennungen einmalig ausgeführt und anschließend in der MatView gespeichert werden. Bei der Generierung von Berichten können die aggregierten Daten einfach und ohne zusätzlichen Berechnungsaufwand abgerufen werden. Das beschleunigt nicht nur den Zugriff, sondern führt auch zur Lastverringerung.

Im Gegensatz zu einer normalen View, die stets den aktuellsten Datenstand zur Selektion verwendet, kann die MatView nur auf die Daten zugreifen, die bei der Erstellung gespeichert wurden. Daher ist eine regelmäßige Aktualisierung der MatView notwendig, die entweder manuell oder automatisiert, zum Beispiel mit Triggern, durchgeführt werden kann. Die Vorteile einer MatView liegen darin, dass diese bei der Generierung von Ausführungsplänen vom Anfrageoptimierer berücksichtigt wird und die Selektion der Daten nicht bei jeder Abfrage neu ausgeführt werden muss.

Physische Datenorganisation

Ein weiterer Ansatz ist es, die physische Datenorganisation anzupassen. Häufig verwendete Datensätze bzw. Teildatensätze können nahe beieinander, in einem Block oder in nebeneinander liegenden Blöcken, abgespeichert werden, siehe Abbildung 1. Werden die Daten von der Festplatte eingelesen, ist die Wahrscheinlichkeit sehr groß, dass zu einem späteren Zeitpunkt benötigte Datenblöcke schon im Hauptspeicher sind oder der Zugriff auf benachbarte Blöcke wesentlich schneller erfolgt. Das erhöht die Antwortzeiten des Datenbanksystems um ein Vielfaches, da zusätzliche, teure Festplattenzugriffe entfallen.
 
Festplattenstruktur
Abbildung 1: Plattenstruktur: (A) Spur (auch Zylinder), (B) Sektor, (C) Block, (D) Cluster; Quelle Wikipedia: http://commons.wikimedia.org/wiki/File%3ADisk-structure2.svg  

Des Weiteren können Partitionierungen, Datei- und Tabellen-Indizierungen sowie Lastverteilungen für die Datenbankanfragen durchgeführt werden.

Aufbau analytischer Datenbanken

Neben den bereits genannten Optimierungen für Datenbanken, besitzen analytische Datenbanksysteme spezielle Mechanismen und Designs. Die bekanntesten sind spaltenorientierte Datenbanken, parallele Datenverarbeitung und die Kombination mit der In-Memory-Technik.

Spaltenorientierte Datenbanken

Ein spaltenorientiertes Datenbankmanagementsystem (DBMS) ist in der Lage, Daten mit sehr hoher Geschwindigkeit zu lesen. Im Gegensatz zu relationalen Datenbanken werden die Datensätze nicht zeilenweise gespeichert, sondern die einzelnen Spalten einer Tabelle. Mit dieser Vorgehensweise sollen langsame Festplattenzugriffe vermieden werden.

Der Ablauf sei anhand eines Beispiels kurz erklärt: Bei der Abbildung von Daten auf Relationen wird ein Datensatz als Zeile und ein Attribut des Datensatzes als Spalte gespeichert. Die zeilenbasierte Speicherung ist die am weitesten verbreitete Speicherungsform. In Abbildung 2 ist beispielhaft eine Mitarbeiter-Tabelle dargestellt:

 Mitarbeiter-Tabelle
Abbildung 2: Mitarbeiter-Tabelle, Quelle: TREvisto GmbH

Bei den klassischen zeilenorientierten DBMS werden die kompletten Datensätze nacheinander in einen Block oder ein Cluster der Festplatte geschrieben. Diese können nach einem Schlüssel sortiert abgelegt werden, meist erfolgt jedoch eine unsortierte Speicherung. Die Verarbeitung sieht wie folgt aus:

     1,Johann,Schulze,DBA,3500;2,Gustav,Gans,Support,2500;3,Frida,Müller,Buchhaltung,3000;4,Karla,Kraus,Vertrieb,4000;

In spaltenorientierten DBMS werden anstatt der Zeilen die Spalten sequentiell persistiert. Das heißt, dass alle Ausprägungen eines Attributs gespeichert werden. Nach diesem Prinzip werden die Spalten einer Tabelle nach und nach gespeichert. Im Vergleich zum zeilenorientierten DBMS sieht die Verarbeitung wie folgt aus:

     1,2,3,4;Johann,Gustav,Frida,Karla;Schulze,Gans,Müller,Kraus;DBA,Support,Buchhaltung,Vertrieb;3500,2500,3000,4000;

Der Vorteil der spaltenorientierten Verarbeitung liegt darin, dass Berechnungen auf einzelne Spalten sehr schnell sind. Eine Anfrage an die Datenbank, die das größte monatliche Gehalt - max(Gehalt) - unter allen Mitarbeitern ermitteln soll, muss nur die Spalte Gehalt durchsuchen. Diese liegt bezogen auf die Beispieltabelle in einem Block, siehe Abbildung 3. Um eine Auswertung durchzuführen, muss nur ein Block durch einen Festplattenzugriff geladen werden.
 
Block 1
Abbildung 3: Block im spaltenorientiertem DBMS, Quelle: TREvisto GmbH

In einer zeilenorientierten Datenbank müssten zunächst alle Datensätze geladen und die Werte in der Spalte Gehalt abgeglichen werden. Dadurch käme es zu erhöhten Zugriffszeiten, da mehrere Blöcke von der Festplatte gelesen werden müssen. Unter der Annahme, dass nur zwei Datensätze aus der Tabelle Mitarbeiter in einen Block passen, werden insgesamt zwei Blöcke zur Speicherung benötigt. Beide Blöcke müssen in den Hauptspeicher eingelesen werden, wodurch vereinfacht angenommen zwei Festplattenzugriffe notwendig sind.

Blocl zeilenorientiertes-DBMS
Abbildung 4: Block im zeilenorientiertem DBMS, Quelle: TREvisto GmbH

Mit der spaltenbasierten Speicherung werden die Daten gezielt für Analysen bereitgestellt, was maßgeblich zur Steigerung der Performance beiträgt. Zum Einsatz kommt der spaltenorientierte Ansatz unter anderem bei den Datenbanksystemen Hadoop HBase von Apache, Vertica und Sybase IQ von SAP.

Parallele Datenverarbeitung

Bei der parallelen Datenverarbeitung werden herkömmliche Datenbanken eingesetzt, die auf spezieller Hardware implementiert werden.

Diese auch als Appliance bezeichneten Systeme sind zum Teil vollständig vorkonfiguriert und für Analyseaufgaben optimiert. Bei parallelen Datenbanksystemen werden die Zugriffe und Berechnungen gleichzeitig auf mehreren Prozessoren verteilter Systeme synchronisiert und durchgeführt. Dadurch ist eine Parallelisierung von Transaktionen möglich. Sie verwenden spezialisierte Algorithmen und Zugriffsmethoden zur parallelen Anfrageverarbeitung. Der Anwender muss sich um die physische Speicherung und die notwendigen Hardwareressourcen kaum Gedanken machen, da die Skalierung und Lastverteilung automatisiert sind. Der Hersteller bietet in der Regel eine anwendungsspezifische Appliance an. Bekannte Vertreter sind unter anderem DB2 von IBM, Exadata von Oracle und Teradata.

Kombination mit In-Memory-Strategie

Eine weitere Variante ist die Kombination aus spaltenorientierten Datenbanksystemen, die zum Teil als Appliance auf spezieller Hardware angeboten werden, und der Einsatz von In-Memory-Techniken. Bei einer In-Memory-Datenbank werden die Daten komplett im Hauptspeicher (HSP) gehalten und verarbeitet. Die Verarbeitungsgeschwindigkeit nimmt dadurch deutlich zu, wodurch analytische Anfragen und massiv parallele Zugriffe schnell verarbeitet werden können. Die In-Memory-Technologie verzichtet dadurch auf langsame und aufwendige Festplattenzugriffe, die es bei herkömmlichen Datenbanksystemen gibt. Diese können lediglich einige Seiten im HSP halten und müssen mit einer Seitenersetzungsstrategie, die bestimmt, welche Daten im HSP ersetzt werden können, Daten von der Festplatte laden und wieder speichern. Dabei benötigen die Festplattenzugriffe die meiste Zeit bei der Datenverarbeitung. Um bei einem Systemabsturz oder einem Hauptspeicherfehler, der HSP ist ein flüchtiger Speicher, keine Daten in der In-Memory-Datenbank zu verlieren, müssen geeignete Recovery-Maßnahmen, wie zum Beispiel Protokolldateien, implementiert werden. Die bekanntesten Vertreter von In-Memory-Datenbanken sind EXASOL, Smart Analytics Engine von IBM und HANA von SAP.

Vor- und Nachteile analytischer Datenbanken

Vorteile

Da analytische Datenbanken hinsichtlich der Analyse optimiert sind, leisten sie einen großen Beitrag bei der Auswertung von Datenmengen im Bereich von mehreren hundert Gigabyte und mehr, wodurch die gewünschten Informationen schneller zur Verfügung gestellt werden können. Darüber hinaus sind sie für einen starken Mehrbenutzerbetrieb optimiert. Des Weiteren sind die DBMS analytischer Datenbanken so konzipiert, dass sie ihre internen Strukturen selbst analysieren und anpassen können. So führen analytische DBMS unter anderem automatische und kontinuierliche Restrukturierungen und Indizierungen durch, um den Zugriff auf Daten zu optimieren. Eingriffe zur Performanceoptimierung und in das physische Datenbankdesign sind kaum noch notwendig. Unabhängig davon sind auch bei einer analytischen Datenbank das fachliche und logische Design im Vorfeld genauestens zu planen.

Nachteile

Einen direkten Nachteil gibt es bei analytischen Datenbanken nicht. Es ist jedoch zu beachten, dass sie nicht darauf ausgelegt sind, schnelle Schreibzugriffe auf der Datenbank durchzuführen. Daher sind sie als Transaktionsdatenbanken gänzlich ungeeignet und müssen als zusätzliches System verstanden werden, für die zusätzliche Investitionen notwendig sind. Sie dienen einzig dem Zweck der Analyse von Daten und werden dahingehend entwickelt und optimiert.

Fazit

Analytische Datenbanken unterstützen Anwender und Unternehmen Herr ihrer Datenberge zu werden. Der Ansatz von Analysedatenbanken wurde wiederentdeckt und mit Hilfe neuester Technik erweitert und verbessert. Unternehmen sind dadurch in der Lage, in kurzer Zeit eine solide Basis für die Datenanalyse aufzubauen, speziell mit dem Einsatz von Appliances. Die aufwändige Performanceoptimierung bestehender Systeme ist mit analytischen Datenbanken nicht mehr notwendig.

Kontakt: Mandy Goram, Consultant, TREvisto GmbH, Mandy.Goram@trevisto.de
www.trevisto.de/leistungen
www.trevisto.de