Der B-Baum Richard Göbel
Wahl des Verzweigungsgrad Verzweigungsgrad kann größer als 2 sein v Nachfolger für einen Knoten v-1 Werte in einem Knoten definieren v Wertebereiche Zeitaufwand der Operationen ist auch hier abhängig von der Tiefe eines Baumes Welcher Verzweigungsgrad ist günstig?
Anzahl Einträge und Tiefe eines Baumes
Maximale Anzahl der Vergleiche
Verwaltung großer Datenmengen in Datenbanken Tabelle Student Speicherung von Daten in Tabellen Suchanfragen mit Bedingungen für Spalten Unterstützung von Anfragen mit Indexstrukturen Speicherung aller Daten auf Festplatten dauerhafte (persistente) Speicherung Verwaltung sehr größer Datenmengen Matrikel Name Geburtsdatum 1001 Hans Bauer 02.10.1978 1002 Peter Becker 04.07.1979 1003 Inge Gerber 06.01.1980 1004 Jürgen Hecht 08.02.1978 1005 Petra Huber 10.04.1979 1006 Dieter Meier 12.12.1981 1007 Paula Müller 14.05.1981 1008 Klaus Richter 16.03.1979 1009 Maria Riese 18.06.1980 1010 Anne Schmidt 20.08.1979 1011 Franz Wächter 22.09.1978 1012 Georg Wolf 24.11.1975 . . .
Verwaltung von Bäumen auf einer Festplatte Für eine Festplatte wird immer mindestens ein Block gelesen und geschrieben. Mögliche Blockgrößen sind zum Beispiel zwischen 512 und 65536 Byte. Der Aufwand für den Zugriff auf einen Block ist um mehrere Größenordnungen höher als Operationen im Hauptspeicher! Der Verzweigungsgrad wird so gewählt, dass ein Block vollständig mit Werten und Referenzen auf Nachfolgeknoten gefüllt wird.
Effiziente Algorithmen für: B-Baum - Konzept Baumstruktur mit: gleicher Länge aller Pfade von der Wurzel zu den Blättern (Baum ist „perfekt“ balanciert) Abbildung von Knoten auf Blöcke des Sekundärspeichers hohem Verzweigungsgrad (Kapazität der Blöcke) Effiziente Algorithmen für: die Suche das Einfügen das Löschen von Einträgen
B-Baum - Beispiel mit Verzweigungsgrad 3
B-Baum - Suche nach Wert 13 0) Fragestellung 1) B-Baum 2) Erweiterungen 3) R-Baum 4) Aktueller Stand
B-Baum - Suche Werte zwischen 12 und 26 0) Fragestellung 1) B-Baum 2) Erweiterungen 3) R-Baum 4) Aktueller Stand Verkettung zwischen den einzelnen Blättern für eine Bereichssuche sinnvoll!
B-Baum - Einfügen von Einträgen Suche das Blatt, in das der neue Wert eingefügt werden muss Ausreichend Speicherplatz in dem Knoten vorhanden: JA: Wert einfügen NEIN: Blattknoten (und bei Bedarf Elternknoten) teilen Referenzen zwischen dem neuen Wert und den zugehörigen Einträgen herstellen
B-Baum - Löschen von Einträgen Suche das Blatt, aus dem der Wert gelöscht werden muss Knoten noch ausreichend gefüllt: JA: Wert löschen NEIN: Inhalt des Blattknoten auf andere Blätter verteilen Referenz des Blattknoten in Vaterknoten löschen Elternknoten noch ausreichend gefüllt . . .
B-Baum für Bereichssuche
asymptotischer Aufwand B-Baum - Diskussion asymptotischer Aufwand Finden des ersten Eintrags: O(log(n)) Lesen aller Ergebnisse (Blätter verkettet): O(n) Gesamtaufwand: O(log(n) + m) Für sehr große Datenbanken ist der Aufwand damit weitgehend unabhängig von der Größe der Datenbank