Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Effizienz: Indexstrukturen

Ähnliche Präsentationen


Präsentation zum Thema: "Effizienz: Indexstrukturen"—  Präsentation transkript:

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


Herunterladen ppt "Effizienz: Indexstrukturen"

Ähnliche Präsentationen


Google-Anzeigen