Data Modeling als Missing Link zwischen Datenbanken und Applikationen Datenbank-Abfragen mit Datenmodellierung beschleunigen

Autor / Redakteur: Steffen Schneider * / Stephan Augsten

Datenmodellierung ist entscheidend für das reibungslose Zusammenspiel von Applikationen und Datenbanken. Schließlich hassen Anwender lange Wartezeiten und wollen, dass ihnen Informationen umgehend zur Verfügung stehen.

Firmen zum Thema

Die Performance und Variabilität von Datenbank-Abfragen lässt sich mit Data Modelling deutlich steigern.
Die Performance und Variabilität von Datenbank-Abfragen lässt sich mit Data Modelling deutlich steigern.
(© monsitj - stock.adobe.com)

Datenmodelle sind grundlegende Datenmanagement-Einheiten, in denen Daten abgespeichert und wieder zur Verfügung gestellt werden. Gleichzeitig sind sie das Bindeglied zwischen Datenbanken und Anwendungen. Die strukturierte Speicherung gestattet Applikationsentwicklern, den gezielten Zugriff auf die Daten in ihren Programmen zu implementieren.

Die Art und Weise, wie sie in Datenbanken gespeichert werden hängt in der Regel von den Vorgaben ab, die in den Service Level Agreements (SLA) der Geschäftsapplikation festgelegt sind. Die Datenbank übernimmt dabei die Datenverwaltung und -prozessierung sowie Feature-Bereitstellung für die Apps.

Ziel ist es, die Lese- und Schreibzugriffe der Applikationen mit möglichst niedriger Latenzzeit von wenigen Millisekunden bearbeiten zu können, und den Kunden so eine möglichst komfortable Nutzerfahrung mit minimierten Wartezeiten möglich zu machen. Hat eine Anwendung beispielsweise eine Verteilung von 70 Prozent Read- und 30 Prozent Write-Vorgängen, wird das Datenmodell idealerweise genau darauf auslegt.

Die größten Zeitfresser bei der Datenprozessierung sind JOIN-Operationen. Sie können beispielsweise dann notwendig sein, wenn in der Datenbank mehrere Adressen eines Kunden gespeichert sind. Eine optimierte Datenmodellierung wird also versuchen, diese JOIN-Zugriffe zu reduzieren.

In relationalen Datenbank-Systemen (RDBMS) sind sie jedoch unvermeidlich. Sobald ein Attribut (wie die besagte Adresse) mehrmals auftaucht, müssen Referenzen ausgelagert und wieder zusammengeführt werden. All diese JOINs kosten Zeit und die Applikation muss warten, bis sie abgeschlossen sind.

JSON-Dokumente als Wunschobjekte

In NoSQL-Datenbanken dagegen sind Daten nicht in starren Tabellen, sondern in JSON-Dokumenten gespeichert. Darin sind alle Daten bereits vorhanden. JOIN-Operationen sind nur dann notwendig, wenn die Informationen über mehrere Dokumente verteilt sind. Jedes JSON-Dokument ist aus Sicht der Anwendung ein Objekt.

Objektbasierte Programmiersprachen wie Python, Java, C++ oder C# präferieren bei der Programmierung und Ausführung von Applikationen solche Datenbankobjekte wie JSON. Und auch die damit arbeitenden Entwickler denken nicht in Relationen, sondern in Objekten. Die Datenmodellierung in Form von JSON-Dokumenten erleichtert ihnen daher die Arbeit enorm. Dabei kann aus der Applikationsentwicklung heraus das Datenmodell einer NoSQL-Datenbank definiert und implementiert werden.

Beispiele für die primären Datenstrukturen in NoSQL-Datenbanken: Maps, Lists, Sets und Queues.
Beispiele für die primären Datenstrukturen in NoSQL-Datenbanken: Maps, Lists, Sets und Queues.
(Bild: Couchbase)

Noch einen Schritt weiter gehen NoSQL-Datenbanken, die die Datenmodellierung direkt aus der Applikation heraus gestatten – und das in Echtzeit. Sie kann zur App-Laufzeit optimiert werden, ohne dass ein Datenbank-Administrator eingreifen muss. So wird ein neues Attribut in einem JSON-Dokument, wie beispielsweise ein Twitter- oder LinkedIn-Nickname, einfach übernommen, ohne dass die Datenstruktur aufwändig geändert werden müsste.

Administratoren definieren die Frameworks

Auch wenn Datenbank-Administratoren dadurch von vielen Routineaufgaben entlastet werden, überflüssig werden sie keinesfalls. Ihre Aufgabe ist es, in der Rolle als Data Engineer über die Applikationen hinweg auf eine Harmonisierung der von den verschiedenen Anwendungen gewählten Datenstrukturen und Datentypen zu achten, so dass sie zueinander kompatibel und interoperabel sind. Die Überlegungen gehen also in Richtung eines Datenmodell-Frameworks auf Basis von Best Practices für die jeweiligen Anforderungen des Unternehmens.

Eine gute Datenbank hilft dabei mit sogenannten Query- und Index-Plannern und -Advisors. Sie geben Hinweise zu konkreten Datenbankabfragen und helfen während der Applikationsentwicklung bei der Aufdeckung von potenziellen, latenzverursachenden Bottlenecks. Query- und Index-Advisor bieten dann entsprechende Vorschläge an, wie diese Bottlenecks vermieden oder umgangen werden können – immer auf Basis des gewählten Datenmodells oder Frameworks.

Hilfe durch Full-Text-Search

Für Abfragen in Umgangssprache, wie sie typischerweise in Suchmaschinen genutzt werden, ist Full-Text-Search (FTS) innerhalb der Datenbank ein wertvolles Feature. Es ist zwar nicht direkt Teil des Datenmodells hilft aber, die Performance von Indizes zu erhöhen und damit ebenfalls Latenzen zu reduzieren.

FTS gleicht unscharfe, in der Regel sehr zeitaufwändigen LIKE-Abfragen in SQL, bei denen nicht gezielt nach einem Begriff, sondern nach Begriffskomplexen gesucht wird, wie beispielsweise „Buch“, „Bücher“, „Büchern“, … Dafür wird von der FTS-Funktion ein Reverse Index gebildet, der die Suche in parallel erfolgende Einzelabfragen stückelt und so enorm beschleunigt.

Steffen Schneider
Steffen Schneider
(Bild: Couchbase)

Als positiver Nebeneffekt lässt sich die Begriffsbreite einfacher erweitern, im Beispiel etwa auch „Bücherei“ erfassen. Eine Datenbankplattform, die sowohl applikationsgesteuerte Datenmodelle, als auch FTS unterstützt ist die Voraussetzung dafür, den Wunsch der Anwender nach möglichst latenzfreien Antworten auf ihre Abfragen zu erfüllen.

* Steffen Schneider ist Head of Solutions Engineering Central Europe bei Couchbase

(ID:47476052)