www.wikidata.de-de.nina.az
Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen beispielsweise Einzelnachweisen ausgestattet Angaben ohne ausreichenden Beleg konnten demnachst entfernt werden Bitte hilf Wikipedia indem du die Angaben recherchierst und gute Belege einfugst Unter Denormalisierung versteht man die bewusste Rucknahme einer Normalisierung zum Zweck der Verbesserung des Laufzeitverhaltens einer Datenbankanwendung Aus Sicht der ANSI SPARC Architektur wird die konzeptionelle Ebene eines Datenmodells vollstandig normalisiert entworfen Unabhangig davon kann die interne Ebene gezielt denormalisiert entworfen werden Denormalisierung findet also ausschliesslich auf der internen Ebene statt und entbindet nicht von der Forderung zuvor die konzeptionelle Ebene zu normalisieren Ein logisch ideales normalisiertes Datenmodell ist vollkommen redundanzfrei abgesehen von der technisch notwendigen Mehrfachspeicherung von Fremdschlusseln bei Primarschlussel Fremdschlussel Beziehungen Mit Denormalisierungen lassen sich oftmals wesentlich grossere Performance Verbesserungen erreichen als mit einem Tuning der Datenbankinstallation Neben der Verbesserung des Laufzeitverhaltens wird Denormalisierung auch angewandt um die Komplexitat eines Systems zu verringern oder um die Administrierbarkeit der gespeicherten Daten zu erleichtern Inhaltsverzeichnis 1 Bereiche der Denormalisierung 1 1 Rucknahme der ersten Normalform 1 2 Rucknahme der zweiten oder dritten Normalform 1 3 Vorweggenommene Aggregation 1 4 Fragmentierung 1 5 Partitionierung 1 6 Index 2 NachteileBereiche der Denormalisierung BearbeitenRucknahme der ersten Normalform Bearbeiten Verstosse gegen die erste Normalform werden meistens zur Vermeidung einer unnotigen Komplizierung des Datenhaushalts vorgenommen Die erste Normalform fordert eine atomare Speicherung von Daten das bedeutet dass in einem Attribut einem Datenbankfeld nur atomare unzerteilbare Informationen abgelegt werden durfen Beispiel Die Definition eines 100 Zeichen langen Datenfeldes zur Aufnahme von einer oder mehrerer Telefonnummern verstosst gegen die Forderung der ersten Normalform Um die erste Normalform zu erfullen musste fur die Speicherung mehrerer Telefonnummern eine eigene Tabelle geschaffen werden So konnten zu einer Person beliebig viele Telefonnummern gespeichert werden Die Unterbringung einer oder mehrerer Telefonnummern in einem einzigen Datenfeld ist jedoch oft vollig ausreichend und die Komplexitat des Systems wird dadurch reduziert Ein weiteres Beispiel fur eine aus praktischen Grunden sinnvolle Verletzung der ersten Normalform ist die Speicherung von Titel Vorname und Nachname in einem einzigen Datenfeld Solange in dem System nicht auf die Einzelkomponenten des Namens zugegriffen werden muss ist eine Speicherung der einzelnen Namenskomponenten in einem einzigen Textfeld ebenfalls eine gute Moglichkeit zur Vereinfachung des Systems In den meisten Datenbanksystemen wird die Strasse und die Hausnummer mit evtl noch erganzenden Buchstaben in einem einzigen Datenfeld gespeichert obwohl diese Vorgehensweise strenggenommen gegen die erste Normalform verstosst Rucknahme der zweiten oder dritten Normalform Bearbeiten Die zweite und die dritte Normalform fordern dass alle abhangigen Attribute allein von den Schlusselkandidaten abhangig sein durfen Alle Relationen die diese Forderungen nicht erfullen mussen aufgespalten werden Dadurch entstehen viele neue kleinere Tabellen Um auf diese Daten zuzugreifen mussen die Daten dieser Einzeltabellen wieder zusammengefuhrt werden durch Verwenden von SQL Statements mit Joins Die Ausfuhrung eines Joins ist fur das DBMS meistens zeitaufwandiger als der Zugriff auf eine einzige Tabelle Die zweite oder dritte Normalform wird meistens zuruckgenommen mit dem Ziel einen Join zu vermeiden Es betrifft typischerweise zwei Tabellen die in einer N 1 Beziehung zueinander stehen Beispiel Mitarbeiter und Abteilung Wenn viele performance kritische Lesezugriffe die Daten der Mitarbeiter und zusatzlich den Abteilungsnamen benotigen dann kann die zusatzliche Speicherung des Abteilungsnamens in jedem Satz der Mitarbeitertabelle sinnvoll sein Diese Zugriffe konnen dann alleine aus den Daten in der Mitarbeitertabelle bedient werden Der zusatzliche Zugriff auf die Abteilungstabelle ist nicht mehr erforderlich Diese Art der Denormalisierung wird perfektioniert bei der dimensionalen Modellierung eines Data Marts fur ein Data Warehouse Wenn die Dimensionstabellen vollstandig normalisiert gestaltet werden dann gibt es eine Vielzahl von Einzeltabellen die untereinander durch Fremdschlussel Beziehungen verbunden sind Das Datenmodell sieht aus wie eine Schneeflocke daher die Bezeichnung Schneeflockenschema Fur den Zugriff auf die Daten sind oft Joins auf die vielen durch die Normalisierung herausgelosten Einzel Tabellen erforderlich Im Gegensatz dazu steht das Sternschema bei dem die Dimensionstabellen denormalisiert gestaltet sind Die Faktentabelle ist nur unmittelbar von den einzelnen Dimensionstabellen abhangig Es gibt keine Abhangigkeiten die uber mehrere Fremdschlussel Beziehungen vollzogen werden mussen Die Anzahl der Dimensionstabellen ist geringer und fur Zugriffe auf die Tabellen sind weniger Joins erforderlich Allerdings gibt es bei den Daten in den Dimensionstabellen Redundanz Die Performance der Datenzugriffe ist bei dem Sternschema meistens besser daher wird in der Praxis meistens dieses Schema gewahlt Vorweggenommene Aggregation Bearbeiten Zur Ausfuhrung von Abfragen mussen oft umfangreiche Aggregationen ausgefuhrt werden Das ist besonders bei OLAP Systemen der Fall Wenn die Antwortzeit der Abfragen in nicht mehr akzeptable Bereiche kommt dann konnen die Aggregationen auch vorweg berechnet und gespeichert werden Ideal ist das bei Systemen die nur in der Nacht aktualisiert werden Dann werden nach der eigentlichen Aktualisierung der Daten auch alle moglichen Aggregationen berechnet und gespeichert Wenn dann ein Anwender wahrend des Tages eine Kennzahl KPI anfordert dann sind alle dafur erforderlichen Aggregationen bereits vorhanden und die Kennzahl kann sekundenschnell ausgegeben werden Fragmentierung Bearbeiten Man unterscheidet horizontale und vertikale Fragmentierung Bei der horizontalen Fragmentierung englisch sharding wird die Gesamtheit aller Datensatze einer Relation auf mehrere Tabellen aufgeteilt Wenn diese Tabellen auf demselben Server liegen handelt es sich meistens um Partitionierung Die einzelnen Tabellen konnen aber auch auf unterschiedlichen Servern liegen So konnen z B die Daten fur die Geschafte in den USA auf einem Server in den USA gespeichert werden und die Daten fur die Geschafte mit Europa liegen auf einem Server in Deutschland Diese Aufteilung wird auch als Regionalisierung bezeichnet Horizontale Fragmentierung schafft keine Redundanz der gespeicherten Daten sondern der Strukturen Wenn eine Relation geandert werden muss dann muss nicht nur eine Tabelle geandert werden sondern es mussen alle Tabellen geandert werden uber die die Daten aus der betreffenden Relation verteilt sind Hier besteht die Gefahr von Anomalien in den Datenstrukturen Bei der vertikalen Fragmentierung werden die abhangigen Attribute Nicht Schlussel Attribute einer Tabelle in zwei oder mehrere Gruppen aufgeteilt Aus jeder Gruppe wird eine eigene Tabelle die noch um alle Schlussel Attribute der Ursprungstabelle erganzt werden Das kann dann sinnvoll sein wenn die Attribute einer Relation Datensatze mit einer sehr grossen Satzlange ergeben Wenn zusatzlich noch die Zugriffe meistens nur einige wenige Attribute betreffen dann kann man die wenigen haufig zugegriffenen Attribute in eine Gruppe zusammenfassen und den Rest in eine zweite Gruppe zusammenfassen Die haufig auszufuhrenden Zugriffe werden dadurch schneller weil eine geringere Menge an Daten von der Festplatte gelesen werden muss Die selten auszufuhrenden Zugriffe auf die restlichen Attribute werden dadurch nicht schneller aber auch nicht langsamer Ab welcher Satzlange eine Aufspaltung in mehrere kleinere Tabellen sinnvoll ist hangt auch von dem Datenbanksystem ab Viele Datenbanksysteme speichern die Daten in Form von Blocken mit einer Grosse von 4 KiB 8 KiB oder 16 KiB ab Wenn die durchschnittliche Satzlange wenig grosser als 50 eines Datenblocks ist dann bleibt viel Speicherplatz ungenutzt Wenn die durchschnittliche Satzlange grosser als die verwendete Blockgrosse ist dann werden die Datenzugriffe aufwandiger Wenn BLOBs zusammen mit anderen Attributen in einer Relation vorkommen ist vertikale Fragmentierung fast immer von Vorteil Partitionierung Bearbeiten Partitionierung ist ein Spezialfall der horizontalen Fragmentierung Grosse Datenbestande lassen sich leichter administrieren wenn die Daten einer Relation in mehrere kleine Teile Partitionen aufgeteilt und diese separat gespeichert werden Wenn eine Partition einer Tabelle gerade aktualisiert wird dann konnen andere Partitionen der Tabelle zur selben Zeit reorganisiert werden Wenn in einer Partition ein Fehler entdeckt wird dann kann diese einzelne Partition aus einer Datensicherung wiederhergestellt werden wahrend Programme auf die anderen Partitionen weiter zugreifen konnen Die meisten etablierten Datenbankhersteller bieten Partitionierung an siehe z B Partitionierung bei DB2 und Partitionierung bei MySQL Die meisten Datenbanksysteme bieten die Moglichkeit entweder einzelne Partitionen anzusprechen oder alle Partitionen unter einem einheitlichen Tabellennamen anzusprechen Durch Partitionierung konnen die Datenzugriffe beschleunigt werden Der wesentliche Vorteil ist jedoch die leichtere Administrierbarkeit der gesamten Tabelle Index Bearbeiten Die Erstellung eines Index ist auch eine redundante Datenspeicherung und damit genau genommen eine Denormalisierung Die meisten Datenbankmanagementsysteme sind in der Lage einen Index automatisch zu aktualisieren wenn die Daten in der Basistabelle verandert werden Indizes konnen eine Leistungssteigerung bei Lesezugriffen und bei Schreibzugriffen bewirken da eine gezielte Suche nach bestimmten Satzen unterstutzt wird Oft werden Schreibzugriffe jedoch umso langsamer je mehr Indices vorhanden sind da sowohl die Daten in der Tabelle als auch die Daten in den Indices aktualisiert werden mussen Nachteile BearbeitenNachteilig ist oft der zusatzliche Aufwand der getrieben werden muss um die redundanten Daten konsistent zu halten Es besteht die Gefahr von Datenanomalien auf Grund der redundanten Speicherung Diese Gefahr kann aufgehoben werden wenn es gelingt die Aktualisierung der redundant gespeicherten Daten an das Datenbankmanagementsystem zu delegieren Die Datenbankhersteller bieten verschiedene Funktionen um redundant gespeicherte Daten automatisch abzugleichen Dass die Aktualisierung eines Index automatisch erfolgt ist schon so selbstverstandlich dass man es gar nicht anders erwartet Die Vorwegnahme von Aggregationen wird durch Materialized Views unterstutzt die diese Aggregationen automatisch im erforderlichen Umfang aktualisieren Ferner gibt es Trigger mit denen redundant gespeicherte Daten automatisch aktualisiert werden konnen Wenn das Datenbankmanagementsystem solche Aufgaben ubernimmt dann mag die Aktualisierung eines einzelnen Datensatzes dadurch nur unmerklich verlangsamt werden Massendatenverarbeitungen konnen durch die Nutzung solcher Funktionen allerdings deutlich langsamer werden Meistens hat eine Denormalisierung einen zusatzlichen Speicherbedarf zur Folge Oft ist man jedoch bereit fur eine Verbesserung der Leistung die Kosten fur zusatzlichen Speicherplatz zu tragen Im Einzelfall muss abgewogen werden ob die Vorteile es wert sind die damit verbundenen Nachteile in Kauf zu nehmen Abgerufen von https de wikipedia org w index php title Denormalisierung amp oldid 218436664