Die Datenmengen, die Organisationen verarbeiten, erfordern einen schnelleren Datenzugriff und eine rasche Verarbeitung. Datendenormalisierung ist eine weit verbreitete Technik, die Datenbankabfragen beschleunigt.
Dieser Artikel behandelt Datennormalisierung, ihre Bedeutung und wie sie sich von Datennormalisierungs- und Denormalisierungstechniken unterscheidet. Die Vor- und Nachteile dieses Ansatzes betrachten wir ebenfalls.
Datendenormalisierung bezeichnet das Einführen von Redundanz in zuvor normalisierte Datenbanken zur Optimierung der Abfrageleistung. Dabei entstehen mithilfe verschiedener Techniken einige vorberechnete Redundanzen, die Probleme bei normalisierten Daten lösen. Zu diesen Techniken zählen:
Datendenormalisierung führt jedoch zu einem Kompromiss aus Schreib- und Leseleistung.
(Versteht den Unterschied zwischen Datenbanken und Data Warehouses und wie CMDBs funktionieren.)
Betrachten wir zunächst eine normalisierte Datenbank. Eine normalisierte Datenbank enthält jede Information nur einmal, wobei sich zusammengehörige Daten in separaten Tabellen befinden. Um Daten aus mehreren Tabellen zu kombinieren und in realen Anwendungen zu verwenden, müsst ihr Abfragen stellen.
Nehmen wir aber einmal an, dass die Datenmenge steigt oder komplexe Abfragen stattfinden, die mehrere Tabellen miteinander verknüpfen. In diesen Fällen kann die Leistung der Datenbank erheblich sinken – bis hin zu Abstürzen.
Nehmen wir als Beispiel an, dass ihr einen Online-Shop betreibt, in dem Kunden Produkte bestellen können. Eine solche E-Commerce-Plattform speichert normalerweise Kundendaten in einer Tabelle und Bestelldaten in einer anderen. Die Bestelldatentabelle enthält einen Fremdschlüssel zur Kundendatentabelle für die Verknüpfung mit den Kundeninformationen.
Angenommen, die Website soll alle Bestellungen eines Kunden anzeigen. Ein normalisierter Datenspeicher müsste dafür eine Verbindung zwischen Bestell- und Kundentabellen herstellen. Stellt euch weiter vor, der Online-Shop hätte ein hohes Aufkommen an Bestellungen und Kunden. In diesem Fall könnte diese Verknüpfungsoperation rechenintensiv sein und die Website verlangsamen.
In diesem Beispiel können wir Datendenormalisierung einführen, um die Leistung unter solchen Umständen zu verbessern. Ihr habt zwei Möglichkeiten:
Datennormalisierung ist der Prozess, der Datenredundanz beseitigt, indem genau eine Kopie jeder Information in Tabellen gespeichert wird. Sie behält die Beziehungen zwischen Daten bei und eliminiert unstrukturierte Daten. Es gibt hauptsächlich vier Arten der Datennormalisierung: erste, zweite und dritte Normalform sowie die Boyce-Codd-Normalform (3.5NF).
Eine normalisierte Datenbank hilft bei der Standardisierung der Daten in der Organisation und gewährleistet eine logische Datenspeicherung. Normalisierung bietet Organisationen auch saubere Datensätze für verschiedene Prozesse, verbessert die Abfrageantwortzeit und reduziert Datenanomalien.
Die Unterschiede zwischen Datendenormalisierung und -normalisierung lassen sich in zwei Hauptpunkten zusammenfassen:
Datenbankadministratoren verwenden verschiedene Denormalisierungstechniken – je nach Szenario. Behaltet im Hinterkopf, dass diese Techniken Vor- und Nachteile haben. Hier folgen einige Beispiele für Datennormalisierungstechniken, die Datenbankspezialisten verwenden:
Diese Technik eignet sich für aufwendige Verknüpfungsoperationen und häufig genutzte Daten aus mehreren Tabellen. Dabei werden die häufig genutzten Daten zu einer Tabelle hinzugefügt.
Nehmen wir zum Beispiel an, es gibt zwei Tabellen namens „Kunde“ und „Bestellung“. Wenn ihr Kundenbestellungen zusammen mit den Namen sehen wollt, reduziert das Hinzufügen des Kundennamens zur Bestelltabelle den aufwendigen Verknüpfungsvorgang. Dies führt allerdings zu erheblichen Redundanzen. Hier eine Darstellung:
Beim Tabellen-Splitting wird eine Tabelle in mehrere kleinere Tabellen zerlegt, um diese einfacher abfragen und verwalten zu können. Tabellen-Splitting ist auf zwei Arten möglich: horizontale und vertikale Aufteilung.
Aufteilung der Tabellenzeilen in kleinere Tabellen. Jede Tabelle verfügt über die gleichen Spalten. Dieser Ansatz eignet sich, wenn sich Datentabellen nach Regionen, physischen Standorten, Aufgaben und vielen weiteren Aspekten trennen lassen.
Stellt euch zum Beispiel eine Tabelle mit Studierendendaten aller Fachbereiche einer naturwissenschaftlichen Fakultät vor. Wie die Grafik zeigt, lässt sich diese Tabelle nach Fachbereichen wie Informatik, Chemie, Mathematik und Biologie aufteilen.
Dabei muss im Vergleich zur ursprünglichen Tabelle nur ein kleinerer Datensatz abgefragt werden. Diese Technik ermöglicht somit schnellere Abfragen auf Fachbereichsebene.
Beim vertikalen Splitting erfolgt die Aufteilung nach Spalten, wobei der Primärschlüssel auf jede Partition angewendet wird.
Nehmen wir an, ein Krankenhaus führt beispielsweise eine Patiententabelle mit den Spalten „Patienten-ID“, „Name“, „Adresse“ und „Krankengeschichte“. Wir können daraus durch vertikale Partitionierung zwei neue Tabellen erstellen: „Patientendaten“ und „Krankengeschichte“, wie in der Abbildung unten dargestellt.
Dieser Ansatz eignet sich besonders, wenn auf bestimmte Tabellenspalten häufiger zugegriffen wird als auf andere. Das ermöglicht es, nur die erforderlichen Attribute abzurufen und unnötige Daten zu eliminieren.
Betrachten wir das folgende Beispiel. Angenommen, es gibt zwei Tabellen: „Studierende“ und „Noten“:
Wenn die Anwendung die Anzeige der Gesamtnoten für die Schüler mit deren Details erfordert, können wir eine neu abgeleitete Spalte hinzufügen, die die Gesamtnoten für alle Aufgaben für jeden Schüler enthält. Dadurch muss die Datenbank nicht jedes Mal die Gesamtnoten berechnen, wenn eine Abfrage erfolgt.
Bei dieser Technik entsteht eine vollständige oder teilweise Kopie einer vorhandenen Tabelle, die an einem separaten Speicherort abgelegt und für schnellere Abfragen optimiert wird. Die gespiegelte Tabelle dient in der Regel für leseintensive Workloads unter Einsatz von Techniken wie zusätzlichen Indizes und Datenpartitionierung. Diese gespiegelte Tabelle ermöglicht leseintensive Prozesse wie Analyseabfragen.
Der Ansatz erfordert das Replizieren von Datenbanken und deren Speicherung entweder in separaten Datenbankinstanzen oder auf einem physischen Server. Dies ist jedoch mit einer gewissen Komplexität verbunden, da mehrere Datenkopien verwaltet und synchronisiert werden müssen. Das kann kostspielig sein und mehr Ressourcen erfordern.
Materialisierte Views (materialisierte Ansichten) sind vorberechnete Abfrageergebnisse, die in einer separaten Tabelle gespeichert werden. Dabei handelt es sich in der Regel um „Join“- und „Aggregation“-Abfragen, die ziemlich aufwendig sind, aber häufig benötigt werden. Beim nächsten Mal kann die Datenbank die Daten bei Bedarf aus der Ansicht abrufen, anstatt die gleiche Abfrage wiederholt auszuführen.
Die Datendenormalisierung bietet Organisationen mehrere Vorteile.
Das Abfragen von Daten aus einem normalisierten Datenspeicher kann – je nach Anforderung – mehrere Verknüpfungen aus verschiedenen Tabellentypen erfordern. Mit wachsendem Datenvolumen verlangsamt sich die Ausführung von Join-Operationen. Dies kann die Benutzererfahrung negativ beeinträchtigen – besonders dann, wenn solche Operationen häufig genutzte Funktionen betreffen.
Die Datendenormalisierung ermöglicht es uns, die Anzahl der Verknüpfungen zwischen Tabellen zu reduzieren, indem wir häufig abgerufene Daten in redundanten Tabellen vorhalten.
Datendenormalisierung vereinfacht Abfragen, indem sie die Anzahl der Verknüpfungsabfragen verringert. Entwickler und andere Anwender können dadurch einfacheren, leicht zu wartenden Code schreiben. Selbst unerfahrene Entwickler können die Abfragen verstehen und Abfragen einfach durchführen.
Diese Einfachheit trägt zudem dazu bei, Fehler bei Datenbankoperationen deutlich zu reduzieren.
Die Denormalisierung reduziert die Anzahl der Datenbanktransaktionen beim Lesen der Daten. Dieser Ansatz erweist sich als besonders nützlich, wenn eine hohe Nutzerzahl zu einer starken Belastung durch Datenbanktransaktionen führt Die geringere Anzahl an Transaktionen ermöglicht es, unterschiedliche Nutzerlasten zu bewältigen, was die Skalierbarkeit von Anwendungen verbessert.
Organisationen nutzen Daten zur Erstellung zahlreicher Berichte wie Nutzungsstatistiken und Verkaufsauswertungen. Die Erstellung solcher Berichte erfordert häufig Datenaggregation und -zusammenfassung durch das Durchsuchen des gesamten Datensatzes. Denormalisierungstechniken wie gespiegelte Tabellen ermöglichen es Firmen, die Datenbanken speziell für die tägliche Berichterstellung zu optimieren, ohne die Leistung der Mastertabellen zu beeinträchtigen.
Wie bereits erörtert, bietet die Datendenormalisierung mehrere Vorteile. Diese Technik hat jedoch auch Schattenseiten, die ihr bei der Anwendung im Hinterkopf behalten solltet.
Datennormalisierung entfernt redundante Daten. Gleichzeitig entstehen bei der Denormalisierung redundante Daten in normalisierten Datenbanken, um die Leseleistung auf Kosten der Aktualisierungs- und Einfügeleistung zu verbessern. Es gibt verschiedene Denormalisierungstechniken, etwa die Partitionierung von Tabellen sowie die Einführung abgeleiteter und vorab verknüpfter Tabellen. Zu den Vorteilen dieser Technik gehören eine verbesserte User Experience, eine höhere Abfrageleistung und Skalierbarkeit, eine schnellere Berichterstattung sowie eine geringere Datenkomplexität.
Die Denormalisierung bringt jedoch auch Nachteile wie Datenredundanz, höhere Komplexität, Wartungs- und Speicherkosten sowie Dateninkonsistenzen mit sich.
Ihr habt einen Fehler entdeckt oder eine Anregung? Bitte lasst es uns wissen und schreibt eine E-Mail an ssg-blogs@splunk.com.
Dieser Beitrag spiegelt nicht zwingend die Position, Strategie oder Meinung von Splunk wider.
Weltweit führende Unternehmen verlassen sich auf Splunk, ein Cisco-Unternehmen, um mit unserer Plattform für einheitliche Sicherheit und Observability, die auf branchenführender KI basiert, kontinuierlich ihre digitale Resilienz zu stärken.
Unsere Kunden vertrauen auf die preisgekrönten Security- und Observability-Lösungen von Splunk, um ihre komplexen digitalen Umgebungen ungeachtet ihrer Größenordnung zuverlässig zu sichern und verbessern.