Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur

Ähnliche Präsentationen


Präsentation zum Thema: "Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur"—  Präsentation transkript:

1 Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur
• Grundtechnik in nahezu allen DB-Systemen • Elemente = Wurzel, Knoten, Blätter, Kanten • Balancierte (ausgeglichene) Bäume = – alle Pfade von Wurzel zu Blättern gleich lang – Jeder Knoten weist gleich viele Indexeinträge auf

2 B-Baum B steht nicht für Binär-Baum!!!!! Sondern für Balanciert !
Jede Seite außer der Wurzel enthält zwischen m und 2m Daten.

3 B-Baum - Eigenschaften und Merkmale
❍ Knoten = Speicherblöcke (Seiten) fester Länge ❍ jede Seite kann bis zu 2*n Datensätze (Einträge) aufnehmen ❍ n heißt Ordnung des B-Baumes ❍ jede Seite (außer der Wurzel) enthält stets m Datensätze fester Länge, wobei gilt: n ≤ m ≤ 2*n ❍ jeder Eintrag hat einen Schlüsselteil und einen Datenteil (Datenteil enthält oft nur Zeiger auf den „echten“ Datensatz) ❍ die Datensätze innerhalb einer Seite sind aufsteigend nach Primärschlüssel geordnet ❍ eine Seite ist entweder Blattseite oder sie hat m+1 Nachfolger ❍ alle Blattseiten befinden sich auf derselben Höhe

4 Suchen nach Schlüssel S:
Lese Wurzelseite 2. Suche S in Seite: ❍ gefunden: {gib Datensatz aus; fertig!} ❍ nicht gefunden: 􀁑 Seite ist Blatt: {Schlüssel nicht in Baum; fertig!} 􀁑 Seite ist kein Blatt: ● bestimme kleinstes Ki mit S < Ki: 􀂯 {setze Suche in Block pi fort} ● solches Ki nicht vorhanden: 􀂯 {setze Suche in Block pm+1 fort}

5 Einfügen von Schlüssel S:
Suche S in Baum: ❍ gefunden: {Fehlermeldung; fertig!} ❍ nicht gefunden: {b = Block (Blattseite), in der die Suche nach S abgebrochen wurde} 2. Füge S in b ein: ❍ b hat noch Platz: {Einfügen; fertig!} ❍ b läuft über: (*) 1. Füge S temporär in b ein. 2. „Mittlerer“ Schlüssel in b ist nun Kn+1. 3. Splitte b in blinks (K1 ... Kn) und brechts (Kn K2*n). 4. Setze S zu Kn+1. 5. Füge S in Vater von b ein; setze Pointer in Vater von b auf blinks und brechts. Falls Vaterknoten überläuft, setze b := Vaterknoten, dann weiter bei (*). Ggf. wird hierbei ein neuer Wurzelknoten erzeugt (d.h. der B-Baum wächst um eine Stufe).

6 Löschen von Schlüssel S:
Suche S in Baum: ❍ nicht gefunden: {Fehlermeldung; fertig!} ❍ gefunden: {b ist der Block, in dem S gefunden wurde} 2. Lösche S in b: ❍ b ist Blatt: 􀁑 b hat nach Löschung noch mind. n Einträge: {fertig!} 􀁑 b hat weniger als n Einträge: {⇒ Unterlaufbehandlung; fertig!} ❍ b ist kein Blatt: 1. Ersetze S in b durch größtes (kleinstes) Blattelement (⇒ Blatt b') im linken (rechten) Teilbaum von S; 2. Führe ggf. Unterlaufbehandlung für b' durch; fertig!}

7 ❒ Unterlaufbehandlung: {b ist der Unterlauf-Knoten}
❍ b hat einen linken (rechten) Bruder mit genau n Einträgen: {⇒ Zusammenfassen; ggf. Unterlaufbehandlung für Vaterknoten; fertig!} [Anmerkung: Gilt sowohl für Blatt als auch Nicht-Blatt] ❍ sonst: 􀁑 b ist Blatt: {führe „kleine“ Rotation über Vaterknoten nach rechts (links) aus; fertig!} 􀁑 b ist kein Blatt: {führe „große“ Rotation über Vaterknoten mit linkem (rechtem) Bruder-Teilbaum von b aus; fertig!} [Anmerkung: Ausgleich durch Umhängen eines ganzen Teilbaumes]


Herunterladen ppt "Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur"

Ähnliche Präsentationen


Google-Anzeigen