Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Effizienz: Indexstrukturen
Richard Göbel
2
Indexstrukturen - Ideen
Ohne Indexstrukturen wächst der Suchaufwand mindestens linear mit der Anzahl der Einträge Der Suchaufwand lässt sich zum Beispiel beschleunigen durch: binäres Suchen in sortierten Listen Hash-Verfahren Die Indexstruktur muss die Verwaltung des Sekundärspeichers berücksichtigen
3
Indexstrukturen 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 Byte. Der Aufwand für den Zugriff auf einen Block ist um mehrere Größenordnungen höher als Operationen im Hauptspeicher! Die Indexstrukturen wird so gewählt, dass ein Block vollständig mit Werten und Referenzen auf Nachfolgeknoten gefüllt wird.
4
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
5
B-Baum - Beispiel mit Verzweigungsgrad 3
6
B-Baum - Suche nach Wert 13
7
B-Baum - Suche Werte zwischen 12 und 26
Verkettung zwischen den einzelnen Blättern für eine Bereichssuche sinnvoll!
8
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
9
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 . . .
10
B-Baum für Bereichssuche
11
asymptotischer Aufwand
B-Baum - Diskussion asymptotischer Aufwand Finden des ersten Eintrags: O(log(n)) Lesen aller Ergebnisse (Blätter verkettet): O(m) Gesamtaufwand: O(log(n) + m) Für sehr große Datenbanken ist der Aufwand damit weitgehend unabhängig von der Größe der Datenbank
12
Suchbedingungen für mehrere Spalten
Allgemeine Form der Anfragen lower1 column1 upper1 AND lower2 column2 upper1 . . . AND lowerd columnd upperd Ziel: Bearbeitungszeit einer Anfrage ist nur in geringem Maß abhängig von der Anzahl der gespeicherten Einträge Bearbeitungszeit einer Anfrage ist linear abhängig von der Anzahl der Suchergebnisse
13
Erweiterungen des B-Baums
Ansatz: Abbildung mehrerer Werte auf einen einzelnen Wert Mögliche Operationen für die Kombination: Konkatenation Bit-Interleaving Auswirkung auf die Effizienz von Suchanfragen?
14
Analyse: Suchen mit zwei Spalten
15
Analyse: Beispiel mit 2 Spalten
2 a 4 2 b 3
16
Analyse - Werte der Spalten konkatenieren
Werte der betrachteten Spalten werden „zusammengehängt“ Die neuen Werte werden mit Hilfe der lexikographischen Ordnung verglichen. . . .
17
Analyse - Bit-Interleaving 1
Werte mit den Bitfolgen 'x1x xn‘ und 'y1y yn' werden zu dem Wert 'x1y1x2y xnyn‘ kombiniert Die erzeugten Bitfolgen lassen sich danach direkt vergleichen . . .
18
Analyse - Bit-Interleaving 2
19
Erweiterungen des B-Baums - Diskussion
Erweiterungen unterstützen Punktsuchen mit logarithmischen Zeitaufwand Für Bereichssuchen ist der Ansatz des Bit-Interleaving günstiger als die Konkatenation Im schlechtesten Fall wächst der Suchaufwand für beide Verfahren linear mit der Anzahl der Einträge
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.