Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

3.101 Exkurs: Zum Begriff „Zugriffspfade“

Ähnliche Präsentationen


Präsentation zum Thema: "3.101 Exkurs: Zum Begriff „Zugriffspfade“"—  Präsentation transkript:

1 3.101 Exkurs: Zum Begriff „Zugriffspfade“

2 Zur Historie: Der Begriff des „Zugriffspfads“
Der Begriff des Zugriffspfads ist historisch begründet und geht davon aus, dass jede logische Kollektion in genau einer internen Datei und diese in genau einer physischen Datenstruktur gespeichert ist. Dabei gibt es dann zu jedem logischen Datenelement einen physischen Datensatz, der das Datenelement physisch repräsentiert. Zugriffspfade sind Strukturen, die den Datensätzen überlagert werden. Sie bestehen aus Stellvertretern der Datensätze. Die physischen Datensätze oder deren Anteile, die die logischen Datenelemente speichern, werden als Primärdaten, die Zugriffspfade als Sekundärdaten bezeichnet.

3 Zur Historie: Der Begriff des „Zugriffspfads“
Ein logischer Zugriffspfad ist eine abstrakte Datenstruktur, die eine Menge von Datensätzen gemäß einer vorzugsweisen Zugriffsabfolge verwaltet, und die Operationen für sequenzielle Zugriffe, direkte Zugriffe und den Aufbau und die Änderung zur Verfügung stellt. Ein physischer Zugriffspfad ist die spezielle Implementierung eines logischen Zugriffspfads. Bei einem eingebetteten Zugriffspfad sind die Stellvertreter in die verwalteten Datensätze „eingebettet“. Bei einem getrennten Zugriffspfad sind die Stellvertreter getrennt von den verwalteten Datensätzen gespeichert.

4 Zur Historie: Der Begriff des „Zugriffspfads“
Beispiel: Schlüsselsequentielle Organisation der physischen Dateiverwaltung eingebetteter Zugriffspfad (Primär-/Sekundärdaten) Primärdaten getrennter Zugriffspfad (Sekundärdaten)

5 3.102 Wiederholung und Vertiefung:
B*-Bäume

6 Wertbasierter Zugriff
Wertbasierter Zugriff: Zugriff aufgrund eines Attributwertes (häufig etwas unpräzise als „Schlüssel“ bezeichnet). Klassische Techniken für wertbasierten Zugriff im Hauptspeicher (linear sortierte Anordnung oder binär-baumartige Struktur der zu durchsuchenden Elemente) sind nicht ohne weiteres auf persistente Datenhaltung übertragbar: Sortieranordnung: Elemente, die weit auseinanderliegen, müssen aufgesucht werden zu viele Seitenzugriffe auf Hintergrundspeicher Baumförmige Anordnung: Suchweg durch Baum unbekannt kontrollierbare Abbildung auf Seiten nicht ohne weiteres angebbar

7 Baumförmige Anordnungen
Ziel: Anzahl der Seitenzugriffe auch bei unbekanntem Zugriffsverhalten gering halten. Vorgehensweise: Schrittweise und zugleich starke Begrenzung des Suchbereichs. Führt auf Baumstruktur. Alle für DB-Zugriff relevanten baumstrukturierten Organisationsformen müssen für Seitenstrukturen konzipiert sein. Daher: Jeder Schritt beinhaltet einen Zugriff auf eine Seite, auf der dann eine große Zahl von Suchschritten im Hauptspeicher vollzogen werden. Sei s Zahl der Suchschritte pro Seite und N die Gesamtzahl der Sätze. Dann ist die Anzahl der Seitenzugriffe beim Fortschreiten in einem ausgewogenen Baum O(logs(N)). s = 2 Binärbaum Ziel: s > 100 Mehrwegbaum

8 Vergleich Binärbaum und Mehrwegbaum
Binärbaum (s=2) 520 740 356 231 409 622 834 123 277 386 469 587 701 822 910 65 143 241 278 361 399 420 501 534 597 679 712 780 831 878 923

9 Vergleich Binärbaum und Mehrwegbaum
Mehrwegbaum (s=6) s=6 277 409 578 740 910 65 123 143 231 241 278 361 356 386 399 420 469 501 520 534 597 622 679 701 712 780 822 831 834 878 923

10 Eigenschaften von Mehrwegbäumen
Ein Knoten des Baums wird auf einer Seite gespeichert. Damit bei direktem Zugriff nur auf wenige Seiten zugegriffen werden muss, ist ein sehr hoher Verzweigungsgrad der Wurzel und der internen Knoten anzustreben (s im Bereich 100 bis 500). Damit lässt sich selbst bei hoher Skalierung die Höhe eines Mehrwegbaums auf 3 bis 4 begrenzen. Eine Höhe über 4 kommt praktisch nie vor. Zugleich müssen bei sortierter sequenzieller Verarbeitung aller Sätze die Elemente eines Knotens die Zugriffsabfolge widerspiegeln.

11 Eigenschaften von Mehrwegbäumen
Allerdings sollte dann zusätzlich gelten: Der Baum ist balanciert, um ein ausgewogenes Zugriffsverhalten zu garantieren. Die Datensätze sind möglichst kompakt auf wenigen Seiten gespeichert, d.h. der Füllgrad der Seiten ist möglichst hoch. Da jedoch Änderungen Balancierung und Füllgrad beeinflussen, wird man zur Wiederherstellung der Balance und eines hohen Füllgrads fordern, dass die Reorganisation auf einen möglichst kleinen Teil des Baums begrenzt bleibt. Das flexible Verhalten bei Änderungsoperationen verlangt Kompromisse. Wir studieren diese an den am weitesten verbreiteten B- und B*-Bäumen in ihren verschiedenen Varianten.

12 B-Baum Ein B-Baum vom Typ (k,h) ist ein leerer Baum oder ein Baum mit folgenden Eigenschaften: 1. Jeder Weg von der Wurzel zu einem Blatt hat die gleiche Länge h (Länge = Zahl der Knoten). h daher als Höhe bezeichnet. 2. Jeder Knoten j, der nicht Blatt ist, hat nj+1 Kinder. Ist der Knoten Wurzel so gilt 1  nj  2k, andernfalls k  nj  2k. 3. Jeder Knoten mit nj+1 Kindern ist mit nj sortiert angeordneten Schlüsseln belegt (sowie mit Datensätzen). 4. Seien S1,…,Sn die Schlüssel eines Knotens j mit nj+1 Söhnen. Seien Z0, Z1, …, Zn die Zeiger auf diese Kinder. a) Z0 weist auf Teilbaum mit Schlüsseln kleiner S1 b) Zi (i=1, …, nj-1) weist auf Teilbaum, dessen Schlüssel echt zwischen Si und Si+1 liegen. c) Zn weist auf Teilbaum mit Schlüsseln größer Sn. d) In den Blattknoten sind die Zeiger nicht definiert.

13 Interne Struktur der Knoten (1)
Z0 S1 D1 Z1 S2 D2 Z2 Sn Dn Zn frei Schlüsselwert Satzdaten Zeiger auf Kindknoten Di enthält nur den Datensatz zum Schlüssel Si Eindeutige Schlüsselwerte Di enthält Anzahl der Datensätze und die Datensätze selbst Di enthält Anzahl der Datensätze, zu jedem Datensatz die Länge und die Datensätze selbst Di enthält ein Längenfeld und den Datensatz zum Schlüssel Si Mehrere Datensätze mit gleichem Schlüssel zugelassen Sätze fester Länge Sätze variabler Länge

14 Interne Struktur der Knoten (2)
Lösungen für die Satzdaten Di: Datensätze direkt in den Knoten des Baums (eingebettete Datensätze). Stellvertreter (Verweise auf die Datensätze) in den Knoten des Baums (ausgelagerte Datensätze). Die Datensätze selbst sind getrennt auf anderen Seiten (durch externe Platzierung) gespeichert. Die Entscheidung fällt auf der internen Ebene. Beispiel: Ausgelagerte Datensätze: Man definiert eine Datei F1, die Schlüsselwerte und Verweise auf eine Datei F2 enthält. Wird F1 in einem B-Baum gespeichert, dann erhält man einen B-Baum mit ausgelagerten Datensätzen. Daher einheitliche Betrachtungsweise: Ein B-Baum enthält somit immer die vollständigen Datensätze der internen Datei, die er physisch repräsentiert.

15 Beispiel für einen B-Baum
Annahme: k=1 50 „white“ „brown“ 70 „red“ „blue“ „yellow“ 40 „black“ „green“ 30 80 90 60 20 10 Schlüssel Datensatz Aus der Sicht der nächsten Ebene: Separator Aus der Sicht des Knotens: Wegweiser Höhe eines B-Baums mit N Datenseiten: log 2k+1(N+1)  h  1+logk+1((N+1)/2) (N 1)

16 Zuordnung von B-Baum-Knoten zu Seiten
Eineindeutige Zuordnung von Knoten und Seiten. Ein Knoten wird auf irgendeiner frei wählbaren Seite des Segmentes gespeichert. Folge: h beschreibt maximale Anzahl der Seitenzugriffe bei direktem Zugriff. Niedriges h ist anzustreben, somit hohes k („fan-out“) notwendig. Fan-out k ist jedoch abhängig von Satzlänge! Errechne sich die maximal mögliche Zahl der Einträge pro Seite zu m. Dann ist k = (m/2). Beispiel: Seitengröße = 4 KB Zeiger- und Schlüssellänge = 4 B Satzlänge = 120 B: 2k = 32 (z.B. Einbettung) Satzlänge = 8 B: 2k = 256 (z.B. Auslagerung)

17 Einfügen eines Datensatzes
Jeder Knoten enthält n Schlüssel mit k  n  2k Einfügen eines neuen Datensatzes erfordert 2 Phasen: 1. Suche nach dem Schlüssel des neuen Datensatzes (notfalls bis zum Blatt). 2a. Falls gefunden: Einfügen des neuen Datensatzes in den entsprechenden Knoten des B-Baums (bei nichteindeutigem Schlüssel). 2b. Falls nicht gefunden: Einfügen des neuen Datensatzes in das bei der Suche erreichte Blatt.

18 Einfügen eines Datensatzes
Beispiel: Einfügen des Datensatzes [ 32, „gray“,  ] 50 50 „white“ 30 30 „brown“ 70 70 70 „red“ 32 „gray“ 40 40 „black“ 80 80 „blue“ 90 90 „yellow“ 10 10 „yellow“ 20 20 „red“ 60 60 „green“

19 Einfügen eines Datensatzes
Beispiel: Einfügen des Datensatzes [42, „rose“,  ] 50 50 „white“ 30 30 „brown“ 70 70 70 „red“ Knotenüberlauf! 32 „gray“ 40 40 „black“ 80 80 „blue“ 90 90 „yellow“ 10 10 „yellow“ 20 20 „red“ 60 60 „green“

20 Einfügen eines Datensatzes
Bei Überlauf eines Knotens wird der Knoten gespalten, d.h. die Einträge des Knotens werden auf zwei Knoten verteilt. Die alte Seite wird weiterverwendet (z.B. für den ersten Knoten). Für den zweiten Knoten wird eine zusätzliche Seite von der Seitenverwaltung angefordert. Der Datensatz, der in der Mitte des übergelaufenen Knotens liegt, wird zum Elternknoten propagiert. Propagation zum Elternknoten S1 < S2< … < Sk < Sk+1 < S k+2 < … < S2k+1 alter Knoten neuer Knoten

21 Einfügen eines Datensatzes
Beispiel: Einfügen des Datensatzes [42, „rose“,  ] 50 50 „white“ „brown“ 30 40 „black“ 32 „gray“ 70 „red“ 32 „brown“ 42 „rose“ 30 „gray“ „black“ 40 80 80 „blue“ 90 90 „yellow“ 10 10 „yellow“ 20 20 „red“ 60 60 „green“

22 Einfügen eines Datensatzes
Spalten von Knoten kann sich im Elternknoten rekursiv fortsetzen. Schlimmster Fall: Alle Knoten bis zur Wurzel laufen über und werden gespalten. Wenn sogar die Wurzel überläuft, wird auch sie gespalten. Folge: Der Baum wächst in der Höhe um 1.

23 Entfernen eines Datensatzes
Entfernen eines Datensatzes erfordert 2 Phasen: Suche nach dem zu entfernenden Datensatz anhand seines Schlüssels. Entferne ihn. Zwei Fälle: 1. Datensatz befindet sich in einem Blatt. 2. Datensatz befindet sich in einem internen Knoten oder in der Wurzel.

24 Entfernen eines Datensatzes
Fall 1, Beispiel: Entfernen des Datensatzes [ 32, „gray“,  ] 50 50 „white“ 70 „red“ „brown“ 30 „black“ 40 „green“ 60 Falls der Blattknoten nunmehr weniger als k Datensätze enthält, entsteht ein Knoten-Unterlauf 32 „gray“ 42 „rose“ „yellow“ „red“ 20 10 „blue“ „yellow“ 80 90

25 Entfernen eines Datensatzes
Knoten-Unterlauf: Invarianz des B-Baums: Jeder Knoten hat n Datensätze mit k  n  2k. Nach dem Entfernen hat Knoten weniger als k Datensätze. Es wird versucht, Datensätze aus den Nachbarknoten in den Knoten mit Unterlauf zu verschieben.

26 Entfernen eines Datensatzes
50 50 „white“ 70 „red“ „brown“ 30 „red“ 20 „black“ 40 „green“ 60 „brown“ 30 42 „rose“ „yellow“ 10 „red“ 20 „blue“ „yellow“ 80 90

27 Entfernen eines Datensatzes
Problem: Wenn alle Nachbarknoten nur minimal belegt sind, kann kein Ausgleich stattfinden (das Entfernen von Datensätzen aus den Nachbarknoten würde dort zu einem Unterlauf führen). In diesem Fall wird der Unterlauf-Knoten mit einem seiner Nachbarknoten zusammengelegt. Die freiwerdende Seite wird an die Seitenverwaltung zurückgegeben. Das Zusammenlegen zweier Knoten führt zu dem Verschieben des Separator-Datensatzes aus dem Elternknoten in den neuen, durch das Zusammenlegen entstehenden Knoten. Wie beim Splitten von Knoten kann sich das Zusammenlegen von Knoten bis zur Wurzel fortsetzen. Folge: Der Baum schrumpft in der Höhe um 1.

28 Entfernen eines Datensatzes
Fall 1, Beispiel: Entfernen des Datensatzes [ 30, „brown“,  ] 50 50 „white“ 70 „red“ „brown“ 30 „red“ 20 „black“ 40 „green“ 60 „brown“ 30 „black“ 40 42 „rose“ „yellow“ 10 „blue“ „yellow“ 80 90

29 Entfernen von Datensätzen
Fall 2: Finde einen neuen Separator-Datensatz als Ersatz für den zu entfernenden Datensatz. Zwei Alternativen für Auswahl des Separator-Datensatzes: 1. Wähle den Datensatz mit dem kleinsten Schlüssel, der größer ist als der Schlüssel des zu entfernenden Datensatzes (Inorder-Nachfolger). 2. Wähle den Datensatz mit dem größten Schlüssel, der kleiner ist als der Schlüssel des zu entfernenden Datensatzes (Inorder-Vorgänger). Der ausgewählte Separator-Datensatz wird aus seinem Knoten entfernt (rekursiver Aufruf der Operation zum Entfernen von Datensätzen!) und ersetzt den zu entfernenden Datensatz in dessen Knoten.

30 Entfernen eines Datensatzes
Fall 2, Beispiel: Entfernen des Datensatzes [ 30, „brown“,  ] 50 50 „white“ 70 „red“ „brown“ 30 „black“ 40 „red“ 20 „green“ 60 32 „gray“ 42 „rose“ neuer Separator-Datensatz „yellow“ 10 „red“ 20 „blue“ „yellow“ 80 90

31 Bewertung B-Baum Gewünschte Aussage:
Baumstrukturen bieten einen attraktiven und ausgewogenen Kompromiss zwischen günstigem direktem Schlüsselzugriff, günstiger sortierter sequenzieller Verarbeitung aller Sätze, flexiblem Verhalten bei Änderungsoperationen. + -

32 B*-Baum Abhilfe: Führe informationstragende Einträge (Satzdaten Di) ausschließlich in den Blattknoten und organisiere sie dort als verkettete Liste. Folge: Schlüssel in allen anderen Knoten haben daher ausschließlich Wegweiserfunktion (Redundanzen!). Charakterisierung: Man spricht daher von „blattorientierten“ oder „hohlen“ Bäumen. Andere Bezeichnung: B+-Baum. Mehrere Definitionen gebräuchlich, die hier verwendete lehnt sich eng an den B-Baum an.

33 B-Baum Ein B-Baum vom Typ (k,h) ist ein leerer Baum oder ein Baum mit folgenden Eigenschaften: 1. Jeder Weg von der Wurzel zu einem Blatt hat die gleiche Länge h (Länge = Zahl der Knoten). h daher als Höhe bezeichnet. 2. Jeder Knoten j, der nicht Blatt ist, hat nj+1 Söhne. Ist der Knoten Wurzel so gilt 1  nj  2k, andernfalls k  nj  2k. 3. Jeder Knoten mit nj+1 Söhnen ist mit nj sortiert angeordneten Schlüsseln belegt (sowie mit Datensätzen). 4. Seien S1,…,Sn die Schlüssel eines Knotens j mit nj+1 Söhnen. Seien Z0, Z1, …, Zn die Zeiger auf diese Söhne. a) Z0 weist auf Teilbaum mit Schlüsseln kleiner S1 b) Zi (i=1, …, nj-1) weist auf Teilbaum, dessen Schlüssel echt zwischen Si und Si+1 liegen. c) Zn weist auf Teilbaum mit Schlüsseln größer Sn. d) In den Blattknoten sind die Zeiger nicht definiert.

34 B*-Baum Ein B*-Baum vom Typ (k,k*,h) ist ein leerer Baum oder ein Baum mit folgenden Eigenschaften: 1. Jeder Weg von der Wurzel zu einem Blatt hat die gleiche Länge h (Länge = Zahl der Knoten). h daher als Höhe bezeichnet. 2. Jeder Knoten j, der nicht Blatt ist, hat nj+1 Söhne. Ist der Knoten Wurzel so gilt 1  nj  2k, andernfalls k  nj  2k. 3. Jeder Knoten mit nj+1 Söhnen ist mit nj sortiert angeordneten Schlüsseln (Wegweisern) belegt. 4. Seien S1,…,Sn die Schlüssel eines Knotens j mit nj+1 Söhnen. Seien Z0, Z1, …, Zn die Zeiger auf diese Söhne. a) Z0 weist auf Teilbaum mit Schlüsseln kleiner oder gleich S1 b) Zi (i=1, …, nj-1) weist auf Teilbaum, dessen Schlüssel zwischen Si und Si+1 liegen und Si+1 einschließen können. c) Zn weist auf Teilbaum mit Schlüsseln größer Sn. 5. Jeder Blattknoten enthält mindestens k* und höchstens 2k* Einträge. Ist die Wurzel Blatt, so enthält sie mindestens einen Eintrag. 6. Die Blattknoten sind doppelt verkettet in auf- bzw. absteigender Schlüsselreihenfolge.

35 Interne Struktur der Knoten
Format eines internen Knotens: Format eines Blattknotens: Z0 S1 Z1 S2 Sn Zn frei Wegweiser-Schlüssel Kindzeiger P S1 D1 S2 D2 N frei Sn Dn Previous-Zeiger Schlüssel Satzdaten Next-Zeiger

36 Beispiel für einen B-Baum
Annahme: k=1 50 „white“ „brown“ 70 „red“ „blue“ „yellow“ 40 „black“ „green“ 30 80 90 60 20 10 Schlüssel Datensatz Höhe eines B-Baums mit N Datenseiten: log 2k+1(N+1)  h  1+logk+1((N+1)/2) (N 1)

37 Beispiel für einen B*-Baum
Annahme: k=2, k*=1 „yellow“ „red“ 20 10 25 45 65 75 „blue“ 90 80 „brown“ „black“ 40 30 70 „white“ „green“ 60 50 Schlüssel Datensatz Wegweiser Höhe h eines B*-Baums mit N Datenelementen:

38 Beispiel für einen B*-Baum
Annahme: k=2, k*=1 „yellow“ „red“ 20 10 25 45 65 75 „blue“ 90 80 „brown“ „black“ 40 30 70 „white“ „green“ 60 50 Schlüssel Datensatz Wegweiser Im Beispiel kommt keiner der Separator-Schlüssel der Wurzel in den Blättern vor; d.h. keiner der Separator-Schlüssel taucht in der Datei auf, die in dem B*-Baum gespeichert ist. Prinzipiell dürfen die Separator-Schlüssel auch unter den in der Datei vorkommenden Schlüsseln gewählt werden; in diesem Fall werden Schlüssel mehrfach (redundant) gespeichert.

39 Vergleich B-Baum mit B*-Baum
Indexteil mit Datensätzen B*-Baum Indexteil mit Schlüsseln (Wegweisern) S S S S Blattknoten mit Datensätzen

40 Vergleich B-Baum mit B*-Baum
Blattknoten sind als geclusterte Liste in auf- und in absteigender Reihenfolge verkettet, um die sortierte sequenzielle Verarbeitung der Datensätze zu beschleunigen. Da die internen Knoten ausschließlich Wegweiser enthalten, ergibt sich ein höherer Verzweigungsgrad als beim B-Baum. Geringer Preis: Zusätzliche Speicherung der Wegweiser-Schlüssel. Typischer Wert für die Höhe eines B*-Baums: Höhe 3-4 bei Datensätzen.

41 Einfügen eines Datensatzes
Prinzip wie beim B-Baum: Suche den Schlüssel des neuen Datensatzes im Baum. Die Suche führt beim B*-Baum immer zu einem Blatt, da Datensätze nur in Blättern gespeichert sind. Füge neuen Datensatz in das Blatt ein. Falls der Blattknoten überläuft, wird der Knoten gespalten. Beim Spalten eines Knotens wird ein neuer Separator- Schlüssel bestimmt und in den Vaterknoten eingefügt.

42 Einfügen eines Datensatzes
25 45 65 75 10 10 „yellow“ 20 20 „red“ 80 80 „blue“ 90 90 „yellow“ 30 30 „brown“ 40 40 „black“ 70 70 „red“ 50 50 „white“ 60 60 „green“

43 Einfügen eines Datensatzes
Einfügen eines Datensatzes mit Schlüssel 74: 25 45 65 75 80 ... 90 ... 10 ... 20 ... 50 ... 60 ... 70 ... ... 74 30 ... 40 ...

44 Einfügen eines Datensatzes
Einfügen eines Datensatzes mit Schlüssel 51: 25 45 65 75 Überlauf 80 ... 90 ... 10 ... 20 ... 50 ... 60 ... ... ... 74 30 ... 70 40 ... k=2, k*=1

45 Einfügen eines Datensatzes
Einfügen eines Datensatzes mit Schlüssel 51: Überlauf 25 45 65 75 Neuer Separator: 55 80 ... 90 ... 10 ... 20 ... ... ... 74 30 ... 40 ... 70 ... 50 51 60 k=2, k*=1

46 Einfügen eines Datensatzes
Einfügen eines Datensatzes mit Schlüssel 51: 55 25 45 65 75 80 ... 90 ... 10 ... 20 ... 70 ... ... 74 30 ... 40 ... ... 50 51 60 k=2, k*=1

47 Einfügen eines Datensatzes
Beachte: Beim B-Baum wurde unter den Datensätzen des übergelaufenen Knotens ein Separator-Datensatz ausgewählt und in den Vaterknoten verschoben. Beim B*-Baum wird ein beliebiger Schlüssel bestimmt, der die Datensätze des übergelaufenen Knotens in zwei Teilmengen teilt. Der Schlüssel braucht nicht in den Datensätzen des Knotens vorzukommen. Hierdurch hat man beim B*-Baum mehr Freiheiten, die Datensätze eines übergelaufenen Knotens in zwei Teilmengen zu separieren.

48 Einfügen eines Datensatzes
Wahl eines Separatorschlüssels: Aufteilung der Datensätze des übergelaufenen Knotens in zwei möglichst gleich große Teilmengen. Gleichmäßige Füllgrade der beiden Seiten, so dass weitere Einfügungen nicht direkt wieder zu einem Spalten führen. Bei Gleichverteilung der Schlüssel werden sich jedoch sehr viele Datensätze im rechten Teilbaum ansammeln, so dass dort sehr viele Spaltungen vorkommen werden. 20 21 22 23 24 90 19 Einfügen von „19“, k=3

49 Einfügen eines Datensatzes
Wahl eines Separatorschlüssels: Zukünftige Einfügungen von Datensätzen sollen möglichst gleichmäßig auf die beiden durch den Separatorschlüssel getrennten Teilbäume verteilt werden. (Die Verfolgung dieses Ziels erfordert Wissen über die Verteilung der Schlüssel in der Datei.) Vorteil: Auf lange Sicht guter Separatorschlüssel, da der „Schlüsselraum“ in zwei gleich große Teile geteilt wird. Nachteil: Kurzfristige Gefahr des Überlaufens der linken Seite, da diese sehr stark gefüllt ist. 20 21 22 23 24 90 55 19 Einfügen von „19“, k=3

50 Einfügen eines Datensatzes
Spalten der Wurzel bei B- und B*-Baum: Die Wurzel eines Baums ist der Einstiegspunkt in den Baum. Die Seitennummer des Wurzelknotens ist daher an verschiedenen Stellen der Datenbasis (bspw. in Katalogen, die die physischen Daten-strukturen verwalten) gespeichert. Wird beim Spalten der Wurzel eine neue Seite für die Speicherung der neuen Wurzel genommen, dann müsste an allen Stellen der Verweis auf die alte Wurzel-Seite durch die Nummer der neuen Wurzel-Seite ersetzt werden. Um diesen Aufwand zu sparen, wird über die gesamte Lebensdauer eines B- oder B*-Baums dieselbe Seite zur Speicherung der Wurzel genommen. D.h.: Beim Anlegen eines neuen Wurzelknotens werden die Einträge der bisherigen Wurzel auf zwei neuen Seiten verteilt, und der neue Wurzelknoten wird auf der bisherigen Wurzel-Seite gespeichert.

51 Einfügen eines Datensatzes
P123 P123 P401 P532

52 Entfernen von Datensätzen
Das Entfernen von Datensätzen beginnt beim B*-Baum immer in einem Blattknoten. Die Unterlauf-Behandlung und die Strategien für den Ausgleich zwischen Knoten sind ähnlich wie beim B-Baum.

53 Sequenzielle Verarbeitung von Datensätzen
Beim B-Baum erfolgt die sequenzielle Verarbeitung der Datensätze in Schlüsselreihenfolge durch eine Inorder-Traversierung des Baums. Keine gute Unterstützung der sequenziellen Verarbeitung, da auf innere Knoten und die Wurzel mehrfach zugegriffen wird.

54 Sequenzielle Verarbeitung von Datensätzen
Beim B*-Baum erfolgt die sequenzielle Verarbeitung durch Verfolgen der Zeiger in den Blattseiten. S S S S Gute Unterstützung der sequenziellen Verarbeitung, da auf jeden Knoten nur einmal zugegriffen wird.

55 Suchzeit innerhalb eines Knotens
Die Suchzeit ist bei hohen Werten von k bzw. k* nicht vernachlässigbar. Sprung- und Binärsuche statt sequenzieller Suche nur bei konstanten Datensatzlängen und überwiegend eindeutigen Schlüsselwerten. Sprungsuche Sequenzielle Suche m Binärsuche 2 m

56 Leistungsbetrachtungen B*-Baum
Welche Anfragen werden häufig gestellt? 1. Exact Match Queries (EMQ): Zugriffe auf einen Schlüsselwert select A1,A2,...,An from R where Ai = c 2. Range Queries (RQ): Bereichszugriffe from R where Aic2 and Aic1

57 Leistungsbetrachtungen B*-Baum
Höhe h eines B*-Baums mit N Datenelementen: Dominanz von Exact Match Queries (EMQ): Niedrige Höhe anstreben  hohe Werte für k und ggf. k* und hohe Werte für den Füllgrad ni eines Knotens, k  ni  2k bzw. k*  ni  2k* Dominanz von Range Queries (RQ): Bei kleinen Schlüsselintervallen  wie EMQ Bei großen Schlüsselintervallen  kompakte Speicherung der Datensätze auf den Blattseiten  hohe Werte für deren Füllgrad und ggf. k* Mix von EMQs und RQs: Es dominiert i.allg. die Bearbeitungszeit für die RQs (besonders bei großen Suchintervallen). Wie bei RQs ist ein hoher Füllgrad der Blattseiten wichtiger als eine niedrige Höhe des Baums.

58 Beeinflussung des Füllgrads
Füllgrad ist bei jedem Knoten außer Wurzel: b > 50%. Ungünstigster Fall: sequenzielles Laden des Baums sortiert nach auf- oder absteigenden Schlüsseln: b = 50%. Mittlerer Füllgrad bei zufälligem Einfügen und Löschen: b = 69% Höhere Belegung lässt sich durch Verzögerung des Spaltens von Seiten erreichen: Spalten erst, wenn m um den Einfügepunkt gruppierte Knoten voll sind: b  m  (m+1). Abändern des Einfügealgorithmus mit Inspektion der Nachbarknoten und Ausgleich der Knotenbelegung. Nachteil: Höhere Einfügekosten, steil ansteigend für m > 3.

59 Beeinflussung des Verzweigungsgrades
Vergrößerung von k durch Vergrößerung der Seitengröße. Vergrößerung von k bei unveränderter Seitengröße: Übergang von B-Baum zu B*-Baum (keine Sätze in den Zwischenknoten). Einsatz von Verfahren zur Schlüsselkomprimierung.

60 Möglichkeiten zur Schlüsselkomprimierung
Zeichenkomprimierung, bspw. durch Entfernen führender Nullen, abschließender Zwischenräume. Bei B*-Baum: Systematische Konstruktion von Separatoren / Wegweisern minimaler Länge. Folge: Variable Schlüssellänge k variabel über Knotenmenge und zeitlich schwankend über Knoten. Aufspalten von Seiten dann nicht mehr über Zahl der Einträge, sondern nach der Speicherbelegung.

61 Systematische Wegweiserkonstruktion
Gegeben: Schlüssel eines gespeicherten Satzes, der die Separatorfunktion wahrnehmen könnte. Idee: Beschränkung auf für diese Funktion signifikanten Teil: Weglassen des für die Unterscheidung unerheblichen hinteren Teils.  Präfix-B-Bäume Zusätzliche Komprimierung des übriggebliebenen Präfix.  Präfix-Suffix-Komprimierung (front and rear compression)

62 Historie und Terminologie
B-Baum: Originalpublikation: R. Bayer und E. M. McCreight. Organization and Maintenance of Large Ordered Indexes. Acta Informatica, 1: Überblick: D. Comer: The Ubiquitous B-Tree. ACM Computing Surveys, 11:2, Juni 1979, Seiten B*-Baum: D. E. Knuth: The Art of Programming, Vol. 3, Addison-Wesley, 1973. Zur Terminologie: Bei Knuth B*-Baum ist ein B-Baum mit garantierter 2 / 3-Auslastung der Knoten B+-Baum ist ein hohler Baum derart wie hier dargestellt. Heutige Datenbankliteratur: B*-Baum = B+-Baum.


Herunterladen ppt "3.101 Exkurs: Zum Begriff „Zugriffspfade“"

Ähnliche Präsentationen


Google-Anzeigen