Horizontale Fragmentierung
aus Wikipedia, der freien Enzyklopädie
Die horizontale Fragmentierung ist die bedeutendste Art der Fragmentierung in Datenbanksystemen.
Dabei werden Relationen zeilenweise in disjunkte Teilmengen zerlegt. Über sogenannte Selektionsprädikate werden dabei sinnvolle Zuordnungen der Tupel zu den Fragmenten gewährleistet. Beispielsweise lässt sich eine sinnvolle Fragmentierung einer Kundendatenbank über die Filialen regulieren, in der die Kunden erfasst wurden.
Man unterscheidet 2 unterschiedliche horizontale Fragmentierungen. Zum einen die einfache (primäre) horizontale Fragmentierung und zum anderen die abgeleitete horizontale Fragmentierung.
Neben der horizontalen gibt es auch noch die Vertikale Fragmentierung.
Inhaltsverzeichnis |
[Bearbeiten] Einfache (primäre) horizontale Fragmentierung
Bei dieser Fragmentierung bezieht sich das Selektionsprädikat ausschließlich auf Attribute der zu zerlegenden Relation.
Definition
- globale Relation R
- Zerlegung in n Fragmente Ri
- Festlegung von Selektionsprädikaten Pi
- Pi auch als Fragmentierungsprädikate
- Vollständigkeit und Disjunktheit
- jedes Tupel ist genau in einem Fragment
- Rekonstruierbarkeit ergibt sich aus der Vereinigung aller Fragmente
[Bearbeiten] Abgeleitete horizontale Fragmentierung
Anders als bei der einfachen Fragmentierung wird hierbei die Zerlegung auf die horizontale Fragmentierung einer anderen Relation abgestimmt. Das bedeutet, dass man die Daten der abhängigen Relation genauso zerlegt, wie die der zugehörigen Relation. (derived horizontal fragmentation)
Definition
- Zerlegung von R in n Fragmente Ri im allgemeinen gegeben durch Semantik
- abgeleitete horizontale Fragmentierung von S in Fragmente Si definiert als
- Si = < Pi > [S](( < Sigma > [Pi]R)[ < theta > ]S)
- Selektionsprädikate Pi beziehen sich ausschließlich auf Attribute von P, nicht auf Attribute von S
- Rekonstruktion von S wie bei R durch Vereinigung der Fragmente Si
- Vollständigkeit gewährleistet, wenn zu jedem Tupel von S ein Tupel Partner in R existiert (Fremdschlüssel in S darf keine NULLwerte enthalten)
- Disjunktheit ergibt sich aus der Disjunktheit von R, wenn zwischen R und S eine 1:N-Beziehung existiert
Vorteil
- effiziente (Equi-) Join-Berechnung zwischen R und S
- alle zu Fragment Ri gehörenden Tupel von S liegen auf einem Rechnerknoten (Si)
- effiziente Überprüfung der referentiellen Integrität
[Bearbeiten] Arten von Fragmentierungen
- Bereichsfragmentierung
- Wertebereiche (Intervalle) für das Fragmentierungsattribut bestimmen die Fragmente
- ergibt sich oft aus dem Anwendungskontext (Bsp.: regionale Einteilung von Filialdaten)
- Hash-Fragmentierung
- Hash-Funktion definiert die Zuordnungseinheit
[Bearbeiten] Horizontale Fragmentierung beim Datenbankdesign
Um Daten horizontal fragmentiert in einer Datenbank zu speichern, gibt es grundsätzlich zwei Möglichkeiten:
- Alle Sätze werden in der selben Datenbank und in der selben Tabelle gespeichert. Diese Tabelle wird partitioniert. Jedes Fragment wird in einer eigenen Partition gespeichert. Beispiel: Die Umsatz-Daten der einzelnen Filialen eines Handelsbetriebes werden in der Zentrale gespeichert. Für jede Filiale wird eine eigene Partition eingerichtet. Dadurch können die Daten der einzelnen Filialen unabhängig voneinander administriert werden.
- Für jedes Fragment wird eine eigene Tabelle definiert. Diese Tabellen können auf unterschiedlichen Servern und unterschiedlichen Lokationen gespeichert werden. Beispiel: Jede Filiale eines Handelsbetriebes speichert seine Daten lokal auf einem eigenen Datenserver.
- horizontale Fragmentierung kann auch bei der Temporalen Datenhaltung zum Einsatz kommen. Im jeweils ersten Fragment werden die aktuell gültigen Daten gespeichert, im jeweils zweiten die zuvor gültigen Versionen der Datensätze. Das zweite Fragment wird auch als die Historie bezeichnet.