Suchverfahren für groÿe Datenmengen ADS 1: Algorithmen und Datenstrukturen Bisher betrachtete Datenstrukturen (Arrays, Listen, Binärbäume) und Algorithmen waren auf im Hauptspeicher vorliegende Daten Teil X ausgerichtet eziente Suchverfahren für groÿe Datenmengen auf Externspeicher Prof. Peter F. Stadler & Sebastian Will erforderlich (persistente Speicherung) Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik groÿe Datenmengen können nicht vollständig in Hauptspeicher-Datenstrukturen abgebildet werden Universität Leipzig Zugrisgranulat sind Seiten bzw. Blöcke von Magnetplatten: z.B. 4-16 KB 09. Januar 2014 Zugriskosten: Faktor 100000 langsamer als für Hauptspeicher (5 ms verglichen mit 50 ns) P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 09. Januar 2014 1 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE) Sequentieller Dateizugri ADS 1, V10 09. Januar 2014 2 / 21 09. Januar 2014 4 / 21 Mehrwegbäume Sequentielle Dateiorganisation Datei besteht aus Folge gleichartiger Datensätze Ausgangspunkt: Binäre Suchbäume (balanciert) Datensätze sind auf Seiten/Blöcken gespeichert entwickelt für Hauptspeicher ggf. bestimmte Sortierreihenfolge (bzgl. eines Schlüssels) bei der ungeeignet für groÿe Datenmengen Speicherung der Sätze (sortiert-sequenzielle Speicherung) Externspeicherzugrie erfolgen auf Seiten Sequenzieller Zugri Lesen aller Seiten / Sätze vom Beginn der Datei an Abbildung von Schlüsselwerten/Sätzen auf Seiten sehr hohe Zugriskosten, wenn nur ein Satz benötigt wird Index-Datenstruktur für schnelle Suche Optimierungsmöglichkeiten Alternativen: dichtes Packen der Sätze innerhalb der Seiten m-Wege-Suchbäume Clusterung zwischen Seiten, d.h. dichtes Packen der Seiten einer B-Bäume Datei auf physisch benachbarte Plattenbereiche, um geringe ∗ B -Bäume Zugriszeiten zu ermöglichen Schneller Zugri auf einzelne Datensätze erfordert Einsatz von zusätzlichen Grundoperationen: Suchen, Einfügen, Löschen Indexstrukturen, z.B. Mehrwegbäume Alternative: gestreute Speicherung der Sätze (→ Hashing) P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 m-Wege-Suchbäume I 09. Januar 2014 3 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 B-Bäume Denition : Ein m-Wege-Suchbaum oder ein m-ärer Suchbaum B ist ein Denition: Sei t ≥ 1 eine ganze Zahl. Ein B-Baum B Baum, in dem jeder Knoten höchstens m Kinder besitzt. Entweder ist B leer oder B hat folgende Eigenschaften: 1 Jeder Knoten des Baums mit b Einträgen, b 3 4 5 hat folgende ≤ i ≤ b, sind Zeiger auf die Unterbäume des Knotens Ki und Di , 1 ≤ i ≤ b sind Schlüsselwerte und Daten. die 2 ≤ m − 1, 0 |K1 |D1 |P1 |K2 |D2 |P2 | . . . |Kb |Db |Pb Struktur: P Die Pi , 0 1 Alle Blätter sind von der Wurzel gleich weit entfernt. 2 Jeder Knoten ausser der Wurzel hat mindestens t und 2t ≤ Ki +1 , ≤ i < b. 1 Die Unterbäume von Pi , 0 ≤i ≤b sind auch m-Wege-Suchbäume. −1 und höchstens 4 Falls B nicht leer ist, hat die Wurzel mindestens 1 und höchstens und höchstens 2t Töchter. 1 (0 ≤ i < b ) (0 < i ≤ b ) Einträge. Jeder Knoten, ausser der Wurzel und den Blättern, hat mindestens t Alle Schlüssel im Unterbaum von Pi sind kleiner als Ki + Alle Schlüssel im Unterbaum von Pi sind gröÿer als Ki −1 3 Die Schlüsselwerte in jedem Knoten sind aufsteigend geordnet: Ki der Klasse t ist ein 2t -Wege-Suchbaum mit folgenden zusätzlichen Eigenschaften: 2t 5 −1 Einträge. Falls B nicht leer und die Wurzel kein Blatt ist, hat sie mindestens 2 und höchstens 2t Töchter. Die Di können Daten oder Zeiger auf die Daten repräsentieren. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 09. Januar 2014 Aufbau der Knoten im B-Baum 5 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 09. Januar 2014 Beispiel: B-Baum mit t = 2 6 / 21 Innerer Knoten 0 1 P K D 1 P 1 2 D 2 K D 2 2 ... P Kb Db Pb freier Platz 10 18 27 Blattknoten 8 . 1 K D 1 K 2 ... Kb Db 2 4 7 0 . . . Pb Zeiger auf Unterbäume K1 . . . Kb Schlüssel D1 . . . Db (Zeiger auf ) Daten P t . 15 . . 21 24 . 34 38 40 freier Platz ....................... 22 . . ............... 42 43 44 − 1 ≤ b ≤ 2t − 1 P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 09. Januar 2014 7 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 09. Januar 2014 8 / 21 Suchen im B-Baum Einfügen im B-Baum Verallgemeinerung der Suche im binären Suchbaum 1 Einfügen eines Schlüssels k in einen B-Baum geschieht immer in einem Suche nach Schlüssel k beginnt mit der Wurzel als aktuellem Knoten Blattknoten x . x. 2 Finde gröÿten Index i ∈ {1, . . . , b}, so dass k ≥ Ki ist. Falls k Wie bei der Suche wird ein Pfad von der Wurzel bis zu x durchlaufen. = Ki , Trit der Durchlauf auf einen vollen Knoten y , so wird y geteilt, bevor so wurde k gefunden (Ende, Suche erfolgreich). 3 Existiert so ein Index nicht, so setze i der Durchlauf fortgesetzt wird. = 0. 4 Falls x bereits ein Blatt ist, Ende (Suche erfolglos). 5 Sonst: verzweige x ← Pi Ein Knoten ist voll, wenn er die maximale Anzahl 2t enthält. und gehe zurück zu (2). P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 09. Januar 2014 9 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE) Teilen eines Knotens . .......... 36 37 . 39 . .......... . 42 43 44 Voraussetzungen für das Teilen eines Knotens x : 1 x ist voll (hat 2t 2 Elternknoten von x ist nicht voll −1 ADS 1, V10 09. Januar 2014 = 45 34 . 33 . . . 40 . . 36 37 . 39 . . 1 x ist voll (hat 2t 2 Elternknoten von x ist nicht voll −1 ADS 1, V10 Einfügen von k . 2 4 7 . 21 24 . ....................... P.F. Stadler & S. Will (Bioinf, Uni LE) 22 . 34 38 40 8 . . ............... 42 43 44 ADS 1, V10 09. Januar 2014 2 4 7 . 2 4 7 15 . . 21 24 . 22 . . 34 38 40 . ............... 42 43 44 ADS 1, V10 09. Januar 2014 12 / 21 = 45 . 18 . 10 . . 27 38 . 15 . . 21 24 . P.F. Stadler & S. Will (Bioinf, Uni LE) 27 . ....................... Einfügen von k ....................... . Beispiel: Einfügen im B-Baum = 45 18 . 8 . . . 10 . 12 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE) Beispiel: Einfügen im B-Baum Einfügen von k 11 / 21 = 45 10 18 27 15 . 09. Januar 2014 Beispiel: Einfügen im B-Baum 18 . . 42 43 44 Schlüssel) 11 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE) Beispiel: Einfügen im B-Baum 8 . 10 / 21 Voraussetzungen für das Teilen eines Knotens x : Schlüssel) P.F. Stadler & S. Will (Bioinf, Uni LE) Einfügen von k 09. Januar 2014 27 38 . 34 38 40 . an Schlüsseln Teilen eines Knotens 27 . 33 . ADS 1, V10 −1 22 . ADS 1, V10 34 . . 40 . . ............... 42 43 44 09. Januar 2014 . 8 . 2 4 7 . . 10 . . 27 38 . 15 . . 21 24 . ....................... 12 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE) 22 . 34 . . 40 43 . . ............... 42 . ADS 1, V10 . 44 45 . 09. Januar 2014 12 / 21 Löschen im B-Baum Verschieben eines Schlüssels Löschen eines Schlüssels k beginnt mit einer Suche nach k , Durchlauf beginnend an der Wurzel. 10 18 27 Trit der Durchlauf auf einen Knoten y mit t −1 Schlüsseln (Minimalzahl), so wird y durch Verschieben eines Schlüssels auf t Schlüssel gefüllt, falls möglich. Ansonsten wird y mit einem Nachbarn verschmolzen. 15 . Durch das Verschieben/Verschmelzen hat der Knoten, aus dem k . 21 24 . gelöscht wird, mindestens t Schlüssel, nach dem Löschen also mindestens t − 1. Liegt k in einem Blatt, wird der Schlüssel k direkt entfernt. Andernfalls, suche den grössten Schlüssel k 0 im linken (oder kleinsten, ....................... im rechten) zum Schlüssel gehörigen Teilbaum. Dann ersetze k durch 22 . . ............... 0 0 0 k und lösche k . Anmerkung: k muss in einem Blatt liegen. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 09. Januar 2014 13 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE) Verschieben eines Schlüssels ADS 1, V10 15 18 . 09. Januar 2014 15 / 21 10 18 27 24 . 8 . . . 15 . . ....................... 2 4 7 22 . P.F. Stadler & S. Will (Bioinf, Uni LE) 14 / 21 Verschmelzen zweier Knoten 10 21 27 ....................... 09. Januar 2014 . ............... ADS 1, V10 09. Januar 2014 14 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE) Verschmelzen zweier Knoten ADS 1, V10 Höhe von B-Bäumen Betrachte B-Baum der Höhe h mit minimalem Verzweigungsgrad t . 1 Knoten auf Stufe 0, mind. 2 Knoten auf Stufe 1 mindestens 2t 18 27 . i −1 Knoten auf Stufe i Gesamtzahl Knoten ist mindestens 1 8 10 15 h −1 X i =2 t i −1 führt zu oberer Schranke für Höhe: h 2 4 7 +2+2 ≥2 ....................... ⇒ ≤ 1 + logt n +1 2 Höhe wächst logarithmisch mit Zahl der Schlüssel Im Vergleich zum Binärbaum kann Höhe deutlich reduziert werden durch groÿe Werte von t (Seitengröÿe). Beispiel: t = 1024 reduziert Höhe um Faktor 10 im Vergleich mit Binärbaum. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 09. Januar 2014 15 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE) Variante: B -Bäume ADS 1, V10 09. Januar 2014 16 / 21 B -Bäume: Beispiel ∗ ∗ Hauptunterschied zu B-Baum: in inneren Knoten wird nur die WegweiserFunktion ausgenutzt innere Knoten führen nur Information (Ki , Di ) (Ki , Pi ) 42 als Einträge wird in den Blattknoten abgelegt. Dabei werden alle Schlüssel mit ihren zugehörigen Daten in Sortierreihenfolge in den 24 34 49 77 Blättern abgelegt. für einige Ki ergibt sich eine redundante Speicherung. Die inneren Knoten bilden also einen Index, der einen schnellen direkten Zugri zu den Schlüsseln gestattet. Der Verzweigungsgrad erhöht sich beträchtlich, was wiederum die Höhe des Baumes reduziert 7 14 24 31 32 33 34 37 42 46 49 53 77 81 85 Durch Verkettung aller Blattknoten lässt sich eine eziente sequentielle Verarbeitung erreichen, die beim B-Baum einen umständlichen Durchlauf in symmetrischer Ordnung erforderte P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 09. Januar 2014 17 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 09. Januar 2014 18 / 21 Digitale Suchbäume I Digitale Suchbäume II Prinzip digitaler Suchbäume (kurz: Digitalbäume): Zerlegung des Schlüssels - bestehend aus Zeichen eines Alphabets - in Teile Was sind Schlüsselteile ? Schlüsselteile können gebildet werden durch Elemente (Bits, Ziern, Aufbau des Baumes nach Schlüsselteilen Zeichen) eines Alphabets oder durch Zusammenfassungen dieser Suche im Baum durch Vergleich von Schlüsselteilen Grundelemente (z. B. Silben der Länge k ) jede unterschiedliche Folge von Teilschlüsseln ergibt eigenen Suchweg Höhe des Baumes = im Baum Schlüsselteillänge ist l k + 1, wenn l die max. Schlüssellänge und k die alle Schlüssel mit dem gleichen Präx haben in der Länge des Präxes den gleichen Suchweg P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 09. Januar 2014 19 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE) 09. Januar 2014 21 / 21 Digitale Suchbäume: Beispiel P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 1, V10 ADS 1, V10 09. Januar 2014 20 / 21