FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

P3: Fragmentierung und Allokation

P3: Fragmentierung und Allokation 2005-03-20 14:59
Morpheus
Mir ist leider nicht ganz klar wie horizontale und vertikale fragmentierung von statten gehen soll, vorallem die abgeleitete horizontale fragmentierung ist mir dabei ein rätsel…

kann mir bitte jemand weiterhelfen? thx

Re: P3: Fragmentierung und Allokation 2005-03-21 02:04
georg
Mir ist leider nicht ganz klar wie horizontale und vertikale fragmentierung von statten gehen soll,

Bei der Fragmentierung teilt man eine Relation (Tabelle) in einer
Datenbank in mehrere Teile auf. "Horizontal" oder "vertikal" gibt
dabei an, in welche Richtung der Schnitt geht: Bei der
horizontalen Fragmentierung zerlegt man die Relation in disjunkte
Tupelmengen und bei der vertikalen Fragmentierung wird die
Menge der Attribute in disjunkte Mengen zerlegt.
Bei der Horizontalen Fragmentierung gibt man Prädikate an,
anhand derer entschieden wird, zu welchem Fragment die
jeweiligen Tupel der Relation gehören sollen (Beispiel:
die Tupel, die P erfüllen, kommen in Fragment A, alle
anderen in Fragment B). Bei n Prädikaten ergeben sich also
bis zu 2^n Fragmente.

Die horizontale Fragmentierung entspricht also einer Selektion,
während die vertikale Fragmentierung eine Projektion ist.

Anwendung findet die Fragmentierung z.B. bei VDBMS, wo
Tabellen auf mehrer Stationen verteilt werden. Die
Tabellen werden dabei am besten so fragmentiert, dass innerhalb
einer Anwendung möglichst selten zu einer anderen Station
gewechselt werden muss, um eine Anfrage auszuführen.

Da sind wir auch bei der Allokation: Bei der Allokation werden
Fragmente auf Stationen verteilt. Dabei ist es erlaubt, dass ein
Fragment auf mehreren Stationen liegt (es muss dann nur vom VDBMS
sichergestellt werden, dass alle Kopieren auf dem aktuellen Stand
bleiben).

vorallem die abgeleitete horizontale fragmentierung ist mir dabei ein rätsel…

Wenn man zwei Relationen R1, R2 horizontal fragmentieren möchte,
zwischen denen später Joins ausgeführt werden sollen,
empfiehlt es sich, beide nach dem späteren Join-Kriterium
zu fragmentieren. D.h.: man wählt die Prädikate so, dass
man für einen Join jedes Fragment von R1 nur mit einem Fragment
von R2 joinen muss. Würde man R2 nämlich nach ganz anderen
Kriterien fragmentieren, dann müsste man jedes Fragment von
R1 mit jedem Fragment von R2 joinen: das wären viele Joins.

Wenn nun R1 irgendwie fragmentiert ist und man R2 deswegen
nach dem gleichen Kriterium fragmentiert, nennt man die
Fragmentierung von R2 von der von R1 abgeleitet.

Re: P3: Fragmentierung und Allokation 2005-03-21 12:36
korelstar
Kleine Anmerkung noch:
bei der vertikalen Fragmentierung wird die
Menge der Attribute in disjunkte Mengen zerlegt
Im Skript steht, wenn ich mich richtig erinnere, dass die Menge der Attribute nicht unbedingt in disjunkte Teile zerlegt werden muss. Das macht ja auch durchaus Sinn: Mindestens der Primärschlüssel sollte in allen Teilmengen vorhanden sein. Je nach Anwendungszweck kann es wohl auch sinnvoll sein, noch mehr Attribute doppelt zu führen, wobei man dann natürlich die Nachteile von Redundanz in Kauf nehmen muss.